[ 
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)

Reply via email to