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 2012/09/25 13:20:48 UTC
svn commit: r1389808 - in /cxf/branches/2.6.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ rt...
Author: sergeyb
Date: Tue Sep 25 11:20:47 2012
New Revision: 1389808
URL: http://svn.apache.org/viewvc?rev=1389808&view=rev
Log:
Merged revisions 1389791-1389792 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1389791 | sergeyb | 2012-09-25 11:58:08 +0100 (Tue, 25 Sep 2012) | 1 line
[CXF-4519] Adding an option to set type-specific schemas on JAXB providers
........
r1389792 | sergeyb | 2012-09-25 11:58:45 +0100 (Tue, 25 Sep 2012) | 1 line
[CXF-4519] Adding an option to set type-specific schemas on JAXB providers, one more commit
........
Modified:
cxf/branches/2.6.x-fixes/ (props changed)
cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java
cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/beans.xml
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1389791-1389792
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java?rev=1389808&r1=1389807&r2=1389808&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java Tue Sep 25 11:20:47 2012
@@ -111,8 +111,11 @@ public abstract class AbstractJAXBProvid
private Map<Class<?>, JAXBContext> classContexts = new HashMap<Class<?>, JAXBContext>();
private MessageContext mc;
+
private Schema schema;
private String catalogLocation;
+ private Map<String, SchemaHandler> schemaHandlers;
+
private String collectionWrapperName;
private Map<String, String> collectionWrapperMap;
private List<String> jaxbElementClassNames = Collections.emptyList();
@@ -370,6 +373,11 @@ public abstract class AbstractJAXBProvid
return unmarshalAsJaxbElement && type != Response.class;
}
+ @Deprecated
+ public void setSchemas(List<String> locations) {
+ setSchemaLocations(locations);
+ }
+
public void setSchemaLocations(List<String> locations) {
schema = SchemaHandler.createSchema(locations, catalogLocation, getBus());
}
@@ -378,7 +386,15 @@ public abstract class AbstractJAXBProvid
this.catalogLocation = name;
}
- public void setSchema(Schema s) {
+ public void setSchemaHandler(SchemaHandler handler) {
+ setSchema(handler.getSchema());
+ }
+
+ public void setSchemaHandlers(Map<String, SchemaHandler> handlers) {
+ schemaHandlers = handlers;
+ }
+
+ protected void setSchema(Schema s) {
schema = s;
}
@@ -490,8 +506,9 @@ public abstract class AbstractJAXBProvid
JAXBContext context = isCollection ? getCollectionContext(cls)
: getJAXBContext(cls, genericType);
Unmarshaller unmarshaller = context.createUnmarshaller();
- if (schema != null) {
- unmarshaller.setSchema(schema);
+ Schema theSchema = getSchema(cls);
+ if (theSchema != null) {
+ unmarshaller.setSchema(theSchema);
}
if (eventHandler != null) {
unmarshaller.setEventHandler(eventHandler);
@@ -521,18 +538,21 @@ public abstract class AbstractJAXBProvid
if (marshallerListener != null) {
marshaller.setListener(marshallerListener);
}
- validateObjectIfNeeded(marshaller, obj);
+ validateObjectIfNeeded(marshaller, cls, obj);
return marshaller;
}
- protected void validateObjectIfNeeded(Marshaller marshaller, Object obj)
+ protected void validateObjectIfNeeded(Marshaller marshaller, Class<?> cls, Object obj)
throws JAXBException {
- if (validateOutput && schema != null) {
- marshaller.setEventHandler(eventHandler);
- marshaller.setSchema(schema);
- if (validateBeforeWrite) {
- marshaller.marshal(obj, new DefaultHandler());
- marshaller.setSchema(null);
+ if (validateOutput) {
+ Schema theSchema = getSchema(cls);
+ if (theSchema != null) {
+ marshaller.setEventHandler(eventHandler);
+ marshaller.setSchema(theSchema);
+ if (validateBeforeWrite) {
+ marshaller.marshal(obj, new DefaultHandler());
+ marshaller.setSchema(null);
+ }
}
}
}
@@ -556,7 +576,21 @@ public abstract class AbstractJAXBProvid
}
protected Schema getSchema() {
- return schema;
+ return getSchema(null);
+ }
+
+ protected Schema getSchema(Class<?> cls) {
+ // deal with the typical default case first
+ if (schema == null && schemaHandlers == null) {
+ return null;
+ }
+
+ if (schema != null) {
+ return schema;
+ } else {
+ SchemaHandler handler = schemaHandlers.get(cls.getName());
+ return handler != null ? handler.getSchema() : null;
+ }
}
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=1389808&r1=1389807&r2=1389808&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java Tue Sep 25 11:20:47 2012
@@ -66,7 +66,6 @@ import org.apache.cxf.jaxrs.utils.Annota
import org.apache.cxf.jaxrs.utils.HttpUtils;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
import org.apache.cxf.jaxrs.utils.JAXBUtils;
-import org.apache.cxf.jaxrs.utils.schemas.SchemaHandler;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Message;
import org.apache.cxf.staxutils.DepthExceededStaxException;
@@ -131,14 +130,6 @@ public class JAXBElementProvider<T> exte
super.setProduceMediaTypes(types);
}
- public void setSchemas(List<String> locations) {
- super.setSchemaLocations(locations);
- }
-
- public void setSchemaHandler(SchemaHandler handler) {
- super.setSchema(handler.getSchema());
- }
-
public void setMarshallerProperties(Map<String, Object> marshallProperties) {
mProperties = marshallProperties;
}
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=1389808&r1=1389807&r2=1389808&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Tue Sep 25 11:20:47 2012
@@ -847,12 +847,12 @@ public final class ProviderFactory {
public void setSchemaLocations(List<String> schemas) {
boolean schemasMethodAvailable = false;
for (ProviderInfo<MessageBodyReader<?>> r : messageReaders) {
- schemasMethodAvailable = injectProviderProperty(r.getProvider(), "setSchemas",
+ schemasMethodAvailable = injectProviderProperty(r.getProvider(), "setSchemaLocations",
List.class, schemas);
}
if (!schemasMethodAvailable) {
for (ProviderInfo<MessageBodyReader<?>> r : jaxbReaders) {
- schemasMethodAvailable = injectProviderProperty(r.getProvider(), "setSchemas",
+ schemasMethodAvailable = injectProviderProperty(r.getProvider(), "setSchemaLocations",
List.class, schemas);
}
}
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java?rev=1389808&r1=1389807&r2=1389808&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java Tue Sep 25 11:20:47 2012
@@ -63,7 +63,12 @@ public class SchemaHandler {
bus = b;
}
+ @Deprecated
public void setSchemas(List<String> locations) {
+ setSchemaLocations(locations);
+ }
+
+ public void setSchemaLocations(List<String> locations) {
schema = createSchema(locations, catalogLocation,
bus == null ? BusFactory.getThreadDefaultBus() : bus);
}
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java?rev=1389808&r1=1389807&r2=1389808&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java Tue Sep 25 11:20:47 2012
@@ -1169,7 +1169,7 @@ public class JAXBElementProviderTest ext
JAXBElementProvider<?> provider = new JAXBElementProvider<Object>();
List<String> locations = new ArrayList<String>();
locations.add("classpath:/test.xsd");
- provider.setSchemas(locations);
+ provider.setSchemaLocations(locations);
Schema s = provider.getSchema();
assertNotNull("schema can not be read from classpath", s);
}
@@ -1181,7 +1181,7 @@ public class JAXBElementProviderTest ext
String loc = getClass().getClassLoader().getResource("test.xsd").toURI().getPath();
locations.add("file:" + loc);
- provider.setSchemas(locations);
+ provider.setSchemaLocations(locations);
Schema s = provider.getSchema();
assertNotNull("schema can not be read from disk", s);
}
@@ -1192,7 +1192,7 @@ public class JAXBElementProviderTest ext
List<String> locations = new ArrayList<String>();
String loc = getClass().getClassLoader().getResource("book1.xsd").toURI().getPath();
locations.add(loc);
- provider.setSchemas(locations);
+ provider.setSchemaLocations(locations);
Schema s = provider.getSchema();
assertNotNull("schema can not be read from disk", s);
@@ -1214,7 +1214,7 @@ public class JAXBElementProviderTest ext
List<String> locations = new ArrayList<String>();
String loc = getClass().getClassLoader().getResource("test.xsd").toURI().getPath();
locations.add("file:" + loc);
- provider.setSchemas(locations);
+ provider.setSchemaLocations(locations);
Schema s = provider.getSchema();
assertNotNull("schema can not be read from disk", s);
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java?rev=1389808&r1=1389807&r2=1389808&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java Tue Sep 25 11:20:47 2012
@@ -68,7 +68,6 @@ import org.apache.cxf.jaxrs.utils.Annota
import org.apache.cxf.jaxrs.utils.HttpUtils;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
import org.apache.cxf.jaxrs.utils.JAXBUtils;
-import org.apache.cxf.jaxrs.utils.schemas.SchemaHandler;
import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.staxutils.StaxUtils;
import org.apache.cxf.staxutils.W3CDOMStreamWriter;
@@ -174,14 +173,6 @@ public class JSONProvider<T> extends Abs
super.setProduceMediaTypes(types);
}
- public void setSchemas(List<String> locations) {
- super.setSchemaLocations(locations);
- }
-
- public void setSchemaHandler(SchemaHandler handler) {
- super.setSchema(handler.getSchema());
- }
-
public void setSerializeAsArray(boolean asArray) {
this.serializeAsArray = asArray;
}
Modified: cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/beans.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/beans.xml?rev=1389808&r1=1389807&r2=1389808&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/beans.xml (original)
+++ cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/beans.xml Tue Sep 25 11:20:47 2012
@@ -265,7 +265,7 @@ http://cxf.apache.org/schemas/core.xsd">
</bean>
<bean id="schemaHolder" class="org.apache.cxf.jaxrs.utils.schemas.SchemaHandler">
- <property name="schemas" ref="theSchemas"/>
+ <property name="schemaLocations" ref="theSchemas"/>
</bean>
<util:list id="theSchemas">