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/10/18 20:34:41 UTC
svn commit: r1533584 - in /cxf/branches/2.7.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
Author: sergeyb
Date: Fri Oct 18 18:34:41 2013
New Revision: 1533584
URL: http://svn.apache.org/r1533584
Log:
Merged revisions 1533582 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1533582 | sergeyb | 2013-10-18 19:26:01 +0100 (Fri, 18 Oct 2013) | 1 line
[CXF-5342] Making it possible to pass relative XSI locations
........
Modified:
cxf/branches/2.7.x-fixes/ (props changed)
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1533582
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java?rev=1533584&r1=1533583&r2=1533584&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java Fri Oct 18 18:34:41 2013
@@ -31,9 +31,17 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
public @interface XSISchemaLocation {
/**
- * schema location relative to a base URI of the web application
+ * Schema location
+ * By default it is assumed to be relative to a base URI of the web application
*/
String value();
+
+ /**
+ * If the location is relative and this property is set to true then
+ * the location will be resolved against the base URI of the web application
+ */
+ boolean resolve() default true;
+
/**
* Can be used to get xsi:noNamespaceSchemaLocation produced.
* By default, xsi:schemaLocation will be set.
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=1533584&r1=1533583&r2=1533584&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java Fri Oct 18 18:34:41 2013
@@ -433,7 +433,7 @@ public class JAXBElementProvider<T> exte
if (relRef.endsWith("'")) {
relRef = relRef.substring(0, relRef.length() - 1);
}
- String absRef = buildAbsoluteXMLResourceURI(relRef);
+ String absRef = resolveXMLResourceURI(relRef);
value = value.substring(0, ind + 6) + absRef + "'?>";
}
setXmlPiProperty(ms, value);
@@ -443,14 +443,14 @@ public class JAXBElementProvider<T> exte
private void addSchemaLocation(Marshaller ms, Annotation[] anns) throws Exception {
XSISchemaLocation sl = AnnotationUtils.getAnnotation(anns, XSISchemaLocation.class);
if (sl != null) {
- String value = buildAbsoluteXMLResourceURI(sl.value());
+ String value = sl.resolve() ? resolveXMLResourceURI(sl.value()) : sl.value();
String propName = !sl.noNamespace()
? Marshaller.JAXB_SCHEMA_LOCATION : Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION;
ms.setProperty(propName, value);
}
}
- private String buildAbsoluteXMLResourceURI(String path) {
+ protected String resolveXMLResourceURI(String path) {
MessageContext mc = getContext();
if (mc != null) {
String httpBasePath = (String)mc.get("http.base.path");