private void readFunctionImport(XMLEventReader reader, StartElement element, CsdlEntityContainer container) throws XMLStreamException { CsdlFunctionImport functionImport = new CsdlFunctionImport(); functionImport.setName(attr(element, "Name")); functionImport.setFunction(new FullQualifiedName(attr(element, "Function"))); functionImport.setIncludeInServiceDocument(Boolean.parseBoolean(attr(element, "IncludeInServiceDocument"))); String entitySet = attr(element, "EntitySet"); if (entitySet != null) { functionImport.setEntitySet(entitySet); } peekAnnotations(reader, "FunctionImport", functionImport); container.getFunctionImports().add(functionImport); }
@Override public FullQualifiedName getFunctionFqn() { return functionImport.getFunctionFQN(); }
@Override public String getTitle() { return functionImport.getTitle(); } }
CsdlFunctionImport functionImport = new CsdlFunctionImport(); functionImport.setName(proc.getName()).setFunction(new FullQualifiedName(schemaName, proc.getName())); addOperationAnnotations(proc, edmFunction, csdlSchema); functions.add(edmFunction);
private void addAnnotations(CsdlFunctionImport functionImport, FullQualifiedName entityContainerName) { List<CsdlSchema> termSchemaDefinition = ((EdmProviderImpl)edm).getTermSchemaDefinitions(); for (CsdlSchema schema : termSchemaDefinition) { List<CsdlAnnotations> annotationGrps = schema.getAnnotationGroups(); for (CsdlAnnotations annotationGrp : annotationGrps) { if (annotationGrp.getTarget(). equalsIgnoreCase(entityContainerName + "/" + functionImport.getName())) { for (CsdlAnnotation annotation : annotationGrp.getAnnotations()) { if (!compareAnnotations(functionImport.getAnnotations(), annotation)) { functionImport.getAnnotations().add(annotation); } } break; } } } }
@Override public CsdlFunctionImport getFunctionImport(FullQualifiedName fqn, String functionImportName) throws ODataException { CsdlSchema schema = getSchema(fqn.getNamespace()); if (schema != null) { CsdlEntityContainer ec = schema.getEntityContainer(); if (ec != null && ec.getFunctionImports() != null) { for (CsdlFunctionImport es : ec.getFunctionImports()) { if (es.getName().equals(functionImportName)) { return es; } } } } return null; }
void addFunctionImportAsProcedure(MetadataFactory mf, CsdlFunctionImport functionImport, ODataType odataType, XMLMetadata metadata) throws TranslatorException { List<CsdlFunction> functions = getFunctions(metadata, functionImport.getFunction()); for (CsdlFunction function : functions) { Procedure procedure = mf.addProcedure(function.getName()); addOperation(mf, metadata, odataType, function, procedure); } }
@Override public CsdlFunctionImport getFunctionImport(FullQualifiedName fqn, String functionImportName) throws ODataException { CsdlSchema schema = getSchema(fqn.getNamespace()); if (schema != null) { CsdlEntityContainer ec = schema.getEntityContainer(); if (ec != null && ec.getFunctionImports() != null) { for (CsdlFunctionImport es : ec.getFunctionImports()) { if (es.getName().equals(functionImportName)) { return es; } } } } return null; }
private void readFunctionImport(XMLEventReader reader, StartElement element, CsdlEntityContainer container) throws XMLStreamException { CsdlFunctionImport functionImport = new CsdlFunctionImport(); functionImport.setName(attr(element, "Name")); functionImport.setFunction(new FullQualifiedName(attr(element, "Function"))); functionImport.setIncludeInServiceDocument(Boolean.parseBoolean(attr(element, "IncludeInServiceDocument"))); String entitySet = attr(element, "EntitySet"); if (entitySet != null) { functionImport.setEntitySet(entitySet); } peekAnnotations(reader, "FunctionImport", functionImport); container.getFunctionImports().add(functionImport); }
@Override public FullQualifiedName getFunctionFqn() { return functionImport.getFunctionFQN(); }
@Override public String getTitle() { return functionImport.getTitle(); } }
/** * Creates the FunctionImports. Function Imports have to be created for <i>unbound</i> functions. These are functions, * which do not depend on an entity set. E.g. .../MyFunction(). <p> * Details are described in : <a href= * "https://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part3-csdl/odata-v4.0-errata02-os-part3-csdl-complete.html#_Toc406398042" * >OData Version 4.0 Part 3 - 13.6 Element edm:FunctionImport</a> * @param CsdlFunction edmFu */ private CsdlFunctionImport buildFunctionImport(final CsdlFunction edmFu) { final CsdlFunctionImport edmFuImport = new CsdlFunctionImport(); edmFuImport.setName(edmFu.getName()); edmFuImport.setFunction(nameBuilder.buildFQN(edmFu.getName())); edmFuImport.setIncludeInServiceDocument(true); // edmFuImport.setEntitySet(entitySet) return edmFuImport; }
/** * This methods validates csdl function imports. * It checks if function imports are part of correct container and * functions defined for function imports are correct */ private void validateCsdlFunctionImport() { for (Map.Entry<FullQualifiedName, CsdlEntityContainer> container : csdlContainersMap.entrySet()) { for (CsdlFunctionImport functionImport : container.getValue().getFunctionImports()) { FullQualifiedName fqaction = functionImport.getFunctionFQN(); if (!(csdlFunctionsMap.containsKey(fqaction))) { validateCsdlFunctionsWithAlias(fqaction); } } } }
/** * This methods validates csdl function imports. * It checks if function imports are part of correct container and * functions defined for function imports are correct */ private void validateCsdlFunctionImport() { for (Map.Entry<FullQualifiedName, CsdlEntityContainer> container : csdlContainersMap.entrySet()) { for (CsdlFunctionImport functionImport : container.getValue().getFunctionImports()) { FullQualifiedName fqaction = functionImport.getFunctionFQN(); if (!(csdlFunctionsMap.containsKey(fqaction))) { validateCsdlFunctionsWithAlias(fqaction); } } } }