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 2013/05/07 17:52:34 UTC

svn commit: r1479952 - in /cxf/trunk/rt/frontend/jaxrs/src: main/java/org/apache/cxf/jaxrs/model/OperationResourceInfoComparator.java test/java/org/apache/cxf/jaxrs/model/OperationResourceInfoTest.java

Author: sergeyb
Date: Tue May  7 15:52:34 2013
New Revision: 1479952

URL: http://svn.apache.org/r1479952
Log:
Custom ResourceComparators can extend OperationResourceInfoComparator so the old constructor needs to be restored

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/OperationResourceInfoComparator.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/OperationResourceInfoTest.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/OperationResourceInfoComparator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/OperationResourceInfoComparator.java?rev=1479952&r1=1479951&r2=1479952&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/OperationResourceInfoComparator.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/OperationResourceInfoComparator.java Tue May  7 15:52:34 2013
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.jaxrs.model;
 
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
@@ -36,14 +37,10 @@ public class OperationResourceInfoCompar
     private boolean getMethod;
     private Message message;
     private ResourceComparator rc;  
-    private MediaType contentType;
-    private List<MediaType> acceptTypes;
+    private MediaType contentType = MediaType.WILDCARD_TYPE;
+    private List<MediaType> acceptTypes = Collections.singletonList(MediaType.WILDCARD_TYPE);
 
-    public OperationResourceInfoComparator(Message m, 
-                                           String httpMethod,
-                                           boolean getMethod,
-                                           MediaType contentType,
-                                           List<MediaType> acceptTypes) {
+    public OperationResourceInfoComparator(Message m, String method) {
         this.message = m;
         if (message != null) {
             Object o = m.getExchange().get(Endpoint.class).get("org.apache.cxf.jaxrs.comparator");
@@ -51,9 +48,17 @@ public class OperationResourceInfoCompar
                 rc = (ResourceComparator)o;
             }
         }
+        this.httpMethod = method;
+    }
+    
+    public OperationResourceInfoComparator(Message m, 
+                                           String httpMethod,
+                                           boolean getMethod,
+                                           MediaType contentType,
+                                           List<MediaType> acceptTypes) {
+        this(m, httpMethod);
         this.contentType = contentType;
         this.acceptTypes = acceptTypes;
-        this.httpMethod = httpMethod;
         this.getMethod = getMethod;
     }
     
@@ -85,7 +90,6 @@ public class OperationResourceInfoCompar
         }
         
         if (result == 0 && !getMethod) {
-        
             result = JAXRSUtils.compareSortedConsumesMediaTypes(
                           e1.getConsumeTypes(), 
                           e2.getConsumeTypes(),

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/OperationResourceInfoTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/OperationResourceInfoTest.java?rev=1479952&r1=1479951&r2=1479952&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/OperationResourceInfoTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/OperationResourceInfoTest.java Tue May  7 15:52:34 2013
@@ -19,12 +19,20 @@
 
 package org.apache.cxf.jaxrs.model;
 
+import java.util.Collections;
 import java.util.List;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.ExchangeImpl;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
+import org.easymock.EasyMock;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -85,4 +93,60 @@ public class OperationResourceInfoTest e
                      "text/xml", ctypes.get(0).toString());
     }
 
+    @Test
+    public void testComparator1() throws Exception {
+        OperationResourceInfo ori1 = new OperationResourceInfo(
+                                                               TestClass.class.getMethod("doIt", new Class[]{}), 
+                                                               new ClassResourceInfo(TestClass.class));
+        ori1.setURITemplate(new URITemplate("/"));
+        
+        OperationResourceInfo ori2 = new OperationResourceInfo(
+                                                               TestClass.class.getMethod("doThat", new Class[]{}), 
+                                                               new ClassResourceInfo(TestClass.class));
+        
+        ori2.setURITemplate(new URITemplate("/"));
+        
+        OperationResourceInfoComparator cmp = new OperationResourceInfoComparator(null, null);
+        
+        
+        int result = cmp.compare(ori1,  ori2);
+        assertEquals(0, result);
+    }
+    
+    @Test
+    public void testComparator2() throws Exception {
+        Message m = createMessage();
+        
+        OperationResourceInfo ori1 = new OperationResourceInfo(
+                                                               TestClass.class.getMethod("doIt", new Class[]{}), 
+                                                               new ClassResourceInfo(TestClass.class));
+        ori1.setURITemplate(new URITemplate("/"));
+        
+        OperationResourceInfo ori2 = new OperationResourceInfo(
+                                                               TestClass.class.getMethod("doThat", new Class[]{}), 
+                                                               new ClassResourceInfo(TestClass.class));
+        
+        ori2.setURITemplate(new URITemplate("/"));
+        
+        OperationResourceInfoComparator cmp = new OperationResourceInfoComparator(m, "POST", false,
+            MediaType.WILDCARD_TYPE, Collections.singletonList(MediaType.WILDCARD_TYPE));
+        
+        
+        int result = cmp.compare(ori1,  ori2);
+        assertEquals(0, result);
+    }
+    
+    
+    private Message createMessage() {
+        Message m = new MessageImpl();
+        Exchange e = new ExchangeImpl();
+        m.setExchange(e);
+        e.setInMessage(m);
+        Endpoint endpoint = EasyMock.createMock(Endpoint.class);
+        endpoint.get("org.apache.cxf.jaxrs.comparator");
+        EasyMock.expectLastCall().andReturn(null);
+        EasyMock.replay(endpoint);
+        e.put(Endpoint.class, endpoint);
+        return m;
+    }
 }