Author: dkulp Date: Fri Mar 28 13:27:50 2008 New Revision: 642367 URL: http://svn.apache.org/viewvc?rev=642367&view=rev Log: Fix some issues where the specified service beans were not being used after a sub resource was hit
Modified: incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/PerRequestResourceProvider.java incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/ResourceProvider.java incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/SingletonResourceProvider.java incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookServer.java incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomClientBookTest.java incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedOutsideBookTest.java Modified: incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java Fri Mar 28 13:27:50 2008 @@ -48,13 +48,15 @@ public JAXRSInvoker(List<Object> resourceObjects) { this.resourceObjects = resourceObjects; } - public Object invoke(Exchange exchange, Object request) { + return invoke(exchange, request, resourceObjects); + } + public Object invoke(Exchange exchange, Object request, List<Object> resources) { OperationResourceInfo ori = exchange.get(OperationResourceInfo.class); ClassResourceInfo cri = ori.getClassResourceInfo(); Method m = cri.getMethodDispatcher().getMethod(ori); - Object resourceObject = getServiceObject(exchange); + Object resourceObject = getServiceObject(exchange, resources); if (cri.isRoot()) { JAXRSUtils.injectHttpContextValues(resourceObject, @@ -96,8 +98,8 @@ result = ((Object[])result)[0]; } } - resourceObjects = new ArrayList<Object>(); - resourceObjects.add(result); + List<Object> newResourceObjects = new ArrayList<Object>(); + newResourceObjects.add(result); Message msg = exchange.getInMessage(); MultivaluedMap<String, String> values = new MetadataMap<String, String>(); @@ -128,21 +130,24 @@ List<Object> newParams = JAXRSUtils.processParameters(subOri, values, msg); msg.setContent(List.class, newParams); - return this.invoke(exchange, newParams); + return this.invoke(exchange, newParams, newResourceObjects); } return result; } public Object getServiceObject(Exchange exchange) { + return getServiceObject(exchange, resourceObjects); + } + public Object getServiceObject(Exchange exchange, List<Object> resources) { Object serviceObject = null; OperationResourceInfo ori = exchange.get(OperationResourceInfo.class); ClassResourceInfo cri = ori.getClassResourceInfo(); - if (resourceObjects != null) { + if (resources != null) { Class c = cri.getResourceClass(); - for (Object resourceObject : resourceObjects) { + for (Object resourceObject : resources) { if (c.isInstance(resourceObject)) { serviceObject = resourceObject; } Modified: incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServiceFactoryBean.java Fri Mar 28 13:27:50 2008 @@ -137,12 +137,10 @@ //TODO: Using information from annotation to determine which lifecycle provider to use ResourceProvider rp = resourceProviders.get(c); if (rp != null) { - rp.setResourceClass(c); classResourceInfo.setResourceProvider(rp); } else { //default lifecycle is per-request - rp = new PerRequestResourceProvider(); - rp.setResourceClass(c); + rp = new PerRequestResourceProvider(c); classResourceInfo.setResourceProvider(rp); } Modified: incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/PerRequestResourceProvider.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/PerRequestResourceProvider.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/PerRequestResourceProvider.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/PerRequestResourceProvider.java Fri Mar 28 13:27:50 2008 @@ -22,12 +22,10 @@ public class PerRequestResourceProvider implements ResourceProvider { private Class<?> resourceClass; - public PerRequestResourceProvider() { + public PerRequestResourceProvider(Class<?> clazz) { + resourceClass = clazz; } - public void setResourceClass(Class<?> clazz) { - this.resourceClass = clazz; - } public Object getInstance() { Object resourceInstance = null; Modified: incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/ResourceProvider.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/ResourceProvider.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/ResourceProvider.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/ResourceProvider.java Fri Mar 28 13:27:50 2008 @@ -22,5 +22,5 @@ public interface ResourceProvider { Object getInstance(); - void setResourceClass(Class<?> clazz); + //void setResourceClass(Class<?> clazz); } Modified: incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/SingletonResourceProvider.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/SingletonResourceProvider.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/SingletonResourceProvider.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/lifecycle/SingletonResourceProvider.java Fri Mar 28 13:27:50 2008 @@ -20,28 +20,14 @@ package org.apache.cxf.jaxrs.lifecycle; public class SingletonResourceProvider implements ResourceProvider { - private Class<?> resourceClass; private Object resourceInstance; - public SingletonResourceProvider() { + public SingletonResourceProvider(Object o) { + resourceInstance = o; } - public void setResourceClass(Class<?> clazz) { - this.resourceClass = clazz; - } public Object getInstance() { - if (resourceInstance != null) { - return resourceInstance; - } - - try { - resourceInstance = resourceClass.newInstance(); - } catch (InstantiationException ex) { - //TODO - } catch (IllegalAccessException ex) { - //TODO - } return resourceInstance; } } Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookServer.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookServer.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookServer.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookServer.java Fri Mar 28 13:27:50 2008 @@ -29,7 +29,8 @@ JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); sf.setResourceClasses(AtomBookStore.class); //default lifecycle is per-request, change it to singleton - sf.setResourceProvider(AtomBookStore.class, new SingletonResourceProvider()); + sf.setResourceProvider(AtomBookStore.class, + new SingletonResourceProvider(new AtomBookStore())); sf.setAddress("http://localhost:9080/"); sf.create(); Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomClientBookTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomClientBookTest.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomClientBookTest.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/AtomClientBookTest.java Fri Mar 28 13:27:50 2008 @@ -46,7 +46,8 @@ @BeforeClass public static void startServers() throws Exception { - assertTrue("server did not launch correctly", launchServer(AtomBookServer.class)); + assertTrue("server did not launch correctly", + launchServer(AtomBookServer.class)); } @Test Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookServer.java Fri Mar 28 13:27:50 2008 @@ -29,7 +29,8 @@ JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); sf.setResourceClasses(BookStore.class); //default lifecycle is per-request, change it to singleton - sf.setResourceProvider(BookStore.class, new SingletonResourceProvider()); + sf.setResourceProvider(BookStore.class, + new SingletonResourceProvider(new BookStore())); sf.setAddress("http://localhost:9080/"); sf.create(); Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Fri Mar 28 13:27:50 2008 @@ -40,7 +40,8 @@ @BeforeClass public static void startServers() throws Exception { - assertTrue("server did not launch correctly", launchServer(BookServer.class)); + assertTrue("server did not launch correctly", + launchServer(BookServer.class)); } @Test Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedOutsideBookTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedOutsideBookTest.java?rev=642367&r1=642366&r2=642367&view=diff ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedOutsideBookTest.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedOutsideBookTest.java Fri Mar 28 13:27:50 2008 @@ -37,7 +37,7 @@ @BeforeClass public static void startServers() throws Exception { assertTrue("server did not launch correctly", - launchServer(BookServerResourceCreatedOutside.class, true)); + launchServer(BookServerResourceCreatedOutside.class)); } @Test