Ondrej Fischer created CAMEL-6716:
-------------------------------------

             Summary: ServiceInterfaceStrategy fails to create with interface 
containing multiple methods without parameters
                 Key: CAMEL-6716
                 URL: https://issues.apache.org/jira/browse/CAMEL-6716
             Project: Camel
          Issue Type: Bug
          Components: camel-soap
    Affects Versions: 2.12.0
            Reporter: Ondrej Fischer
            Priority: Blocker


I you attempt to create a ServiceInterfaceStrategy with interface containing 
multiple methods without parameters, you get NullPointerException.

It's due to following code:
ServiceInterfaceStrategy.java:161
{code}
155    private void analyzeServiceInterface(Class<?> serviceInterface) {
156        Method[] methods = serviceInterface.getMethods();
157        for (Method method : methods) {
158            MethodInfo info = analyzeMethod(method);
159            for (int i = 0; i < info.getIn().length; i++) {
160                TypeInfo ti = info.getIn()[i];
161                if (inTypeNameToQName.containsKey(ti.getTypeName())
162                    && (!(ti.getTypeName().equals("javax.xml.ws.Holder")))
163                    && 
(!(inTypeNameToQName.get(ti.getTypeName()).equals(ti.getElName())))) {
164                    LOG.warn("Ambiguous QName mapping. The type [ "
165                                                    + ti.getTypeName()
166                                                    + " ] is already mapped 
to a QName in this context.");
167                    continue;
168                }
169                inTypeNameToQName.put(ti.getTypeName(), ti.getElName());
170            }
171            if (info.getSoapAction() != null && 
!"".equals172(info.getSoapAction())) {
172                soapActionToMethodInfo.put(info.getSoapAction(), info);
173            }
174
175            outTypeNameToQName.put(info.getOut().getTypeName(), 
info.getOut().getElName());
176
177            addExceptions(method);
178        }
179    }
{code}

For the second method without parameters, the null value is already in the 
inTypeNameToQName, so it tries to evaluate this: 
!(ti.getTypeName().equals("javax.xml.ws.Holder"), which fails with NPE.

The question here is, why method without parameters still needs an array of 
types containing one element with those null values.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to