You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/12/08 22:00:46 UTC
svn commit: r888569 -
/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
Author: dkulp
Date: Tue Dec 8 21:00:45 2009
New Revision: 888569
URL: http://svn.apache.org/viewvc?rev=888569&view=rev
Log:
[CXF-2569] Fix an issue trying to determine the ObjectFactory method to
call.
Modified:
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
Modified: cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java?rev=888569&r1=888568&r2=888569&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java (original)
+++ cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java Tue Dec 8 21:00:45 2009
@@ -24,6 +24,8 @@
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -831,11 +833,23 @@
if (setMethod != null
&& JAXBElement.class.isAssignableFrom(setMethod.getParameterTypes()[0])) {
+ Type t = setMethod.getGenericParameterTypes()[0];
+ Class<?> pcls = null;
+ if (t instanceof ParameterizedType) {
+ t = ((ParameterizedType)t).getActualTypeArguments()[0];
+ }
+ if (t instanceof Class) {
+ pcls = (Class)t;
+ }
+
String methodName = "create" + wrapperType.getSimpleName()
+ setMethod.getName().substring(3);
for (Method m : allOFMethods) {
- if (m.getName().equals(methodName)) {
+ if (m.getName().equals(methodName)
+ && m.getParameterTypes().length == 1
+ && (pcls == null
+ || pcls.equals(m.getParameterTypes()[0]))) {
jaxbMethods.add(m);
}
}