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 2009/12/17 19:17:30 UTC

svn commit: r891817 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/ rt/management/src/main/java/org/apache/cxf/management/interceptor/ rt/management/src/tes...

Author: sergeyb
Date: Thu Dec 17 18:17:30 2009
New Revision: 891817

URL: http://svn.apache.org/viewvc?rev=891817&view=rev
Log:
CXF-2585,CXF-2541: JMX support for JAXRS proxies and webclients, and a minor fix for proxies to support empty posts   

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
    cxf/trunk/rt/management/src/main/java/org/apache/cxf/management/interceptor/AbstractMessageResponseTimeInterceptor.java
    cxf/trunk/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInInterceptor2Test.java
    cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=891817&r1=891816&r2=891817&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Thu Dec 17 18:17:30 2009
@@ -67,6 +67,7 @@
 import org.apache.cxf.phase.PhaseChainCache;
 import org.apache.cxf.phase.PhaseInterceptorChain;
 import org.apache.cxf.phase.PhaseManager;
+import org.apache.cxf.service.Service;
 import org.apache.cxf.transport.ConduitInitiatorManager;
 import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory;
@@ -574,8 +575,19 @@
         
         //setup conduit selector
         prepareConduitSelector(m);
+        exchange.put(Service.class, cfg.getConduitSelector().getEndpoint().getService());
         
         return m;
     }
 
+    protected void setEmptyRequestProperty(Message outMessage, String httpMethod) {
+        if ("POST".equals(httpMethod)) {
+            outMessage.put("org.apache.cxf.post.empty", true);
+        }
+    }
+    
+    protected void setPlainOperationNameProperty(Message outMessage, String name) {
+        outMessage.put("org.apache.cxf.resource.operation.name", name);
+    }
+    
 }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java?rev=891817&r1=891816&r2=891817&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java Thu Dec 17 18:17:30 2009
@@ -413,15 +413,17 @@
             }
             outMessage.put(URITemplate.TEMPLATE_PARAMETERS, templatesMap);
         }
-        
+        outMessage.setContent(OperationResourceInfo.class, ori);
+        setPlainOperationNameProperty(outMessage, ori.getMethodToInvoke().getName());
         boolean isForm = types.containsKey(ParameterType.FORM);
         if (bodyIndex != -1 || isForm) {
-            outMessage.setContent(OperationResourceInfo.class, ori);
             outMessage.put("BODY_INDEX", bodyIndex);
             Object body = isForm ? handleForm(types, params) : params[bodyIndex];
             MessageContentsList contents = new MessageContentsList(new Object[]{body});
             outMessage.setContent(List.class, contents);
             outMessage.getInterceptorChain().add(new BodyWriter());
+        } else {
+            setEmptyRequestProperty(outMessage, ori.getHttpMethod());
         }
         
         // execute chain    

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=891817&r1=891816&r2=891817&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Thu Dec 17 18:17:30 2009
@@ -40,6 +40,7 @@
 import javax.ws.rs.core.Response.ResponseBuilder;
 import javax.ws.rs.core.UriBuilder;
 
+
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.helpers.CastUtils;
@@ -559,15 +560,17 @@
     protected Response doChainedInvocation(String httpMethod, 
         MultivaluedMap<String, String> headers, Object body, Class<?> responseClass, Type genericType) {
         
-        Message m = createMessage(httpMethod, headers, getCurrentURI());
+        URI uri = getCurrentURI();
+        Message m = createMessage(httpMethod, headers, uri);
         m.put(URITemplate.TEMPLATE_PARAMETERS, templates);
         if (body != null) {
             MessageContentsList contents = new MessageContentsList(body);
             m.setContent(List.class, contents);
             m.getInterceptorChain().add(new BodyWriter());
-        } else if ("POST".equals(httpMethod)) {
-            m.put("org.apache.cxf.post.empty", "true");
+        } else {
+            setEmptyRequestProperty(m, httpMethod);
         }
+        setPlainOperationNameProperty(m, httpMethod + ":" + uri.toString());
         
         try {
             m.getInterceptorChain().doIntercept(m);

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=891817&r1=891816&r2=891817&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Thu Dec 17 18:17:30 2009
@@ -209,7 +209,7 @@
                                       MultivaluedMap<String, String> values) {
         message.getExchange().put(OperationResourceInfo.class, ori);
         message.put(URITemplate.TEMPLATE_PARAMETERS, values);
-        message.getExchange().put("org.apache.cxf.management.operation.name", 
+        message.getExchange().put("org.apache.cxf.resource.operation.name", 
                                   ori.getMethodToInvoke().getName());
     }
 }

Modified: cxf/trunk/rt/management/src/main/java/org/apache/cxf/management/interceptor/AbstractMessageResponseTimeInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/management/src/main/java/org/apache/cxf/management/interceptor/AbstractMessageResponseTimeInterceptor.java?rev=891817&r1=891816&r2=891817&view=diff
==============================================================================
--- cxf/trunk/rt/management/src/main/java/org/apache/cxf/management/interceptor/AbstractMessageResponseTimeInterceptor.java (original)
+++ cxf/trunk/rt/management/src/main/java/org/apache/cxf/management/interceptor/AbstractMessageResponseTimeInterceptor.java Thu Dec 17 18:17:30 2009
@@ -112,7 +112,7 @@
             String operationName = opInfo == null ? null : "\"" + opInfo.getName().getLocalPart() + "\"";
             
             if (operationName == null) {
-                Object nameProperty = ex.get("org.apache.cxf.management.operation.name");
+                Object nameProperty = ex.get("org.apache.cxf.resource.operation.name");
                 if (nameProperty != null) {
                     operationName = "\"" + nameProperty.toString() + "\"";
                 }

Modified: cxf/trunk/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInInterceptor2Test.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInInterceptor2Test.java?rev=891817&r1=891816&r2=891817&view=diff
==============================================================================
--- cxf/trunk/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInInterceptor2Test.java (original)
+++ cxf/trunk/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInInterceptor2Test.java Thu Dec 17 18:17:30 2009
@@ -170,7 +170,7 @@
     @Override
     protected void setupOperationForMessage() {
         EasyMock.expect(exchange.get(OperationInfo.class)).andReturn(null);
-        EasyMock.expect(exchange.get("org.apache.cxf.management.operation.name"))
+        EasyMock.expect(exchange.get("org.apache.cxf.resource.operation.name"))
             .andReturn(OPERATION_NAME.getLocalPart());
     }
 }

Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=891817&r1=891816&r2=891817&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Thu Dec 17 18:17:30 2009
@@ -39,11 +39,17 @@
 import org.apache.commons.httpclient.methods.PutMethod;
 import org.apache.commons.httpclient.methods.RequestEntity;
 import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.xml.XMLSource;
+import org.apache.cxf.jaxrs.model.OperationResourceInfo;
 import org.apache.cxf.jaxrs.provider.XSLTJaxbProvider;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 
 import org.junit.BeforeClass;
@@ -215,6 +221,16 @@
     }
     
     @Test
+    public void testEmptyPostProxy() throws Exception {
+        JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean(); 
+        bean.setAddress("http://localhost:9080");
+        bean.setResourceClass(BookStore.class);
+        BookStore store = bean.create(BookStore.class);
+        store.emptypost();
+        assertEquals(204, WebClient.client(store).getResponse().getStatus());
+    }
+    
+    @Test
     public void testGetBookByEncodedQuery() throws Exception {
         getAndCompareAsStrings("http://localhost:9080/bookstore/bookquery?"
                                + "urlid=http%3A%2F%2Ftest.com%2Frss%2F123",
@@ -1106,4 +1122,22 @@
         return bos.getOut().toString();        
     }
 
+    @Ignore
+    public class EmptyPostOutInterceptor extends AbstractPhaseInterceptor<Message> {
+                
+        public EmptyPostOutInterceptor() {
+             super(Phase.PRE_MARSHAL);
+            
+        } 
+
+        public void handleMessage(Message message) throws Fault {
+            OperationResourceInfo ori = message.getContent(OperationResourceInfo.class);
+            if (ori != null && ori.getMethodToInvoke().getName().equals("emptypost")) {
+                message.put("org.apache.cxf.post.empty", true);
+            }
+        }
+        
+        
+
+    }
 }