Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-6716

ServiceInterfaceStrategy fails to create with interface containing multiple methods without parameters

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.12.0
    • 2.12.4, 2.13.2, 2.14.0
    • camel-soap
    • None
    • Novice

    Description

      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

      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    }
      

      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.

      Attachments

        Activity

          People

            njiang Willem Jiang
            c0stra Ondrej Fischer
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: