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 2011/12/06 18:33:17 UTC
svn commit: r1211044 - in /cxf/branches/2.4.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/
rt/transports...
Author: sergeyb
Date: Tue Dec 6 17:33:16 2011
New Revision: 1211044
URL: http://svn.apache.org/viewvc?rev=1211044&view=rev
Log:
Merged revisions 1211043 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1211043 | sergeyb | 2011-12-06 17:31:03 +0000 (Tue, 06 Dec 2011) | 1 line
[CXF-3952] Renaming SchemaLocation to XSISchemaLocation, adding http.base.path property
........
Added:
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java
- copied unchanged from r1211043, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XSISchemaLocation.java
Removed:
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/SchemaLocation.java
Modified:
cxf/branches/2.4.x-fixes/ (props changed)
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractHTTPServlet.java
cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 6 17:33:16 2011
@@ -1 +1 @@
-/cxf/trunk:1210875
+/cxf/trunk:1210875,1211043
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java?rev=1211044&r1=1211043&r2=1211044&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java Tue Dec 6 17:33:16 2011
@@ -78,9 +78,9 @@ public class MessageContextImpl implemen
return m.getExchange().getOutMessage().get(Message.ATTACHMENTS);
}
Object value = m.get(key);
- if (value == null && isRequestor()) {
+ if (value == null && m.getExchange() != null) {
Message inMessage = m.getExchange().getInMessage();
- if (inMessage != null) {
+ if (inMessage != null && inMessage != m) {
value = inMessage.get(key);
}
}
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=1211044&r1=1211043&r2=1211044&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java Tue Dec 6 17:33:16 2011
@@ -39,6 +39,7 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.ext.Provider;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
@@ -57,9 +58,9 @@ import javax.xml.transform.Source;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.jaxb.NamespaceMapper;
import org.apache.cxf.jaxrs.ext.MessageContext;
-import org.apache.cxf.jaxrs.ext.xml.SchemaLocation;
import org.apache.cxf.jaxrs.ext.xml.XMLInstruction;
import org.apache.cxf.jaxrs.ext.xml.XMLSource;
+import org.apache.cxf.jaxrs.ext.xml.XSISchemaLocation;
import org.apache.cxf.jaxrs.utils.AnnotationUtils;
import org.apache.cxf.jaxrs.utils.HttpUtils;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
@@ -93,11 +94,16 @@ public class JAXBElementProvider extends
private Map<String, Object> mProperties = Collections.emptyMap();
private Map<String, String> nsPrefixes = Collections.emptyMap();
+ private String xmlResourceOffset = "";
public JAXBElementProvider() {
}
+ public void setXmlResourceOffset(String value) {
+ xmlResourceOffset = value;
+ }
+
public void setNamespacePrefixes(Map<String, String> prefixes) {
nsPrefixes = prefixes;
}
@@ -388,10 +394,9 @@ public class JAXBElementProvider extends
if (pi != null) {
String value = pi.value();
int ind = value.indexOf("href='");
- if (ind > 0 && getContext() != null) {
+ if (ind > 0) {
String relRef = value.substring(ind + 6, value.length() - 3);
- String absRef =
- getContext().getUriInfo().getBaseUriBuilder().path(relRef).build().toString();
+ String absRef = buildAbsoluteXMLResourceURI(relRef);
value = value.substring(0, ind + 6) + absRef + "'?>";
}
setMarshallerProp(ms, value, XML_PI_PROPERTY, XML_PI_PROPERTY_INT);
@@ -399,19 +404,31 @@ public class JAXBElementProvider extends
}
private void addSchemaLocation(Marshaller ms, Annotation[] anns) throws Exception {
- SchemaLocation sl = AnnotationUtils.getAnnotation(anns, SchemaLocation.class);
+ XSISchemaLocation sl = AnnotationUtils.getAnnotation(anns, XSISchemaLocation.class);
if (sl != null) {
- String value = sl.value();
- if (getContext() != null) {
- value =
- getContext().getUriInfo().getBaseUriBuilder().path(value).build().toString();
- }
+ String value = buildAbsoluteXMLResourceURI(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) {
+ MessageContext mc = getContext();
+ if (mc != null) {
+ String httpBasePath = (String)mc.get("http.base.path");
+ UriBuilder builder = null;
+ if (httpBasePath != null) {
+ builder = UriBuilder.fromPath(httpBasePath);
+ } else {
+ builder = mc.getUriInfo().getBaseUriBuilder();
+ }
+ return builder.path(path).path(xmlResourceOffset).build().toString();
+ } else {
+ return path;
+ }
+ }
+
private static void setMarshallerProp(Marshaller ms, Object value,
String name1, String name2) throws Exception {
try {
Modified: cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?rev=1211044&r1=1211043&r2=1211044&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java Tue Dec 6 17:33:16 2011
@@ -96,6 +96,7 @@ public abstract class AbstractHTTPDestin
public static final String CXF_ASYNC_CONTEXT = "cxf.async.context";
public static final String SERVICE_REDIRECTION = "http.service.redirection";
+ private static final String HTTP_BASE_PATH = "http.base.path";
private static final Logger LOG = LogUtils.getL7dLogger(AbstractHTTPDestination.class);
@@ -254,8 +255,10 @@ public abstract class AbstractHTTPDestin
inMessage.put(HTTP_CONTEXT_MATCH_STRATEGY, contextMatchStrategy);
inMessage.put(Message.HTTP_REQUEST_METHOD, req.getMethod());
- inMessage.put(Message.REQUEST_URI, req.getRequestURI());
- inMessage.put(Message.REQUEST_URL, req.getRequestURL().toString());
+ String requestURI = req.getRequestURI();
+ inMessage.put(Message.REQUEST_URI, requestURI);
+ String requestURL = req.getRequestURL().toString();
+ inMessage.put(Message.REQUEST_URL, requestURL);
String contextPath = req.getContextPath();
if (contextPath == null) {
contextPath = "";
@@ -266,6 +269,16 @@ public abstract class AbstractHTTPDestin
}
String contextServletPath = contextPath + servletPath;
inMessage.put(Message.PATH_INFO, contextServletPath + req.getPathInfo());
+ int index = requestURL.indexOf(requestURI);
+ if (index > 0) {
+ // Can be useful for referencing resources with URIs not covered by CXFServlet.
+ // For example, if we a have web application name 'app' and CXFServlet listening
+ // on "/services/*" then having HTTP_BASE_PATH pointing to say
+ // http://localhost:8080/app will make it easy to refer to non CXF resources
+ String schemaInfo = requestURL.substring(0, index);
+ String basePathWithContextOnly = schemaInfo + contextPath;
+ inMessage.put(HTTP_BASE_PATH, basePathWithContextOnly);
+ }
String contentType = req.getContentType();
inMessage.put(Message.CONTENT_TYPE, contentType);
setEncoding(inMessage, req, contentType);
Modified: cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractHTTPServlet.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractHTTPServlet.java?rev=1211044&r1=1211043&r2=1211044&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractHTTPServlet.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractHTTPServlet.java Tue Dec 6 17:33:16 2011
@@ -66,6 +66,7 @@ public abstract class AbstractHTTPServle
STATIC_CONTENT_TYPES.put("txt", "text/plain");
STATIC_CONTENT_TYPES.put("css", "text/css");
STATIC_CONTENT_TYPES.put("pdf", "application/pdf");
+ STATIC_CONTENT_TYPES.put("xsd", "application/xml");
// TODO : add more types if needed
}
Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1211044&r1=1211043&r2=1211044&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Tue Dec 6 17:33:16 2011
@@ -78,8 +78,8 @@ import org.apache.cxf.helpers.XMLUtils;
import org.apache.cxf.jaxrs.ext.Oneway;
import org.apache.cxf.jaxrs.ext.search.SearchCondition;
import org.apache.cxf.jaxrs.ext.search.SearchContext;
-import org.apache.cxf.jaxrs.ext.xml.SchemaLocation;
import org.apache.cxf.jaxrs.ext.xml.XMLInstruction;
+import org.apache.cxf.jaxrs.ext.xml.XSISchemaLocation;
import org.apache.cxf.phase.PhaseInterceptorChain;
@Path("/bookstore")
@@ -211,7 +211,7 @@ public class BookStore {
@Path("name-in-query")
@Produces("application/xml")
@XMLInstruction("<!DOCTYPE Something SYSTEM 'my.dtd'><?xmlstylesheet href='common.css'?>")
- @SchemaLocation("book.xsd")
+ @XSISchemaLocation("book.xsd")
public Book getBookFromQuery(@QueryParam("name") String name) {
return new Book(name, 321L);
}
Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java?rev=1211044&r1=1211043&r2=1211044&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java Tue Dec 6 17:33:16 2011
@@ -35,7 +35,7 @@ public class JAXRSClientServerResourceCr
@BeforeClass
public static void startServers() throws Exception {
assertTrue("server did not launch correctly",
- launchServer(BookServerResourceCreatedSpring.class));
+ launchServer(BookServerResourceCreatedSpring.class, true));
}
@Test