Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 62205 invoked from network); 7 May 2009 11:47:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 May 2009 11:47:49 -0000 Received: (qmail 5417 invoked by uid 500); 7 May 2009 11:47:49 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 5344 invoked by uid 500); 7 May 2009 11:47:49 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 5335 invoked by uid 99); 7 May 2009 11:47:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 May 2009 11:47:49 +0000 X-ASF-Spam-Status: No, hits=-1998.5 required=10.0 tests=ALL_TRUSTED,WEIRD_PORT X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 May 2009 11:47:46 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 97E7423889BB; Thu, 7 May 2009 11:47:26 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r772620 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/ rt/frontend/jaxrs/src/main/ja... Date: Thu, 07 May 2009 11:47:26 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090507114726.97E7423889BB@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Thu May 7 11:47:25 2009 New Revision: 772620 URL: http://svn.apache.org/viewvc?rev=772620&view=rev Log: JAXRS: updating JAXB provider to use STAX readers/writers if available Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamReader.java (with props) cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamWriter.java (with props) cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamReaderProvider.java (with props) cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java (with props) Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContext.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalMessageContext.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContext.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContext.java?rev=772620&r1=772619&r2=772620&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContext.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContext.java Thu May 7 11:47:25 2009 @@ -36,6 +36,9 @@ public interface MessageContext { Object get(Object key); + Object getContextualProperty(Object key); + T getContent(Class format); + void put(Object key, Object value); UriInfo getUriInfo(); Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java?rev=772620&r1=772619&r2=772620&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java Thu May 7 11:47:25 2009 @@ -59,6 +59,14 @@ } return m.get(key); } + + public T getContent(Class format) { + return m.getContent(format); + } + + public Object getContextualProperty(Object key) { + return m.getContextualProperty(key.toString()); + } public T getContext(Class contextClass) { return getContext(contextClass, contextClass); Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalMessageContext.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalMessageContext.java?rev=772620&r1=772619&r2=772620&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalMessageContext.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalMessageContext.java Thu May 7 11:47:25 2009 @@ -89,4 +89,12 @@ return get() != null ? get().getResolver(resolverClass, resolveClazz) : null; } + public T getContent(Class format) { + return get() != null ? get().getContent(format) : null; + } + + public Object getContextualProperty(Object key) { + return get() != null ? get().getContextualProperty(key) : null; + } + } Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java?rev=772620&r1=772619&r2=772620&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java Thu May 7 11:47:25 2009 @@ -241,11 +241,9 @@ enabled = InjectionUtils.invokeBooleanGetter(w, "getEnableBuffering"); } if (enabled) { - boolean streamingOn = - "org.apache.cxf.jaxrs.provider.JAXBElementProvider".equals(w.getClass().getName()) - && InjectionUtils.invokeBooleanGetter(w, "getEnableStreaming"); + boolean streamingOn = InjectionUtils.invokeBooleanGetter(w, "getEnableStreaming"); if (streamingOn) { - m.put(XMLStreamWriter.class.getName(), new CachingXmlEventWriter()); + m.setContent(XMLStreamWriter.class, new CachingXmlEventWriter()); } else { m.setContent(OutputStream.class, new CachedOutputStream()); } @@ -257,7 +255,7 @@ if (!enabled) { return; } - XMLStreamWriter writer = (XMLStreamWriter)m.get(XMLStreamWriter.class.getName()); + XMLStreamWriter writer = m.getContent(XMLStreamWriter.class); if (writer instanceof CachingXmlEventWriter) { CachingXmlEventWriter cache = (CachingXmlEventWriter)writer; if (cache.getEvents().size() != 0) { @@ -266,7 +264,7 @@ StaxUtils.writeEvent(event, origWriter); } } - m.put(XMLStreamWriter.class.getName(), null); + m.setContent(XMLStreamWriter.class, null); return; } OutputStream os = m.getContent(OutputStream.class); Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=772620&r1=772619&r2=772620&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java Thu May 7 11:47:25 2009 @@ -24,6 +24,7 @@ import java.io.OutputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Type; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -39,6 +40,8 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; +import javax.xml.bind.ValidationEventHandler; +import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.stream.StreamSource; @@ -51,14 +54,26 @@ @Provider public class JAXBElementProvider extends AbstractJAXBProvider { + private static final List MARSHALLER_PROPERTIES = + Arrays.asList(new String[] {Marshaller.JAXB_ENCODING, + Marshaller.JAXB_FORMATTED_OUTPUT, + Marshaller.JAXB_FRAGMENT, + Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, + Marshaller.JAXB_SCHEMA_LOCATION}); + private Map mProperties = new HashMap(); private boolean enableStreaming; + private ValidationEventHandler eventHandler; @Context public void setMessageContext(MessageContext mc) { super.setContext(mc); } + public void setValidationHandler(ValidationEventHandler handler) { + eventHandler = handler; + } + public void setEnableStreaming(boolean enableStream) { enableStreaming = enableStream; } @@ -101,7 +116,9 @@ try { Class theType = getActualType(type, genericType, anns); Unmarshaller unmarshaller = createUnmarshaller(theType, genericType); - + if (eventHandler != null) { + unmarshaller.setEventHandler(eventHandler); + } Object response = null; if (JAXBElement.class.isAssignableFrom(type)) { response = unmarshaller.unmarshal(new StreamSource(is), theType); @@ -124,8 +141,25 @@ protected Object doUnmarshal(Unmarshaller unmarshaller, InputStream is, MediaType mt) throws JAXBException { + MessageContext mc = getContext(); + if (mc != null) { + XMLStreamReader reader = getContext().getContent(XMLStreamReader.class); + if (reader != null) { + return unmarshalFromReader(unmarshaller, reader, mt); + } + } + return unmarshalFromInputStream(unmarshaller, is, mt); + } + + protected Object unmarshalFromInputStream(Unmarshaller unmarshaller, InputStream is, MediaType mt) + throws JAXBException { return unmarshaller.unmarshal(is); } + + protected Object unmarshalFromReader(Unmarshaller unmarshaller, XMLStreamReader reader, MediaType mt) + throws JAXBException { + return unmarshaller.unmarshal(reader); + } public void writeTo(Object obj, Class cls, Type genericType, Annotation[] anns, MediaType m, MultivaluedMap headers, OutputStream os) @@ -155,20 +189,38 @@ for (Map.Entry entry : mProperties.entrySet()) { ms.setProperty(entry.getKey(), entry.getValue()); } - if (enableStreaming) { - XMLStreamWriter writer = - (XMLStreamWriter)getContext().get(XMLStreamWriter.class.getName()); - if (writer == null) { + + XMLStreamWriter writer = null; + MessageContext mc = getContext(); + if (mc != null) { + writer = mc.getContent(XMLStreamWriter.class); + if (writer == null && enableStreaming) { writer = StaxUtils.createXMLStreamWriter(os); } - ms.marshal(obj, writer); + // check Marshaller properties here as well which might've been set earlier on, + // they'll overwrite statically configured ones + for (String key : MARSHALLER_PROPERTIES) { + Object value = mc.get(key); + if (value != null) { + ms.setProperty(key, value); + } + } + + } + if (writer != null) { + marshalToWriter(ms, obj, writer, mt); } else { - doMarshal(ms, obj, os, mt); + marshalToOutputStream(ms, obj, os, mt); } } - protected void doMarshal(Marshaller ms, Object obj, OutputStream os, MediaType mt) + protected void marshalToOutputStream(Marshaller ms, Object obj, OutputStream os, MediaType mt) throws Exception { ms.marshal(obj, os); } + + protected void marshalToWriter(Marshaller ms, Object obj, XMLStreamWriter writer, MediaType mt) + throws Exception { + ms.marshal(obj, writer); + } } 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=772620&r1=772619&r2=772620&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 Thu May 7 11:47:25 2009 @@ -27,7 +27,6 @@ import java.io.Reader; import java.lang.annotation.Annotation; import java.lang.reflect.Type; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -103,11 +102,15 @@ } protected boolean inTemplatesAvailable(MediaType mt) { - return inTemplates != null || inMediaTemplates.containsKey(mt.getType() + "/" + mt.getSubtype()); + return inTemplates != null + || inMediaTemplates != null && inMediaTemplates.containsKey(mt.getType() + "/" + + mt.getSubtype()); } protected boolean outTemplatesAvailable(MediaType mt) { - return outTemplates != null || outMediaTemplates.containsKey(mt.getType() + "/" + mt.getSubtype()); + return outTemplates != null + || outMediaTemplates != null && outMediaTemplates.containsKey(mt.getType() + + "/" + mt.getSubtype()); } protected Templates getInTemplates(MediaType mt) { @@ -121,7 +124,7 @@ } @Override - protected Object doUnmarshal(Unmarshaller unmarshaller, InputStream is, MediaType mt) + protected Object unmarshalFromInputStream(Unmarshaller unmarshaller, InputStream is, MediaType mt) throws JAXBException { try { XMLFilter filter = factory.newXMLFilter( @@ -138,7 +141,7 @@ } @Override - protected void doMarshal(Marshaller ms, Object obj, OutputStream os, MediaType mt) + protected void marshalToOutputStream(Marshaller ms, Object obj, OutputStream os, MediaType mt) throws Exception { TransformerHandler th = factory.newTransformerHandler( createTemplates(getOutTemplates(mt), outParamsMap, outProperties)); @@ -199,22 +202,16 @@ this.outProperties = outProps; } - public void setInClassname(String className) { - if (inClassesToHandle == null) { - inClassesToHandle = new ArrayList(); - } - inClassesToHandle.add(className); + public void setInClassNames(List classNames) { + inClassesToHandle = classNames; } public boolean inClassCanBeHandled(String className) { return inClassesToHandle == null || inClassesToHandle.contains(className); } - public void setOutClassname(String className) { - if (outClassesToHandle == null) { - outClassesToHandle = new ArrayList(); - } - outClassesToHandle.add(className); + public void setOutClassNames(List classNames) { + outClassesToHandle = classNames; } public boolean outClassCanBeHandled(String className) { Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamReader.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamReader.java?rev=772620&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamReader.java (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamReader.java Thu May 7 11:47:25 2009 @@ -0,0 +1,44 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.systest.jaxrs; + +import javax.xml.stream.XMLStreamReader; + +import org.apache.cxf.staxutils.DepthXMLStreamReader; + +public class CustomXmlStreamReader extends DepthXMLStreamReader { + public CustomXmlStreamReader(XMLStreamReader reader) { + super(reader); + } + + @Override + public String getNamespaceURI() { + return "http://www.example.org/books"; + } + + @Override + public String getNamespaceURI(int index) { + return getNamespaceURI(); + } + + @Override + public String getNamespaceURI(String prefix) { + return getNamespaceURI(); + } +} Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamReader.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamReader.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamWriter.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamWriter.java?rev=772620&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamWriter.java (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamWriter.java Thu May 7 11:47:25 2009 @@ -0,0 +1,41 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.systest.jaxrs; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.cxf.staxutils.DelegatingXMLStreamWriter; + +public class CustomXmlStreamWriter extends DelegatingXMLStreamWriter { + + public CustomXmlStreamWriter(XMLStreamWriter writer) { + super(writer); + } + + @Override + public void writeStartElement(String prefix, String local, String uri) throws XMLStreamException { + + super.writeStartElement("b", local, ""); + if ("Book".equals(local)) { + super.writeNamespace("b", "http://www.w3.org/1999/xhtml"); + } + } + +} Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamWriter.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/CustomXmlStreamWriter.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java?rev=772620&r1=772619&r2=772620&view=diff ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java (original) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java Thu May 7 11:47:25 2009 @@ -48,7 +48,7 @@ @BeforeClass public static void startServers() throws Exception { assertTrue("server did not launch correctly", - launchServer(BookServerSpring.class)); + launchServer(BookServerSpring.class, true)); } @Test @@ -201,6 +201,20 @@ assertEquals("CXF in Action - 2", b.getName()); } + @Test + public void testGetBookReaderWriter() throws Exception { + String endpointAddress = + "http://localhost:9080/the/thebooks5/bookstore/books/convert"; + WebClient wc = WebClient.create(endpointAddress); + wc.type("application/xml").accept("application/xml"); + Book2 b = new Book2(); + b.setId(777L); + b.setName("CXF - 777"); + Book2 b2 = wc.post(b, Book2.class); + assertNotSame(b, b2); + assertEquals(777, b2.getId()); + assertEquals("CXF - 777", b2.getName()); + } @Test public void testGetBookXSLTHtml() throws Exception { Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamReaderProvider.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamReaderProvider.java?rev=772620&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamReaderProvider.java (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamReaderProvider.java Thu May 7 11:47:25 2009 @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.systest.jaxrs; + +import java.io.InputStream; + +import javax.ws.rs.core.Response; +import javax.xml.stream.XMLStreamReader; + +import org.apache.cxf.jaxrs.ext.RequestHandler; +import org.apache.cxf.jaxrs.model.ClassResourceInfo; +import org.apache.cxf.message.Message; +import org.apache.cxf.staxutils.StaxUtils; + +public class XmlStreamReaderProvider implements RequestHandler { + + public Response handleRequest(Message m, ClassResourceInfo resourceClass) { + String method = m.get(Message.HTTP_REQUEST_METHOD).toString(); + if ("POST".equals(method)) { + XMLStreamReader reader = + StaxUtils.createXMLStreamReader(m.getContent(InputStream.class)); + m.setContent(XMLStreamReader.class, new CustomXmlStreamReader(reader)); + } + return null; + } + +} Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamReaderProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamReaderProvider.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java?rev=772620&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java Thu May 7 11:47:25 2009 @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.systest.jaxrs; + +import java.io.OutputStream; + +import javax.ws.rs.core.Response; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.cxf.jaxrs.ext.ResponseHandler; +import org.apache.cxf.jaxrs.model.OperationResourceInfo; +import org.apache.cxf.message.Message; +import org.apache.cxf.staxutils.StaxUtils; + +public class XmlStreamWriterProvider implements ResponseHandler { + + public Response handleResponse(Message m, OperationResourceInfo ori, Response response) { + String method = ori.getHttpMethod(); + if ("POST".equals(method)) { + XMLStreamWriter writer = + StaxUtils.createXMLStreamWriter(m.getContent(OutputStream.class)); + m.setContent(XMLStreamWriter.class, new CustomXmlStreamWriter(writer)); + } + return null; + } + +} Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/XmlStreamWriterProvider.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml?rev=772620&r1=772619&r2=772620&view=diff ============================================================================== --- cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml (original) +++ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml Thu May 7 11:47:25 2009 @@ -98,13 +98,19 @@ + + - + + + + org.apache.cxf.systest.jaxrs.Book + @@ -112,6 +118,7 @@ --> +