Author: cmueller
Date: Mon Jun 20 22:19:31 2011
New Revision: 1137802
URL: http://svn.apache.org/viewvc?rev=1137802&view=rev
Log:
CAMEL-4120: camel-sql - JDBC aggregation repository - Should use ClassResolver
from Camel to load classes
Modified:
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcCamelCodec.java
Modified:
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java?rev=1137802&r1=1137801&r2=1137802&view=diff
==============================================================================
---
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
(original)
+++
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
Mon Jun 20 22:19:31 2011
@@ -23,25 +23,29 @@ import java.io.ObjectStreamClass;
import java.lang.reflect.Proxy;
import java.util.HashMap;
+import org.apache.camel.CamelContext;
+
/**
* This class is copied from the Apache ActiveMQ project.
*/
public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
- private static final ClassLoader FALLBACK_CLASS_LOADER =
ClassLoadingAwareObjectInputStream.class.getClassLoader();
/**
* <p>Maps primitive type names to corresponding class objects.</p>
*/
private static final HashMap<String, Class> PRIM_CLASSES = new
HashMap<String, Class>(8, 1.0F);
+
+ private CamelContext camelContext;
- public ClassLoadingAwareObjectInputStream(InputStream in) throws
IOException {
+ public ClassLoadingAwareObjectInputStream(CamelContext camelContext,
InputStream in) throws IOException {
super(in);
+ this.camelContext = camelContext;
}
@Override
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws
IOException, ClassNotFoundException {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
- return load(classDesc.getName(), cl);
+ return
camelContext.getClassResolver().resolveClass(classDesc.getName(), cl);
}
@Override
@@ -49,7 +53,7 @@ public class ClassLoadingAwareObjectInpu
ClassLoader cl = Thread.currentThread().getContextClassLoader();
Class[] cinterfaces = new Class[interfaces.length];
for (int i = 0; i < interfaces.length; i++) {
- cinterfaces[i] = load(interfaces[i], cl);
+ cinterfaces[i] =
camelContext.getClassResolver().resolveClass(interfaces[i], cl);
}
try {
@@ -59,19 +63,6 @@ public class ClassLoadingAwareObjectInpu
}
}
- private Class load(String className, ClassLoader cl) throws
ClassNotFoundException {
- try {
- return Class.forName(className, false, cl);
- } catch (ClassNotFoundException e) {
- final Class clazz = PRIM_CLASSES.get(className);
- if (clazz != null) {
- return clazz;
- } else {
- return Class.forName(className, false, FALLBACK_CLASS_LOADER);
- }
- }
- }
-
static {
PRIM_CLASSES.put("boolean", boolean.class);
PRIM_CLASSES.put("byte", byte.class);
Modified:
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcCamelCodec.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcCamelCodec.java?rev=1137802&r1=1137801&r2=1137802&view=diff
==============================================================================
---
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcCamelCodec.java
(original)
+++
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcCamelCodec.java
Mon Jun 20 22:19:31 2011
@@ -51,7 +51,7 @@ public final class JdbcCamelCodec {
}
public Exchange unmarshallExchange(CamelContext camelContext, byte[]
buffer) throws IOException, ClassNotFoundException {
- DefaultExchangeHolder pe = decode(buffer);
+ DefaultExchangeHolder pe = decode(camelContext, buffer);
Exchange answer = new DefaultExchange(camelContext);
DefaultExchangeHolder.unmarshal(answer, pe);
// restore the from endpoint
@@ -74,9 +74,9 @@ public final class JdbcCamelCodec {
return data;
}
- private DefaultExchangeHolder decode(byte[] dataIn) throws IOException,
ClassNotFoundException {
+ private DefaultExchangeHolder decode(CamelContext camelContext, byte[]
dataIn) throws IOException, ClassNotFoundException {
ByteArrayInputStream bytesIn = new ByteArrayInputStream(dataIn);
- ObjectInputStream objectIn = new
ClassLoadingAwareObjectInputStream(bytesIn);
+ ObjectInputStream objectIn = new
ClassLoadingAwareObjectInputStream(camelContext, bytesIn);
Object obj = objectIn.readObject();
return (DefaultExchangeHolder) obj;
}