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
}