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;
     }


Reply via email to