Author: rmannibucau
Date: Wed Jan 16 08:10:37 2013
New Revision: 1433847

URL: http://svn.apache.org/viewvc?rev=1433847&view=rev
Log:
TOMEE-739 resource comparator mapping for rest endpoints

Modified:
    
tomee/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java

Modified: 
tomee/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
URL: 
http://svn.apache.org/viewvc/tomee/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1433847&r1=1433846&r2=1433847&view=diff
==============================================================================
--- 
tomee/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
 (original)
+++ 
tomee/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
 Wed Jan 16 08:10:37 2013
@@ -20,6 +20,7 @@ import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.JAXRSServiceImpl;
+import org.apache.cxf.jaxrs.ext.ResourceComparator;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
@@ -83,6 +84,7 @@ public class CxfRsHttpListener implement
     public static final String PROVIDERS_KEY = CXF_JAXRS_PREFIX + "providers";
     public static final String STATIC_RESOURCE_KEY = CXF_JAXRS_PREFIX + 
"static-resources-list";
     public static final String STATIC_SUB_RESOURCE_RESOLUTION_KEY = 
"staticSubresourceResolution";
+    public static final String RESOURCE_COMPARATOR_KEY = CXF_JAXRS_PREFIX + 
"resourceComparator";
 
     private static final Map<String, String> STATIC_CONTENT_TYPES;
 
@@ -466,6 +468,21 @@ public class CxfRsHttpListener implement
             
factory.setStaticSubresourceResolution("true".equalsIgnoreCase(staticSubresourceResolution));
         }
 
+        // resource comparator
+        final String resourceComparator = 
serviceConfiguration.getProperties().getProperty(RESOURCE_COMPARATOR_KEY);
+        if (resourceComparator != null) {
+            try {
+                ResourceComparator instance = (ResourceComparator) 
ServiceInfos.resolve(services, resourceComparator);
+                if (instance == null) {
+                    instance = (ResourceComparator) 
Thread.currentThread().getContextClassLoader()
+                            .loadClass(resourceComparator).newInstance();
+                }
+                factory.setResourceComparator(instance);
+            } catch (Exception e) {
+                LOGGER.error("Can't create the resource comparator " + 
resourceComparator, e);
+            }
+        }
+
         // static resources
         final String staticResources = 
serviceConfiguration.getProperties().getProperty(STATIC_RESOURCE_KEY);
         if (staticResources != null) {


Reply via email to