Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.12.0
-
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.