Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 64147 invoked from network); 1 Jul 2009 09:55:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 1 Jul 2009 09:55:42 -0000 Received: (qmail 52414 invoked by uid 500); 1 Jul 2009 09:55:52 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 52336 invoked by uid 500); 1 Jul 2009 09:55:52 -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 52327 invoked by uid 99); 1 Jul 2009 09:55:52 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Jul 2009 09:55:52 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED 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; Wed, 01 Jul 2009 09:55:42 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id AB03923888E5; Wed, 1 Jul 2009 09:55:21 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r790094 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ systests/src/test/resources/jaxrs/WEB-INF/ Date: Wed, 01 Jul 2009 09:55:21 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090701095521.AB03923888E5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Wed Jul 1 09:55:21 2009 New Revision: 790094 URL: http://svn.apache.org/viewvc?rev=790094&view=rev Log: JAX-RS : fixing issue with jaxrs:schemaLocations being ignored Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.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/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=790094&r1=790093&r2=790094&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 Jul 1 09:55:21 2009 @@ -549,15 +549,30 @@ } public void setSchemaLocations(List schemas) { + boolean schemasMethodAvailable = false; for (ProviderInfo r : messageReaders) { try { Method m = r.getProvider().getClass().getMethod("setSchemas", new Class[]{List.class}); + schemasMethodAvailable = true; m.invoke(r.getProvider(), new Object[]{schemas}); } catch (Exception ex) { // ignore } } + if (!schemasMethodAvailable) { + for (ProviderInfo r : SHARED_FACTORY.messageReaders) { + try { + Method m = r.getProvider().getClass().getMethod("setSchemas", + new Class[]{List.class}); + Object provider = r.getProvider().getClass().newInstance(); + m.invoke(provider, new Object[]{schemas}); + registerUserProvider(provider); + } catch (Exception ex) { + // ignore + } + } + } } private static class ExceptionMapperComparator implements Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java?rev=790094&r1=790093&r2=790094&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java Wed Jul 1 09:55:21 2009 @@ -54,6 +54,7 @@ import org.apache.cxf.jaxrs.ext.ParameterHandler; import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper; import org.apache.cxf.jaxrs.model.ProviderInfo; +import org.apache.cxf.jaxrs.resources.Book; import org.apache.cxf.jaxrs.utils.JAXRSUtils; import org.apache.cxf.message.Exchange; import org.apache.cxf.message.ExchangeImpl; @@ -81,6 +82,32 @@ } @Test + public void testSchemaLocations() { + ProviderFactory pf = ProviderFactory.getInstance(); + pf.setSchemaLocations(Collections.singletonList("classpath:/test.xsd")); + MessageBodyReader customJaxbReader = pf.createMessageBodyReader((Class)Book.class, null, null, + MediaType.TEXT_XML_TYPE, new MessageImpl()); + assertTrue(customJaxbReader instanceof JAXBElementProvider); + MessageBodyReader jaxbReader = ProviderFactory.getSharedInstance().createMessageBodyReader( + (Class)Book.class, null, null, MediaType.TEXT_XML_TYPE, new MessageImpl()); + assertTrue(jaxbReader instanceof JAXBElementProvider); + assertNotSame(jaxbReader, customJaxbReader); + + assertNull(((JAXBElementProvider)jaxbReader).getSchema()); + assertNotNull(((JAXBElementProvider)customJaxbReader).getSchema()); + + MessageBodyReader customJsonReader = pf.createMessageBodyReader((Class)Book.class, null, null, + MediaType.APPLICATION_JSON_TYPE, new MessageImpl()); + assertTrue(customJsonReader instanceof JSONProvider); + MessageBodyReader jsonReader = ProviderFactory.getSharedInstance().createMessageBodyReader( + (Class)Book.class, null, null, MediaType.APPLICATION_JSON_TYPE, new MessageImpl()); + assertTrue(jsonReader instanceof JSONProvider); + assertNotSame(jsonReader, customJsonReader); + assertNull(((JSONProvider)jsonReader).getSchema()); + assertNotNull(((JSONProvider)customJsonReader).getSchema()); + } + + @Test public void testGetFactoryInboundMessage() { ProviderFactory factory = ProviderFactory.getInstance(); Message m = new MessageImpl(); 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=790094&r1=790093&r2=790094&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 Wed Jul 1 09:55:21 2009 @@ -28,13 +28,16 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xmlns:jaxrs="http://cxf.apache.org/jaxrs" + xmlns:cxf="http://cxf.apache.org/core" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://cxf.apache.org/jaxrs -http://cxf.apache.org/schemas/jaxrs.xsd"> +http://cxf.apache.org/schemas/jaxrs.xsd +http://cxf.apache.org/core +http://cxf.apache.org/schemas/core.xsd"> @@ -51,7 +54,6 @@ - - + + +