Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 63422 invoked from network); 1 Jul 2009 14:37:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 1 Jul 2009 14:37:45 -0000 Received: (qmail 25502 invoked by uid 500); 1 Jul 2009 14:37:55 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 25435 invoked by uid 500); 1 Jul 2009 14:37:55 -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 25426 invoked by uid 99); 1 Jul 2009 14:37:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Jul 2009 14:37:55 +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 14:37:53 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 575E923888E7; Wed, 1 Jul 2009 14:37:33 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r790188 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jaxrs/src/main/java/org/ap... Date: Wed, 01 Jul 2009 14:37:32 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090701143733.575E923888E7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Wed Jul 1 14:37:32 2009 New Revision: 790188 URL: http://svn.apache.org/viewvc?rev=790188&view=rev Log: JAXRS : support for ResourceManager lookups Added: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml (with props) cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd (with props) cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl (with props) Removed: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/bookid.xsd cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/template.xsl Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.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/AbstractJAXRSFactoryBean.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java?rev=790188&r1=790187&r2=790188&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java Wed Jul 1 14:37:32 2009 @@ -232,6 +232,7 @@ if (entityProviders != null) { factory.setUserProviders(entityProviders); } + factory.setBus(getBus()); if (schemaLocations != null) { factory.setSchemaLocations(schemaLocations); } @@ -252,14 +253,14 @@ } public void setModelRef(String modelRef) { - List resources = ResourceUtils.getUserResources(modelRef); + List resources = ResourceUtils.getUserResources(modelRef, getBus()); if (resources != null) { serviceFactory.setUserResources(resources); } } public void setModelRefWithServiceClass(String modelRef, Class sClass) { - List resources = ResourceUtils.getUserResources(modelRef); + List resources = ResourceUtils.getUserResources(modelRef, getBus()); if (resources != null) { serviceFactory.setUserResourcesWithServiceClass(resources, sClass); } Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java?rev=790188&r1=790187&r2=790188&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractConfigurableProvider.java Wed Jul 1 14:37:32 2009 @@ -21,11 +21,25 @@ import java.util.List; +import org.apache.cxf.Bus; +import org.apache.cxf.BusFactory; + public abstract class AbstractConfigurableProvider { private List consumeMediaTypes; private List produceMediaTypes; private boolean enableBuffering; + private Bus bus; + + public void setBus(Bus b) { + if (bus != null) { + bus = b; + } + } + + public Bus getBus() { + return bus != null ? bus : BusFactory.getThreadDefaultBus(); + } public void setConsumeMediaTypes(List types) { consumeMediaTypes = types; Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java?rev=790188&r1=790187&r2=790188&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java Wed Jul 1 14:37:32 2009 @@ -81,7 +81,7 @@ } public void setSchemaLocations(List locations) { - schema = SchemaHandler.createSchema(locations); + schema = SchemaHandler.createSchema(locations, getBus()); } public void setSchema(Schema s) { 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=790188&r1=790187&r2=790188&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 14:37:32 2009 @@ -36,6 +36,7 @@ import javax.ws.rs.ext.MessageBodyReader; import javax.ws.rs.ext.MessageBodyWriter; +import org.apache.cxf.Bus; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.endpoint.Endpoint; import org.apache.cxf.jaxrs.client.ResponseExceptionMapper; @@ -548,17 +549,32 @@ responseExceptionMappers.clear(); } + public void setBus(Bus bus) { + if (bus == null) { + return; + } + for (ProviderInfo r : messageReaders) { + injectProviderProperty(r.getProvider(), "setBus", Bus.class, bus); + } + } + + private boolean injectProviderProperty(Object provider, String mName, Class pClass, + Object pValue) { + try { + Method m = provider.getClass().getMethod(mName, new Class[]{pClass}); + m.invoke(provider, new Object[]{pValue}); + return true; + } catch (Exception ex) { + // ignore + } + return false; + } + 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 - } + schemasMethodAvailable = injectProviderProperty(r.getProvider(), "setSchemas", + List.class, schemas); } if (!schemasMethodAvailable) { for (ProviderInfo r : SHARED_FACTORY.messageReaders) { 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=790188&r1=790187&r2=790188&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 Wed Jul 1 14:37:32 2009 @@ -60,9 +60,9 @@ import org.xml.sax.InputSource; import org.xml.sax.XMLFilter; -import org.apache.cxf.common.classloader.ClassLoaderUtils; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.jaxrs.ext.MessageContext; +import org.apache.cxf.jaxrs.utils.ResourceUtils; @Produces({"application/xml", "application/*+xml", "text/xml", "text/html" }) @Consumes({"application/xml", "application/*+xml", "text/xml", "text/html" }) @@ -273,7 +273,7 @@ InputStream is = null; if (loc.startsWith("classpath:")) { String path = loc.substring("classpath:".length()); - is = ClassLoaderUtils.getResourceAsStream(path, this.getClass()); + is = ResourceUtils.getClasspathResourceStream(path, this.getClass(), this.getBus()); } else { File f = new File(loc); if (f.exists()) { Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java?rev=790188&r1=790187&r2=790188&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java Wed Jul 1 14:37:32 2009 @@ -48,6 +48,8 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.apache.cxf.Bus; +import org.apache.cxf.BusFactory; import org.apache.cxf.common.classloader.ClassLoaderUtils; import org.apache.cxf.common.i18n.BundleUtils; import org.apache.cxf.common.logging.LogUtils; @@ -62,6 +64,7 @@ import org.apache.cxf.jaxrs.model.URITemplate; import org.apache.cxf.jaxrs.model.UserOperation; import org.apache.cxf.jaxrs.model.UserResource; +import org.apache.cxf.resource.ResourceManager; public final class ResourceUtils { @@ -332,12 +335,13 @@ } } - public static List getUserResources(String loc) { + + public static List getUserResources(String loc, Bus bus) { try { InputStream is = null; if (loc.startsWith("classpath:")) { String path = loc.substring("classpath:".length()); - is = ClassLoaderUtils.getResourceAsStream(path, ResourceUtils.class); + is = getClasspathResourceStream(path, ResourceUtils.class, bus); } else { File f = new File(loc); if (f.exists()) { @@ -356,6 +360,21 @@ return null; } + public static InputStream getClasspathResourceStream(String path, Class callingClass, Bus bus) { + InputStream is = ClassLoaderUtils.getResourceAsStream(path, callingClass); + if (is == null && bus != null) { + ResourceManager rm = bus.getExtension(ResourceManager.class); + if (rm != null) { + is = rm.getResourceAsStream(path); + } + } + return is; + } + + public static List getUserResources(String loc) { + return getUserResources(loc, BusFactory.getThreadDefaultBus()); + } + public static List getUserResources(InputStream is) throws Exception { Document doc = DOMUtils.readXml(new InputStreamReader(is, "UTF-8")); return getResourcesFromElement(doc.getDocumentElement()); Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java?rev=790188&r1=790187&r2=790188&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/schemas/SchemaHandler.java Wed Jul 1 14:37:32 2009 @@ -35,8 +35,10 @@ import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; -import org.apache.cxf.common.classloader.ClassLoaderUtils; +import org.apache.cxf.Bus; +import org.apache.cxf.BusFactory; import org.apache.cxf.common.logging.LogUtils; +import org.apache.cxf.jaxrs.utils.ResourceUtils; public class SchemaHandler { @@ -44,20 +46,25 @@ private static final String CLASSPATH_PREFIX = "classpath:"; private Schema schema; + private Bus bus; public SchemaHandler() { } + public void setBus(Bus b) { + bus = b; + } + public void setSchemas(List locations) { - schema = createSchema(locations); + schema = createSchema(locations, bus == null ? BusFactory.getThreadDefaultBus() : bus); } public Schema getSchema() { return schema; } - public static Schema createSchema(List locations) { + public static Schema createSchema(List locations, Bus bus) { SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema s = null; @@ -67,7 +74,7 @@ InputStream is = null; if (loc.startsWith(CLASSPATH_PREFIX)) { String path = loc.substring(CLASSPATH_PREFIX.length()); - is = ClassLoaderUtils.getResourceAsStream(path, SchemaHandler.class); + is = ResourceUtils.getClasspathResourceStream(path, SchemaHandler.class, bus); if (is == null) { LOG.warning("No schema resource " + loc + " is available on classpath"); return null; Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java?rev=790188&r1=790187&r2=790188&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java Wed Jul 1 14:37:32 2009 @@ -18,8 +18,6 @@ */ package org.apache.cxf.jaxrs.model.wadl; -import java.io.File; -import java.io.FileOutputStream; import java.io.StringReader; import java.util.ArrayList; import java.util.List; @@ -82,14 +80,14 @@ assertNotNull(r); assertEquals(WadlGenerator.WADL_TYPE.toString(), r.getMetadata().getFirst(HttpHeaders.CONTENT_TYPE)); - File f = new File("test.xml"); - f.delete(); - f.createNewFile(); - System.out.println(f.getAbsolutePath()); - FileOutputStream fos = new FileOutputStream(f); - fos.write(r.getEntity().toString().getBytes()); - fos.flush(); - fos.close(); +// File f = new File("test.xml"); +// f.delete(); +// f.createNewFile(); +// System.out.println(f.getAbsolutePath()); +// FileOutputStream fos = new FileOutputStream(f); +// fos.write(r.getEntity().toString().getBytes()); +// fos.flush(); +// fos.close(); } @Test 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=790188&r1=790187&r2=790188&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 14:37:32 2009 @@ -117,7 +117,7 @@ - + @@ -134,7 +134,7 @@ + modelRef="classpath:/WEB-INF/model/resources.xml"/> @@ -161,7 +161,7 @@ - classpath:/org/apache/cxf/systest/jaxrs/resources/bookid.xsd + classpath:/WEB-INF/schemas/bookid.xsd classpath:/org/apache/cxf/systest/jaxrs/resources/book.xsd Added: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml?rev=790188&view=auto ============================================================================== --- cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml (added) +++ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml Wed Jul 1 14:37:32 2009 @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/model/resources.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd?rev=790188&view=auto ============================================================================== --- cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd (added) +++ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd Wed Jul 1 14:37:32 2009 @@ -0,0 +1,26 @@ + + + + + + + + + Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/schemas/bookid.xsd ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl?rev=790188&view=auto ============================================================================== --- cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl (added) +++ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl Wed Jul 1 14:37:32 2009 @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/templates/template.xsl ------------------------------------------------------------------------------ svn:mime-type = text/xml