You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/11/06 23:17:59 UTC
svn commit: r1539481 - in
/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider:
ProviderFactory.java XSLTJaxbProvider.java
Author: sergeyb
Date: Wed Nov 6 22:17:58 2013
New Revision: 1539481
URL: http://svn.apache.org/r1539481
Log:
Minor update to XSLTJaxbProvider
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=1539481&r1=1539480&r2=1539481&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Wed Nov 6 22:17:58 2013
@@ -1226,7 +1226,9 @@ public abstract class ProviderFactory {
public MessageBodyWriter<?> getRegisteredJaxbWriter() {
for (ProviderInfo<MessageBodyWriter<?>> pi : this.messageWriters) {
- if (pi.getProvider().getClass().getName().equals(JAXB_PROVIDER_NAME)) {
+ Class<?> cls = pi.getProvider().getClass();
+ if (cls.getName().equals(JAXB_PROVIDER_NAME)
+ || cls.getSuperclass().getName().equals(JAXB_PROVIDER_NAME)) {
return pi.getProvider();
}
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java?rev=1539481&r1=1539480&r2=1539481&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java Wed Nov 6 22:17:58 2013
@@ -104,16 +104,17 @@ public class XSLTJaxbProvider<T> extends
@Override
public boolean isReadable(Class<?> type, Type genericType, Annotation[] anns, MediaType mt) {
- if (InjectionUtils.isSupportedCollectionOrArray(type)) {
- return false;
- }
- // JAXB support is required
if (!super.isReadable(type, genericType, anns, mt)) {
return false;
}
+
+ if (InjectionUtils.isSupportedCollectionOrArray(type)) {
+ return supportJaxbOnly;
+ }
+
// if the user has set the list of in classes and a given class
// is in that list then it can only be handled by the template
- if (inClassCanBeHandled(type.getName())) {
+ if (inClassCanBeHandled(type.getName()) || inClassesToHandle == null && !supportJaxbOnly) {
return inTemplatesAvailable(mt);
} else {
return supportJaxbOnly;
@@ -122,16 +123,17 @@ public class XSLTJaxbProvider<T> extends
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] anns, MediaType mt) {
- if (InjectionUtils.isSupportedCollectionOrArray(type)) {
- return false;
- }
// JAXB support is required
- if (!super.isReadable(type, genericType, anns, mt)) {
+ if (!super.isWriteable(type, genericType, anns, mt)) {
return false;
}
+ if (InjectionUtils.isSupportedCollectionOrArray(type)) {
+ return supportJaxbOnly;
+ }
+
// if the user has set the list of out classes and a given class
// is in that list then it can only be handled by the template
- if (outClassCanBeHandled(type.getName())) {
+ if (outClassCanBeHandled(type.getName()) || outClassesToHandle == null && !supportJaxbOnly) {
return outTemplatesAvailable(mt);
} else {
return supportJaxbOnly;
@@ -191,7 +193,7 @@ public class XSLTJaxbProvider<T> extends
private void trySettingProperties(Object filter, TemplatesImpl ti) {
try {
//Saxon doesn't allow creating a Filter or Handler from anything other than it's original
- //Templates. That then requires setting the paramaters after the fact, but there
+ //Templates. That then requires setting the parameters after the fact, but there
//isn't a standard API for that, so we have to grab the Transformer via reflection to
//set the parameters.
Transformer tr = (Transformer)filter.getClass().getMethod("getTransformer").invoke(filter);
@@ -322,7 +324,7 @@ public class XSLTJaxbProvider<T> extends
}
public boolean inClassCanBeHandled(String className) {
- return inClassesToHandle == null || inClassesToHandle.contains(className);
+ return inClassesToHandle != null && inClassesToHandle.contains(className);
}
public void setOutClassNames(List<String> classNames) {
@@ -330,7 +332,7 @@ public class XSLTJaxbProvider<T> extends
}
public boolean outClassCanBeHandled(String className) {
- return outClassesToHandle == null || outClassesToHandle.contains(className);
+ return outClassesToHandle != null && outClassesToHandle.contains(className);
}
protected Templates createTemplates(Templates templates,