You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by em...@apache.org on 2013/01/18 07:03:23 UTC
svn commit: r1435034 -
/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
Author: ema
Date: Fri Jan 18 06:03:23 2013
New Revision: 1435034
URL: http://svn.apache.org/viewvc?rev=1435034&view=rev
Log:
CXF-4735:@XmlJavaTypeAdapter ignored on exception setters(Patch from Richard)
Modified:
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
Modified: cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java?rev=1435034&r1=1435033&r2=1435034&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java (original)
+++ cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Utils.java Fri Jan 18 06:03:23 2013
@@ -148,22 +148,25 @@ final class Utils {
}
private static boolean isGetter(Method m) {
- Class<?> declaringClass = m.getDeclaringClass();
- if (m.getReturnType() != Void.class && m.getParameterTypes().length == 0) {
- final int index = getterIndex(m.getName());
- if (index != -1) {
- String setterName = "set" + m.getName().substring(index);
- Class<?> paramTypes = m.getReturnType();
- Method setter = getDeclaredMethod(declaringClass, setterName, paramTypes);
-
- if (setter != null && setter.isAnnotationPresent(XmlTransient.class)) {
- return false;
- }
- return true;
+ if (m.getReturnType() != Void.class && m.getReturnType() != Void.TYPE && m.getParameterTypes().length == 0) {
+ Method setter = getSetter(m);
+ if (setter != null) {
+ return !setter.isAnnotationPresent(XmlTransient.class);
}
+ return true;
}
return false;
}
+
+ private static Method getSetter(Method m) {
+ final int index = getterIndex(m.getName());
+ if (index != -1) {
+ String setterName = "set" + m.getName().substring(index);
+ Class<?> paramTypes = m.getReturnType();
+ return getDeclaredMethod(m.getDeclaringClass(), setterName, paramTypes);
+ }
+ return null;
+ }
private static boolean isSetter(Method m) {
Class<?> declaringClass = m.getDeclaringClass();
@@ -266,6 +269,12 @@ final class Utils {
static XmlJavaTypeAdapter getMethodXJTA(final Method m) {
XmlJavaTypeAdapter adapter = m.getAnnotation(XmlJavaTypeAdapter.class);
if (adapter == null) {
+ Method setter = getSetter(m);
+ if (setter != null) {
+ adapter = setter.getAnnotation(XmlJavaTypeAdapter.class);
+ }
+ }
+ if (adapter == null) {
adapter = m.getReturnType().getAnnotation(XmlJavaTypeAdapter.class);
}
if (adapter == null) {
@@ -281,7 +290,7 @@ final class Utils {
}
return adapter;
}
-
+
static Type getTypeFromXmlAdapter(XmlJavaTypeAdapter xjta) {
if (xjta != null) {
Class<?> c2 = xjta.value();