Author: davsclaus
Date: Sun Apr 15 09:55:18 2012
New Revision: 1326294

URL: http://svn.apache.org/viewvc?rev=1326294&view=rev
Log:
CAMEL-5173: Loading classes moved from type converter to component to avoid 
having side effects with too broad type converter. This applies for the CxfRs 
component.

Modified:
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerProtocalHeaderTest.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java?rev=1326294&r1=1326293&r2=1326294&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
 Sun Apr 15 09:55:18 2012
@@ -18,9 +18,7 @@ package org.apache.camel.component.cxf.c
 
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 import javax.ws.rs.core.Response;
 import javax.xml.namespace.QName;
 import javax.xml.soap.SOAPMessage;
@@ -31,7 +29,6 @@ import org.apache.camel.FallbackConverte
 import org.apache.camel.TypeConverter;
 import org.apache.camel.component.cxf.DataFormat;
 import org.apache.camel.spi.TypeConverterRegistry;
-import org.apache.cxf.common.classloader.ClassLoaderUtils;
 import org.apache.cxf.message.MessageContentsList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,21 +57,6 @@ public final class CxfConverter {
     }
     
     @Converter
-    public static List<Class<?>> toClassesList(final String[] classNames) 
throws ClassNotFoundException {
-        List<Class<?>> answer = new ArrayList<Class<?>>();
-        for (String className : classNames) {
-            answer.add(ClassLoaderUtils.loadClass(className.trim(), 
CxfConverter.class));
-        }
-        return answer;
-    }
-    
-    @Converter
-    public static List<Class<?>> toClassList(String classeString) throws 
ClassNotFoundException {
-        String[] classNames = classeString.split(",|;");
-        return toClassesList(classNames);        
-    }
-    
-    @Converter
     public static QName toQName(String qname) {
         return QName.valueOf(qname);
     }

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java?rev=1326294&r1=1326293&r2=1326294&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
 Sun Apr 15 09:55:18 2012
@@ -17,6 +17,7 @@
 package org.apache.camel.component.cxf.jaxrs;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
@@ -26,6 +27,7 @@ import org.apache.camel.component.cxf.co
 import org.apache.camel.impl.HeaderFilterStrategyComponent;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.CastUtils;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
 
 /**
@@ -71,6 +73,21 @@ public class CxfRsComponent extends Head
             // endpoint URI does not specify a bean
             answer = new CxfRsEndpoint(remaining, this);
         }
+
+        String resourceClass = getAndRemoveParameter(parameters, 
"resourceClass", String.class);
+        if (resourceClass != null) {
+            Class<?> clazz = 
getCamelContext().getClassResolver().resolveMandatoryClass(resourceClass);
+            answer.addResourceClass(clazz);
+        }
+
+        String resourceClasses = getAndRemoveParameter(parameters, 
"resourceClasses", String.class);
+        Iterator it = ObjectHelper.createIterator(resourceClasses);
+        while (it.hasNext()) {
+            String name = (String) it.next();
+            Class<?> clazz = 
getCamelContext().getClassResolver().resolveMandatoryClass(name);
+            answer.addResourceClass(clazz);
+        }
+
         setProperties(answer, parameters);
         Map<String, String> params = CastUtils.cast(parameters);
         answer.setParameters(params);

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java?rev=1326294&r1=1326293&r2=1326294&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
 Sun Apr 15 09:55:18 2012
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.component.cxf.jaxrs;
 
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -150,7 +150,8 @@ public class CxfRsEndpoint extends Defau
         if (address != null) {
             cfb.setAddress(address);
         }
-        if (getResourceClasses() != null) {
+        if (getResourceClasses() != null && !getResourceClasses().isEmpty()) {
+            // TODO: a bit odd that this endpoint supports multiple resource 
classes, but cfb only supports one class
             cfb.setResourceClass(getResourceClasses().get(0));
         }
         if (isLoggingFeatureEnabled()) {
@@ -219,16 +220,15 @@ public class CxfRsEndpoint extends Defau
         return resourceClasses;
     }
 
-    public void setResourceClasses(List<Class<?>> classes) {
-        resourceClasses = classes;
+    public void addResourceClass(Class<?> resourceClass) {
+        if (resourceClasses == null) {
+            resourceClasses = new ArrayList<Class<?>>();
+        }
+        resourceClasses.add(resourceClass);
     }
 
-    public void setResourceClasses(Class<?>... classes) {
-        setResourceClasses(Arrays.asList(classes));
-    }
-    
-    public void setResourceClass(Class<?> clazz) {
-        setResourceClasses(clazz);
+    public void setResourceClasses(List<Class<?>> resourceClasses) {
+        this.resourceClasses = resourceClasses;
     }
 
     public void setAddress(String address) {

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerProtocalHeaderTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerProtocalHeaderTest.java?rev=1326294&r1=1326293&r2=1326294&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerProtocalHeaderTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerProtocalHeaderTest.java
 Sun Apr 15 09:55:18 2012
@@ -51,7 +51,6 @@ public class CxfProducerProtocalHeaderTe
 
                         public void process(Exchange exchange) throws 
Exception {
                             assertNull("We should not get this header", 
exchange.getIn().getHeader("CamelCxfTest"));
-                            System.out.println("header " + 
exchange.getIn().getHeader("SOAPAction"));
                             assertNull("We should not get this header", 
exchange.getIn().getHeader("Transfer-Encoding"));
                             //check the headers
                             exchange.getOut().setHeader("Content-Type", 
"text/xml");

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java?rev=1326294&r1=1326293&r2=1326294&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java
 Sun Apr 15 09:55:18 2012
@@ -20,7 +20,6 @@ import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
-
 import javax.ws.rs.core.Response;
 
 import org.apache.camel.CamelContext;
@@ -34,18 +33,6 @@ import org.junit.Test;
 public class ConverterTest extends Assert {
     
     @Test
-    public void testToClassesList() throws Exception {
-        String classString = "java.lang.String, "
-            + "org.apache.camel.component.cxf.converter.ConverterTest ;"
-            + "java.lang.StringBuilder";
-        List<Class<?>> classList = CxfConverter.toClassList(classString);
-        assertEquals("Get the wrong number of classes", classList.size(), 3);
-        assertEquals("Get the wrong the class", classList.get(0), 
String.class);
-        assertEquals("Get the wrong the class", classList.get(1), 
ConverterTest.class);
-        assertEquals("Get the wrong the class", classList.get(2), 
StringBuilder.class);
-    }
-    
-    @Test
     public void testToArray() throws Exception {
         List<String> testList = new ArrayList<String>();
         testList.add("string 1");
@@ -79,9 +66,6 @@ public class ConverterTest extends Asser
         result = CxfConverter.toInputStream(response, exchange);
         assertTrue("We should get the inputStream here ", result instanceof 
ByteArrayInputStream);
         EasyMock.verify(response);
-        
     }
-    
-    
 
 }

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java?rev=1326294&r1=1326293&r2=1326294&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
 Sun Apr 15 09:55:18 2012
@@ -29,7 +29,7 @@ public class CxfRsEndpointTest extends C
         String endpointUri = "cxfrs://http://localhost:"; + CTX + ""
             + "?loggingFeatureEnabled=true&loggingSizeLimit=200"
             + 
"&resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerService,"
-            + 
"java.lang.String;org.apache.camel.component.cxf.jaxrs.testbean.Order";
+            + 
"java.lang.String,org.apache.camel.component.cxf.jaxrs.testbean.Order";
             
         CxfRsComponent component = new CxfRsComponent(context);
         CxfRsEndpoint endpoint = 
(CxfRsEndpoint)component.createEndpoint(endpointUri);
@@ -67,7 +67,6 @@ public class CxfRsEndpointTest extends C
         assertEquals("Get a wrong address ", endpointUri, 
endpoint.getEndpointUri());
         assertEquals("Get a wrong size of resouces classes", 1, 
endpoint.getResourceClasses().size());
         assertEquals("Get a wrong resources class", CustomerService.class, 
endpoint.getResourceClasses().get(0));
-        
     }
 
 }

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java?rev=1326294&r1=1326293&r2=1326294&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
 Sun Apr 15 09:55:18 2012
@@ -96,7 +96,6 @@ public class CxfRsProducerTest extends C
         assertEquals("Get a wrong customer id ", 
String.valueOf(response.getId()), "123");
         assertEquals("Get a wrong customer name", response.getName(), "John");
         assertEquals("Get a wrong response code", 200, 
exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
-        System.out.println(exchange.getOut().getHeaders());
         assertEquals("Get a wrong header value", "value", 
exchange.getOut().getHeader("key"));
         // END SNIPPET: ProxyExample     
     }


Reply via email to