[ https://issues.apache.org/jira/browse/OLINGO-651?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Bolz reassigned OLINGO-651: ----------------------------------- Assignee: Michael Bolz > Function Imports feture missing in olingo 2.0.3 > ----------------------------------------------- > > Key: OLINGO-651 > URL: https://issues.apache.org/jira/browse/OLINGO-651 > Project: Olingo > Issue Type: New Feature > Components: odata2-core > Affects Versions: V2 2.0.3 > Environment: olingo 2.0.3 > Reporter: Kiran Kumar Peramareddy > Assignee: Michael Bolz > Labels: FunctionImports > > Present we are implementing a project which uses Olingo 2.0.3 framework. In > this version we found that Function Imports feature is missing.To make this > feature available, we modified the AnnotationEdmProvider class which is > available in the olingo-odata2-annotation-processor-core-2.0.3-sources.jar > Olingo library. > Here are the changes we made to implement the feature. > 1) Created a new class which define the functions. > @EdmEntityType(name="CasmFunctions", namespace="IncidentMgt") > @EdmEntitySet(name="CasmFunctions") > public class CasmFunctions { > @EdmFunctionImport(name = "getIncidentName", returnType = @ReturnType(type = > Type.SIMPLE, isCollection = false),httpMethod = HttpMethod.GET) > public String getIncidentName() { > return "Incident 100"; > } > } > 2) Add a new method in the container builder class > public ContainerBuilder addFunctionImport(final FunctionImport > functionImport) { > functionImports.add(functionImport); > return this; > } > 3) Modified the handleEntityContainer method in AnnotatinEdmProvider class as > follows. > private void handleEntityContainer(final Class<?> aClass) { > String containerName = ANNOTATION_HELPER.extractContainerName(aClass); > ContainerBuilder builder = > containerName2ContainerBuilder.get(containerName); > EdmEntityType entityType = aClass.getAnnotation(EdmEntityType.class); > if (entityType != null) { > FullQualifiedName typeName = createFqnForEntityType(aClass); > > if (builder == null) { > builder = ContainerBuilder.init(typeName.getNamespace(), > containerName); > containerName2ContainerBuilder.put(containerName, builder); > } > EdmEntitySet entitySet = aClass.getAnnotation(EdmEntitySet.class); > if (entitySet != null) { > builder.addEntitySet(createEntitySet(typeName, aClass)); > } > > Method[] entityFunctions = aClass.getMethods(); > for (Method function : entityFunctions) { > EdmFunctionImport funcImp = > function.getAnnotation(EdmFunctionImport.class); > if (funcImp != null) > { > FunctionImport fi = new FunctionImport(); > > fi.setEntitySet(funcImp.entitySet()); > fi.setHttpMethod(funcImp.httpMethod().name()); > fi.setName(funcImp.name()); > builder.addFunctionImport(fi); > } > } > } > } > After the above changes the functions are started available in the odata > metadata document. > Please validate code and suggest us for any improvements on this. -- This message was sent by Atlassian JIRA (v6.3.4#6332)