[
https://issues.apache.org/jira/browse/OLINGO-410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14229234#comment-14229234
]
Luke Adams commented on OLINGO-410:
-----------------------------------
Using 2.0.1
I think this same situation is in ODataRequestImpl where query parameter order
is changing at allQueryParameters on line 179.
I can open a separate Jira issue if needed.
> Function invocation with parameters using reflection fails due to reordering
> of the parameter list when parsing the metadata
> ----------------------------------------------------------------------------------------------------------------------------
>
> Key: OLINGO-410
> URL: https://issues.apache.org/jira/browse/OLINGO-410
> Project: Olingo
> Issue Type: Bug
> Components: odata2-core
> Affects Versions: V2 2.0.0
> Reporter: Antonis Theocharides
> Assignee: Michael Bolz
> Fix For: V2 2.0.1
>
>
> In order to call a function import method, reflection is used by getting the
> parameter list from the metadata and calling the Class.getMethod(String name,
> Class<?>... parameterTypes).
> The problem occurs in EdmFunctionImportImplProv.
> buildFunctionImportParametersInternal method where a hashtable is used to
> temporarily store the parameter list and then retrieve them from the
> EdmFunctionImportImplProv.getParameterNames function. Using a hashtable to
> store them means that depending on the name of the parameter their order
> might change when retrieved by an iterator. In result. When getParameterNames
> is called and passed into the Class.getMethod method if the order of the
> parameters is wrong an exception is thrown because the signature we are
> looking for does not exist.
> Proposed solution might be
> @Override
> public List<String> getParameterNames() throws EdmException {
> if (parametersList == null) {
> parametersList = new ArrayList<String>();
> if(functionImport.getParameters() != null){
> for (FunctionImportParameter functionImportParameter :
> functionImport.getParameters()) {
> parametersList.add(functionImportParameter.getName());
> }
> }
> }
> return parametersList;
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)