From: <jbo...@li...> - 2006-07-04 10:54:13
|
Author: tho...@jb... Date: 2006-07-04 06:54:07 -0400 (Tue, 04 Jul 2006) New Revision: 548 Modified: trunk/src/main/java/org/jboss/ws/metadata/OperationMetaData.java Log: fix unsynchronized method due to type registration ordering Modified: trunk/src/main/java/org/jboss/ws/metadata/OperationMetaData.java =================================================================== --- trunk/src/main/java/org/jboss/ws/metadata/OperationMetaData.java 2006-07-04 09:54:05 UTC (rev 547) +++ trunk/src/main/java/org/jboss/ws/metadata/OperationMetaData.java 2006-07-04 10:54:07 UTC (rev 548) @@ -35,6 +35,7 @@ import org.jboss.ws.jaxrpc.ParameterStyle; import org.jboss.ws.jaxrpc.ParameterWrapping; import org.jboss.ws.jaxrpc.Style; +import org.jboss.ws.jaxrpc.TypeMappingImpl; import org.jboss.ws.jaxrpc.Use; import org.jboss.ws.utils.HolderUtils; import org.jboss.ws.utils.JavaUtils; @@ -247,9 +248,11 @@ if (pass == false) log.trace("Unmatched parameter count: " + parameters.size() + "!=" + methodTypes.length); + TypeMappingImpl typeMapping = epMetaData.getServiceMetaData().getTypeMapping(); for (int i = 0; pass && i < methodTypes.length; i++) { ParameterMetaData paramMetaData = parameters.get(i); + QName xmlType = paramMetaData.getXmlType(); Class methodType = methodTypes[i]; if (paramMetaData.getMode() != ParameterMode.IN) @@ -273,8 +276,15 @@ } else { + String javaTypeName = methodType.getName(); Class paramType = paramMetaData.getJavaType(); pass = JavaUtils.isAssignableFrom(methodType, paramType); + if (pass == false && typeMapping.isRegistered(methodType, xmlType)) + { + log.debug("Adjust parameter type from " + paramType.getName() + " to " + javaTypeName); + paramMetaData.setJavaTypeName(javaTypeName); + pass = true; + } } String name = (matchByTypeName) ? paramMetaData.getJavaTypeName() : paramMetaData.getJavaType().getName(); |