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 2012/09/25 18:28:46 UTC

svn commit: r1389971 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ 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/test/java/...

Author: sergeyb
Date: Tue Sep 25 16:28:46 2012
New Revision: 1389971

URL: http://svn.apache.org/viewvc?rev=1389971&view=rev
Log:
[CXF-4455] Support for new ResourceInfo context

Added:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResourceInfoImpl.java   (with props)
Modified:
    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/utils/AnnotationUtils.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
    cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java

Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResourceInfoImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResourceInfoImpl.java?rev=1389971&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResourceInfoImpl.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResourceInfoImpl.java Tue Sep 25 16:28:46 2012
@@ -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.jaxrs.impl;
+
+import java.lang.reflect.Method;
+
+import javax.ws.rs.container.ResourceInfo;
+
+import org.apache.cxf.jaxrs.model.OperationResourceInfo;
+import org.apache.cxf.message.Message;
+
+public class ResourceInfoImpl implements ResourceInfo {
+
+    private OperationResourceInfo ori;
+    public ResourceInfoImpl(Message m) {
+        this.ori = m.getExchange().get(OperationResourceInfo.class);
+    }
+    @Override
+    public Method getResourceMethod() {
+        return ori == null ? null : ori.getMethodToInvoke();
+    }
+    @Override
+    public Class<?> getResourceClass() {
+        return ori == null ? null : ori.getClassResourceInfo().getResourceClass();
+    }
+    
+}

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResourceInfoImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResourceInfoImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

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=1389971&r1=1389970&r2=1389971&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 Tue Sep 25 16:28:46 2012
@@ -755,7 +755,8 @@ public final class ProviderFactory {
             requestHandlers, responseHandlers, exceptionMappers,
             postMatchContainerRequestFilters.values(), preMatchContainerRequestFilters,
             postMatchContainerResponseFilters.values(),
-            responseExceptionMappers, clientRequestFilters, clientResponseFilters);
+            responseExceptionMappers, clientRequestFilters, clientResponseFilters,
+            readerInterceptors, writerInterceptors);
     }
 //CHECKSTYLE:ON
     

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/AnnotationUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/AnnotationUtils.java?rev=1389971&r1=1389970&r2=1389971&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/AnnotationUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/AnnotationUtils.java Tue Sep 25 16:28:46 2012
@@ -45,6 +45,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
+import javax.ws.rs.container.ResourceInfo;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
@@ -84,6 +85,7 @@ public final class AnnotationUtils {
         classes.add(ContextResolver.class);
         classes.add(Providers.class);
         classes.add(Request.class);
+        classes.add(ResourceInfo.class);
         classes.add(Application.class);
         // Servlet API
         try {

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1389971&r1=1389970&r2=1389971&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Tue Sep 25 16:28:46 2012
@@ -67,6 +67,7 @@ import javax.ws.rs.container.ContainerRe
 import javax.ws.rs.container.ContainerRequestFilter;
 import javax.ws.rs.container.ContainerResponseContext;
 import javax.ws.rs.container.ContainerResponseFilter;
+import javax.ws.rs.container.ResourceInfo;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Cookie;
 import javax.ws.rs.core.HttpHeaders;
@@ -110,6 +111,7 @@ import org.apache.cxf.jaxrs.impl.Provide
 import org.apache.cxf.jaxrs.impl.ReaderInterceptorContextImpl;
 import org.apache.cxf.jaxrs.impl.ReaderInterceptorMBR;
 import org.apache.cxf.jaxrs.impl.RequestImpl;
+import org.apache.cxf.jaxrs.impl.ResourceInfoImpl;
 import org.apache.cxf.jaxrs.impl.SecurityContextImpl;
 import org.apache.cxf.jaxrs.impl.UriInfoImpl;
 import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper;
@@ -876,17 +878,19 @@ public final class JAXRSUtils {
         } else if (HttpHeaders.class.isAssignableFrom(clazz)
             || ProtocolHeaders.class.isAssignableFrom(clazz)) {
             o = createHttpHeaders(contextMessage, clazz);
-        } else if (Request.class.isAssignableFrom(clazz)) {
-            o = new RequestImpl(contextMessage);
         } else if (SecurityContext.class.isAssignableFrom(clazz)) {
             SecurityContext customContext = contextMessage.get(SecurityContext.class);
             o = customContext == null ? new SecurityContextImpl(contextMessage) : customContext;
+        } else if (MessageContext.class.isAssignableFrom(clazz)) {
+            o = new MessageContextImpl(m);
+        } else if (ResourceInfo.class.isAssignableFrom(clazz)) {
+            o = new ResourceInfoImpl(contextMessage);
+        } else if (Request.class.isAssignableFrom(clazz)) {
+            o = new RequestImpl(contextMessage);
         } else if (Providers.class.isAssignableFrom(clazz)) {
             o = new ProvidersImpl(contextMessage);
         } else if (ContextResolver.class.isAssignableFrom(clazz)) {
             o = createContextResolver(genericType, contextMessage);
-        } else if (MessageContext.class.isAssignableFrom(clazz)) {
-            o = new MessageContextImpl(m);
         } else if (Application.class.isAssignableFrom(clazz)) {
             ProviderInfo<?> providerInfo = 
                 (ProviderInfo<?>)contextMessage.getExchange().getEndpoint().get(Application.class.getName());

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java?rev=1389971&r1=1389970&r2=1389971&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/Customer.java Tue Sep 25 16:28:46 2012
@@ -43,6 +43,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
+import javax.ws.rs.container.ResourceInfo;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Cookie;
@@ -120,6 +121,7 @@ public class Customer extends AbstractCu
     private UriInfo uriInfo;
     @Context private CustomerContext customerContext;
     @Context private HttpHeaders headers;
+    @Context private ResourceInfo resourceInfo;
     @Context private Request request;
     @Context private SecurityContext sContext;
     @Context private Providers bodyWorkers;
@@ -279,6 +281,10 @@ public class Customer extends AbstractCu
         return headers;
     }
     
+    public ResourceInfo getResourceInfo() {
+        return resourceInfo;
+    }
+    
     public Request getRequest() {
         return request;
     }

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=1389971&r1=1389970&r2=1389971&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Tue Sep 25 16:28:46 2012
@@ -35,6 +35,7 @@ import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.container.ResourceInfo;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Cookie;
 import javax.ws.rs.core.HttpHeaders;
@@ -72,6 +73,7 @@ import org.apache.cxf.jaxrs.impl.Metadat
 import org.apache.cxf.jaxrs.impl.PathSegmentImpl;
 import org.apache.cxf.jaxrs.impl.ProvidersImpl;
 import org.apache.cxf.jaxrs.impl.RequestImpl;
+import org.apache.cxf.jaxrs.impl.ResourceInfoImpl;
 import org.apache.cxf.jaxrs.impl.SecurityContextImpl;
 import org.apache.cxf.jaxrs.impl.UriInfoImpl;
 import org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpServletRequest;
@@ -1520,7 +1522,7 @@ public class JAXRSUtilsTest extends Asse
     }
     
     @Test
-    public void testPerRequestHttpContextFields() throws Exception {
+    public void testPerRequestContextFields() throws Exception {
         
         ClassResourceInfo cri = new ClassResourceInfo(Customer.class, true);
         cri.setResourceProvider(new PerRequestResourceProvider(Customer.class));
@@ -1544,7 +1546,7 @@ public class JAXRSUtilsTest extends Asse
     
     @SuppressWarnings("unchecked")
     @Test
-    public void testSingletonHttpContextFields() throws Exception {
+    public void testSingletonContextFields() throws Exception {
         
         ClassResourceInfo cri = new ClassResourceInfo(Customer.class, true);
         Customer c = new Customer();
@@ -1569,6 +1571,8 @@ public class JAXRSUtilsTest extends Asse
                    ((ThreadLocalProxy<HttpHeaders>)c.getHeaders()).get().getClass());
         assertSame(RequestImpl.class, 
                    ((ThreadLocalProxy<Request>)c.getRequest()).get().getClass());
+        assertSame(ResourceInfoImpl.class, 
+                   ((ThreadLocalProxy<ResourceInfo>)c.getResourceInfo()).get().getClass());
         assertSame(SecurityContextImpl.class, 
                    ((ThreadLocalProxy<SecurityContext>)c.getSecurityContext()).get().getClass());
         assertSame(ProvidersImpl.class, 

Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java?rev=1389971&r1=1389970&r2=1389971&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java Tue Sep 25 16:28:46 2012
@@ -35,6 +35,8 @@ import javax.ws.rs.container.ContainerRe
 import javax.ws.rs.container.ContainerResponseContext;
 import javax.ws.rs.container.ContainerResponseFilter;
 import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.container.ResourceInfo;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.UriInfo;
 import javax.ws.rs.ext.ReaderInterceptor;
 import javax.ws.rs.ext.ReaderInterceptorContext;
@@ -140,12 +142,16 @@ public class BookServer20 extends Abstra
     }
     
     public static class CustomReaderInterceptor implements ReaderInterceptor {
-
+        @Context
+        private ResourceInfo ri;
         @Override
         public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException,
             WebApplicationException {
-            context.getHeaders().add("ServerReaderInterceptor", "serverRead");
+            if (ri.getResourceClass() == BookStore.class) {
+                context.getHeaders().add("ServerReaderInterceptor", "serverRead");
+            }
             return context.proceed();
+            
         }
         
     }