Hi Francesco, Looks good except for one thing in the AbstractEdm class:
Calling the getUnboundFunction(...) method delivers one unbound function which gets added to the unboundFunctionsByName HashMap. If I now call getUnboundFunctions() I will only get the list which has been filled with the one function I previously fetched. If I call getUnboundFunctions and then getUnboundFunction(...) this issue is not present since both maps have been correctly filled. I would either disable the caching by name for querying a single function or I would introduce a loaded flag which gets only set after all unbound functions have been loaded. WDYT? Best regards, Christian -----Original Message----- From: Francesco Chicchiriccò [mailto:[email protected]] Sent: Montag, 7. April 2014 13:23 To: [email protected] Subject: Re: [DISCUSS] EdmEntityContainer: getActionImport(String) / getFunctionImport(String) Hi, I have updated OLINGO-202's description according to the discussion below and just pushed the olingo202 branch with OLINGO-202 implementation: please let me know if this is fine and can be merged to master. Regards. On 07/04/2014 12:36, Amend, Christian wrote: > Hi, > > 1. Yes > 2. Yes > 3. Yes :) > > As for getFunctionFQN: I needed this method during the metadata serialization > since I do not have any parameters and thus could not call the method. So for > now I would leave it there. Overloading is based on Parameters while the name > stays the same. > > Best Regards, > Christian > > -----Original Message----- > From: Francesco Chicchiriccò [mailto:[email protected]] > Sent: Montag, 7. April 2014 11:36 > To: [email protected] > Subject: Re: [DISCUSS] EdmEntityContainer: getActionImport(String) / > getFunctionImport(String) > > Hi, > as suggested by Ralf, since "Unbound actions currently cannot have > overloads", I will perform the following changes: > > 1. in EdmActionImport > > REMOVE getBoundAction(...) > > 2. in EdmFunctionImport > > REMOVE getBoundFunction(...) > > ADD List<EdmFunction> getUnboundFunctions() > > > OLINGO-202 description says instead "Introduce the getActions and > getFunctions method which will deliver all UNBOUND actions and functions > with the specified name" which would suggest to also > > ADD List<EdmAction> getUnboundActions() > > in EdmActionImport > > > Correct? > > What about EdmFunctionImport's > > FullQualifiedName getFunctionFqn() > > ? > > Regards. > > On 07/04/2014 10:43, Francesco Chicchiriccò wrote: >> On 07/04/2014 10:34, Amend, Christian wrote: >>> Yes this is ok for me. >>> >>> Why don`t you open a new branch make the interfaces and client side >>> and I will then look at the server side. >>> You can use this Jira issue as a reference: >>> https://issues.apache.org/jira/browse/OLINGO-202 >> Fine; I have also linked OLINGO-234 to OLINGO-202. >> >> Regards. >> >>> -----Original Message----- >>> From: Francesco Chicchiriccò [mailto:[email protected]] >>> Sent: Montag, 7. April 2014 10:31 >>> To: [email protected] >>> Subject: Re: [DISCUSS] EdmEntityContainer: getActionImport(String) / >>> getFunctionImport(String) >>> >>> On 07/04/2014 10:28, Amend, Christian wrote: >>>> Hi Ralf, >>>> >>>> thank you very much for the clarification! >>>> >>>> @ Francesco: >>>> This means for us: >>>> 1. Delete the get boundFunction and getBoundAction method. >>>> 2. Maybe introduce a getActions method which delivers all unbound >>>> Actions for this this name. Same goes fur Functions. >>> I can do both things straight away, if this is fine for you (I would >>> possibly need some guidance for server-side implementation). >>> >>> Regards. >>> >>>> -----Original Message----- >>>> From: Handl, Ralf [mailto:[email protected]] >>>> Sent: Montag, 7. April 2014 10:24 >>>> To: [email protected] >>>> Subject: RE: [DISCUSS] EdmEntityContainer: getActionImport(String) / >>>> getFunctionImport(String) >>>> >>>> Hi Christian and Francesco, >>>> >>>> There's no way to import a single function overload, the >>>> FunctionImport element imports all overloads into the entity >>>> container. It also only allows importing unbound function overloads, >>>> see >>>> http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Toc372794000. >>>> >>>> The ActionImport element also only imports an unbound action. >>>> Unbound actions currently cannot have overloads, because overloads >>>> must have the same binding parameter, and unbound actions don't have >>>> one, see >>>> http://docs.oasis-open.org/odata/odata/v4.0/os/part3-csdl/odata-v4.0-os-part3-csdl.html#_Toc372793963. >>>> >>>> Thanks! >>>> --Ralf >>>> >>>> -----Original Message----- >>>> From: Amend, Christian [mailto:[email protected]] >>>> Sent: Monday, 7. April 2014 10:13 >>>> To: [email protected] >>>> Subject: FW: [DISCUSS] EdmEntityContainer: getActionImport(String) / >>>> getFunctionImport(String) >>>> >>>> Hi Francesco, >>>> >>>> I have forwarded this message to the dev list :) >>>> >>>> ActionImports and FunctionImports have an operation specified by >>>> FullQualified Name. The Overloading happens based on Parameters when >>>> they are called. So giving back a list of ActionImports would not >>>> make sense but rather adding a method at the ActionImport like this >>>> List<EdmAction> getActions(). This way a client can decide which >>>> Action he wants to invoke. Same goes for FunctionImport. >>>> >>>> As far as I know there is no way to bind a single Action directly to >>>> an ActionImport again same goes for Functions and FunctionImports. >>>> >>>> As for the methods getBoundAction/getUnbound at the ActionImport I >>>> have to look into this. As far as I know only unbound Actions can >>>> serve for an Action Import. I don`t know who introduced this >>>> methods. For Functions I will have to look into this as well. >>>> >>>> Best Regards, >>>> Christian >>>> >>>> -----Original Message----- >>>> From: Francesco Chicchiriccò [mailto:[email protected]] >>>> Sent: Montag, 7. April 2014 09:42 >>>> To: [email protected] >>>> Subject: Re: [DISCUSS] EdmEntityContainer: getActionImport(String) / >>>> getFunctionImport(String) >>>> >>>> On 07/04/2014 09:24, Francesco Chicchiriccò wrote: >>>>> Hi all, >>>>> as part of OLINGO-234 I am now considering some scenarios where action >>>>> and / or functions are overloaded. >>>>> >>>>> I have just noticed that the EdmEntityContainer container has the >>>>> following two methods: >>>>> >>>>> EdmActionImport getActionImport(String name); >>>>> EdmFunctionImport getFunctionImport(String name); >>>>> >>>>> I would have expected, though, something like as >>>>> >>>>> List<EdmActionImport> getActionImport(String name); >>>>> List<EdmFunctionImport> getFunctionImport(String name); >>>>> >>>>> >>>>> Am I wrong? >>>> I have also just noticed that both EdmActionImport and >>>> EdmFunctionImport >>>> have methods like as getUnboundFunction() / getUnboundAction() - >>>> getBoundFunction() / getBoundAction() (they actually used to have plain >>>> getAction() / getFunction()): this suggests that from a single >>>> ActionImport / FunctionImport one can get to all actions / functions >>>> with given name. >>>> >>>> Isn't there a way to bound an ActionImport / FunctionImport to a single >>>> Action / Function? -- Francesco Chicchiriccò Tirasa - Open Source Excellence http://www.tirasa.net/ Involved at The Apache Software Foundation: member, Syncope PMC chair, Cocoon PMC, Olingo PMC http://people.apache.org/~ilgrosso/
