You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/02/08 18:23:51 UTC
[1/6] camel git commit: CAMEL-9576: fix deserializing proxies with
mixed JDK & non-JDK interfaces
Repository: camel
Updated Branches:
refs/heads/camel-2.15.x 66801bf05 -> fadf8d472
refs/heads/camel-2.16.x 0ea3ce9a1 -> 0360a235b
refs/heads/master 06ee8182d -> 940c88ee9
CAMEL-9576: fix deserializing proxies with mixed JDK & non-JDK interfaces
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5f55d0da
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5f55d0da
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5f55d0da
Branch: refs/heads/master
Commit: 5f55d0da6772af7425116ecb1caddbe50978fa11
Parents: 06ee818
Author: Lien Deboosere <le...@melexis.com>
Authored: Mon Feb 8 15:29:47 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 8 17:46:56 2016 +0100
----------------------------------------------------------------------
.../ClassLoadingAwareObjectInputStream.java | 71 +++++++++++++--
.../ClassLoadingAwareObjectInputStreamTest.java | 93 ++++++++++++++++++++
2 files changed, 157 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/5f55d0da/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
index 12535f3..80a1278 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
@@ -21,38 +21,95 @@ import java.io.InputStream;
import java.io.ObjectInputStream;
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.
*/
+@SuppressWarnings("rawtypes")
public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
private CamelContext camelContext;
+ private static final ClassLoader FALLBACK_CLASS_LOADER =
+ ClassLoadingAwareObjectInputStream.class.getClassLoader();
+
+ /**
+ * Maps primitive type names to corresponding class objects.
+ */
+ private static final HashMap<String, Class> primClasses = new HashMap<String, Class>(8, 1.0F);
+
+ private final ClassLoader inLoader;
+
+ public ClassLoadingAwareObjectInputStream(InputStream in) throws IOException {
+ super(in);
+ inLoader = in.getClass().getClassLoader();
+ }
+
public ClassLoadingAwareObjectInputStream(CamelContext camelContext, InputStream in) throws IOException {
super(in);
- this.camelContext = camelContext;
+ inLoader = camelContext.getApplicationContextClassLoader();
}
- @Override
+
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
- return camelContext.getClassResolver().resolveClass(classDesc.getName());
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ return load(classDesc.getName(), cl, inLoader);
}
- @Override
protected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException {
- Class<?>[] cinterfaces = new Class[interfaces.length];
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ Class[] cinterfaces = new Class[interfaces.length];
for (int i = 0; i < interfaces.length; i++) {
- cinterfaces[i] = camelContext.getClassResolver().resolveClass(interfaces[i]);
+ cinterfaces[i] = load(interfaces[i], cl);
}
try {
- return Proxy.getProxyClass(cinterfaces[0].getClassLoader(), cinterfaces);
+ return Proxy.getProxyClass(cl, cinterfaces);
} catch (IllegalArgumentException e) {
+ try {
+ return Proxy.getProxyClass(inLoader, cinterfaces);
+ } catch (IllegalArgumentException e1) {
+ // ignore
+ }
+ try {
+ return Proxy.getProxyClass(FALLBACK_CLASS_LOADER, cinterfaces);
+ } catch (IllegalArgumentException e2) {
+ // ignore
+ }
+
throw new ClassNotFoundException(null, e);
}
}
+ private Class<?> load(String className, ClassLoader... cl) throws ClassNotFoundException {
+ for (ClassLoader loader : cl) {
+ try {
+ return Class.forName(className, false, loader);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ }
+ }
+ // fallback
+ final Class<?> clazz = (Class<?>) primClasses.get(className);
+ if (clazz != null) {
+ return clazz;
+ } else {
+ return Class.forName(className, false, FALLBACK_CLASS_LOADER);
+ }
+ }
+
+ static {
+ primClasses.put("boolean", boolean.class);
+ primClasses.put("byte", byte.class);
+ primClasses.put("char", char.class);
+ primClasses.put("short", short.class);
+ primClasses.put("int", int.class);
+ primClasses.put("long", long.class);
+ primClasses.put("float", float.class);
+ primClasses.put("double", double.class);
+ primClasses.put("void", void.class);
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/5f55d0da/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
new file mode 100644
index 0000000..e0695ac
--- /dev/null
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.processor.aggregate.jdbc;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultExchangeHolder;
+import org.junit.Test;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static junit.framework.Assert.assertEquals;
+
+public class ClassLoadingAwareObjectInputStreamTest {
+
+ @Test
+ public void deserialize() throws IOException, ClassNotFoundException {
+ CamelContext context = new DefaultCamelContext();
+
+ final DefaultExchange exchange = new DefaultExchange(context);
+
+ final List<MyObject> objects = new ArrayList<>();
+ final MyObject o = new MyObject("leb", "hello".getBytes());
+ objects.add(o);
+
+ exchange.getIn().setBody(objects);
+ final DefaultExchangeHolder deh = DefaultExchangeHolder.marshal(exchange);
+
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(deh);
+ oos.flush();
+ final byte[] serialized = baos.toByteArray();
+
+ final ObjectInputStream bis = new ClassLoadingAwareObjectInputStream(context, new ByteArrayInputStream(serialized));
+ final DefaultExchangeHolder deserialized = (DefaultExchangeHolder) bis.readObject();
+
+ final DefaultExchange exchange2 = new DefaultExchange(context);
+ DefaultExchangeHolder.unmarshal(exchange2, deserialized);
+
+ List<MyObject> receivedObjects = exchange2.getIn().getBody(List.class);
+ assertEquals(1, receivedObjects.size());
+ assertEquals(o, receivedObjects.get(0));
+ }
+
+}
+
+
+class MyObject implements Serializable {
+ final String name;
+ final byte[] content;
+
+ public MyObject(String name, byte[] content) {
+ this.name = name;
+ this.content = content;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ MyObject myObject = (MyObject) o;
+
+ if (name != null ? !name.equals(myObject.name) : myObject.name != null) return false;
+ return Arrays.equals(content, myObject.content);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + Arrays.hashCode(content);
+ return result;
+ }
+}
[3/6] camel git commit: CAMEL-9576: fix deserializing proxies with
mixed JDK & non-JDK interfaces
Posted by da...@apache.org.
CAMEL-9576: fix deserializing proxies with mixed JDK & non-JDK interfaces
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9bcf950f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9bcf950f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9bcf950f
Branch: refs/heads/camel-2.16.x
Commit: 9bcf950fd41a3afff24816726f174b2115c48842
Parents: 0ea3ce9
Author: Lien Deboosere <le...@melexis.com>
Authored: Mon Feb 8 15:29:47 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 8 18:23:13 2016 +0100
----------------------------------------------------------------------
.../ClassLoadingAwareObjectInputStream.java | 71 +++++++++++++--
.../ClassLoadingAwareObjectInputStreamTest.java | 93 ++++++++++++++++++++
2 files changed, 157 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/9bcf950f/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
index 12535f3..80a1278 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
@@ -21,38 +21,95 @@ import java.io.InputStream;
import java.io.ObjectInputStream;
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.
*/
+@SuppressWarnings("rawtypes")
public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
private CamelContext camelContext;
+ private static final ClassLoader FALLBACK_CLASS_LOADER =
+ ClassLoadingAwareObjectInputStream.class.getClassLoader();
+
+ /**
+ * Maps primitive type names to corresponding class objects.
+ */
+ private static final HashMap<String, Class> primClasses = new HashMap<String, Class>(8, 1.0F);
+
+ private final ClassLoader inLoader;
+
+ public ClassLoadingAwareObjectInputStream(InputStream in) throws IOException {
+ super(in);
+ inLoader = in.getClass().getClassLoader();
+ }
+
public ClassLoadingAwareObjectInputStream(CamelContext camelContext, InputStream in) throws IOException {
super(in);
- this.camelContext = camelContext;
+ inLoader = camelContext.getApplicationContextClassLoader();
}
- @Override
+
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
- return camelContext.getClassResolver().resolveClass(classDesc.getName());
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ return load(classDesc.getName(), cl, inLoader);
}
- @Override
protected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException {
- Class<?>[] cinterfaces = new Class[interfaces.length];
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ Class[] cinterfaces = new Class[interfaces.length];
for (int i = 0; i < interfaces.length; i++) {
- cinterfaces[i] = camelContext.getClassResolver().resolveClass(interfaces[i]);
+ cinterfaces[i] = load(interfaces[i], cl);
}
try {
- return Proxy.getProxyClass(cinterfaces[0].getClassLoader(), cinterfaces);
+ return Proxy.getProxyClass(cl, cinterfaces);
} catch (IllegalArgumentException e) {
+ try {
+ return Proxy.getProxyClass(inLoader, cinterfaces);
+ } catch (IllegalArgumentException e1) {
+ // ignore
+ }
+ try {
+ return Proxy.getProxyClass(FALLBACK_CLASS_LOADER, cinterfaces);
+ } catch (IllegalArgumentException e2) {
+ // ignore
+ }
+
throw new ClassNotFoundException(null, e);
}
}
+ private Class<?> load(String className, ClassLoader... cl) throws ClassNotFoundException {
+ for (ClassLoader loader : cl) {
+ try {
+ return Class.forName(className, false, loader);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ }
+ }
+ // fallback
+ final Class<?> clazz = (Class<?>) primClasses.get(className);
+ if (clazz != null) {
+ return clazz;
+ } else {
+ return Class.forName(className, false, FALLBACK_CLASS_LOADER);
+ }
+ }
+
+ static {
+ primClasses.put("boolean", boolean.class);
+ primClasses.put("byte", byte.class);
+ primClasses.put("char", char.class);
+ primClasses.put("short", short.class);
+ primClasses.put("int", int.class);
+ primClasses.put("long", long.class);
+ primClasses.put("float", float.class);
+ primClasses.put("double", double.class);
+ primClasses.put("void", void.class);
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/9bcf950f/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
new file mode 100644
index 0000000..e0695ac
--- /dev/null
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.processor.aggregate.jdbc;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultExchangeHolder;
+import org.junit.Test;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static junit.framework.Assert.assertEquals;
+
+public class ClassLoadingAwareObjectInputStreamTest {
+
+ @Test
+ public void deserialize() throws IOException, ClassNotFoundException {
+ CamelContext context = new DefaultCamelContext();
+
+ final DefaultExchange exchange = new DefaultExchange(context);
+
+ final List<MyObject> objects = new ArrayList<>();
+ final MyObject o = new MyObject("leb", "hello".getBytes());
+ objects.add(o);
+
+ exchange.getIn().setBody(objects);
+ final DefaultExchangeHolder deh = DefaultExchangeHolder.marshal(exchange);
+
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(deh);
+ oos.flush();
+ final byte[] serialized = baos.toByteArray();
+
+ final ObjectInputStream bis = new ClassLoadingAwareObjectInputStream(context, new ByteArrayInputStream(serialized));
+ final DefaultExchangeHolder deserialized = (DefaultExchangeHolder) bis.readObject();
+
+ final DefaultExchange exchange2 = new DefaultExchange(context);
+ DefaultExchangeHolder.unmarshal(exchange2, deserialized);
+
+ List<MyObject> receivedObjects = exchange2.getIn().getBody(List.class);
+ assertEquals(1, receivedObjects.size());
+ assertEquals(o, receivedObjects.get(0));
+ }
+
+}
+
+
+class MyObject implements Serializable {
+ final String name;
+ final byte[] content;
+
+ public MyObject(String name, byte[] content) {
+ this.name = name;
+ this.content = content;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ MyObject myObject = (MyObject) o;
+
+ if (name != null ? !name.equals(myObject.name) : myObject.name != null) return false;
+ return Arrays.equals(content, myObject.content);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + Arrays.hashCode(content);
+ return result;
+ }
+}
[5/6] camel git commit: CAMEL-9576: fix deserializing proxies with
mixed JDK & non-JDK interfaces
Posted by da...@apache.org.
CAMEL-9576: fix deserializing proxies with mixed JDK & non-JDK interfaces
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/148cac17
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/148cac17
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/148cac17
Branch: refs/heads/camel-2.15.x
Commit: 148cac176a8a9180a901bb797a84d975e8edaf4c
Parents: 66801bf
Author: Lien Deboosere <le...@melexis.com>
Authored: Mon Feb 8 15:29:47 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 8 18:23:35 2016 +0100
----------------------------------------------------------------------
.../ClassLoadingAwareObjectInputStream.java | 71 +++++++++++++--
.../ClassLoadingAwareObjectInputStreamTest.java | 93 ++++++++++++++++++++
2 files changed, 157 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/148cac17/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
index 12535f3..80a1278 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
@@ -21,38 +21,95 @@ import java.io.InputStream;
import java.io.ObjectInputStream;
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.
*/
+@SuppressWarnings("rawtypes")
public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
private CamelContext camelContext;
+ private static final ClassLoader FALLBACK_CLASS_LOADER =
+ ClassLoadingAwareObjectInputStream.class.getClassLoader();
+
+ /**
+ * Maps primitive type names to corresponding class objects.
+ */
+ private static final HashMap<String, Class> primClasses = new HashMap<String, Class>(8, 1.0F);
+
+ private final ClassLoader inLoader;
+
+ public ClassLoadingAwareObjectInputStream(InputStream in) throws IOException {
+ super(in);
+ inLoader = in.getClass().getClassLoader();
+ }
+
public ClassLoadingAwareObjectInputStream(CamelContext camelContext, InputStream in) throws IOException {
super(in);
- this.camelContext = camelContext;
+ inLoader = camelContext.getApplicationContextClassLoader();
}
- @Override
+
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
- return camelContext.getClassResolver().resolveClass(classDesc.getName());
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ return load(classDesc.getName(), cl, inLoader);
}
- @Override
protected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException {
- Class<?>[] cinterfaces = new Class[interfaces.length];
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ Class[] cinterfaces = new Class[interfaces.length];
for (int i = 0; i < interfaces.length; i++) {
- cinterfaces[i] = camelContext.getClassResolver().resolveClass(interfaces[i]);
+ cinterfaces[i] = load(interfaces[i], cl);
}
try {
- return Proxy.getProxyClass(cinterfaces[0].getClassLoader(), cinterfaces);
+ return Proxy.getProxyClass(cl, cinterfaces);
} catch (IllegalArgumentException e) {
+ try {
+ return Proxy.getProxyClass(inLoader, cinterfaces);
+ } catch (IllegalArgumentException e1) {
+ // ignore
+ }
+ try {
+ return Proxy.getProxyClass(FALLBACK_CLASS_LOADER, cinterfaces);
+ } catch (IllegalArgumentException e2) {
+ // ignore
+ }
+
throw new ClassNotFoundException(null, e);
}
}
+ private Class<?> load(String className, ClassLoader... cl) throws ClassNotFoundException {
+ for (ClassLoader loader : cl) {
+ try {
+ return Class.forName(className, false, loader);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ }
+ }
+ // fallback
+ final Class<?> clazz = (Class<?>) primClasses.get(className);
+ if (clazz != null) {
+ return clazz;
+ } else {
+ return Class.forName(className, false, FALLBACK_CLASS_LOADER);
+ }
+ }
+
+ static {
+ primClasses.put("boolean", boolean.class);
+ primClasses.put("byte", byte.class);
+ primClasses.put("char", char.class);
+ primClasses.put("short", short.class);
+ primClasses.put("int", int.class);
+ primClasses.put("long", long.class);
+ primClasses.put("float", float.class);
+ primClasses.put("double", double.class);
+ primClasses.put("void", void.class);
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/148cac17/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
new file mode 100644
index 0000000..e0695ac
--- /dev/null
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.processor.aggregate.jdbc;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultExchangeHolder;
+import org.junit.Test;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static junit.framework.Assert.assertEquals;
+
+public class ClassLoadingAwareObjectInputStreamTest {
+
+ @Test
+ public void deserialize() throws IOException, ClassNotFoundException {
+ CamelContext context = new DefaultCamelContext();
+
+ final DefaultExchange exchange = new DefaultExchange(context);
+
+ final List<MyObject> objects = new ArrayList<>();
+ final MyObject o = new MyObject("leb", "hello".getBytes());
+ objects.add(o);
+
+ exchange.getIn().setBody(objects);
+ final DefaultExchangeHolder deh = DefaultExchangeHolder.marshal(exchange);
+
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(deh);
+ oos.flush();
+ final byte[] serialized = baos.toByteArray();
+
+ final ObjectInputStream bis = new ClassLoadingAwareObjectInputStream(context, new ByteArrayInputStream(serialized));
+ final DefaultExchangeHolder deserialized = (DefaultExchangeHolder) bis.readObject();
+
+ final DefaultExchange exchange2 = new DefaultExchange(context);
+ DefaultExchangeHolder.unmarshal(exchange2, deserialized);
+
+ List<MyObject> receivedObjects = exchange2.getIn().getBody(List.class);
+ assertEquals(1, receivedObjects.size());
+ assertEquals(o, receivedObjects.get(0));
+ }
+
+}
+
+
+class MyObject implements Serializable {
+ final String name;
+ final byte[] content;
+
+ public MyObject(String name, byte[] content) {
+ this.name = name;
+ this.content = content;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ MyObject myObject = (MyObject) o;
+
+ if (name != null ? !name.equals(myObject.name) : myObject.name != null) return false;
+ return Arrays.equals(content, myObject.content);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + Arrays.hashCode(content);
+ return result;
+ }
+}
[4/6] camel git commit: Fixed CS. This closes #830
Posted by da...@apache.org.
Fixed CS. This closes #830
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0360a235
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0360a235
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0360a235
Branch: refs/heads/camel-2.16.x
Commit: 0360a235b4139ec39810b83efda7b211ae680956
Parents: 9bcf950
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Feb 8 17:52:31 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 8 18:23:19 2016 +0100
----------------------------------------------------------------------
.../ClassLoadingAwareObjectInputStream.java | 29 +++++------
.../ClassLoadingAwareObjectInputStreamTest.java | 53 ++++++++++++--------
2 files changed, 45 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/0360a235/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
index 80a1278..6b8493c 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
@@ -31,16 +31,14 @@ import org.apache.camel.CamelContext;
@SuppressWarnings("rawtypes")
public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
- private CamelContext camelContext;
-
- private static final ClassLoader FALLBACK_CLASS_LOADER =
- ClassLoadingAwareObjectInputStream.class.getClassLoader();
+ private static final ClassLoader FALLBACK_CLASS_LOADER = ClassLoadingAwareObjectInputStream.class.getClassLoader();
/**
* Maps primitive type names to corresponding class objects.
*/
- private static final HashMap<String, Class> primClasses = new HashMap<String, Class>(8, 1.0F);
+ private static final HashMap<String, Class> PRIM_CLASSES = new HashMap<String, Class>(8, 1.0F);
+ private CamelContext camelContext;
private final ClassLoader inLoader;
public ClassLoadingAwareObjectInputStream(InputStream in) throws IOException {
@@ -53,7 +51,6 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
inLoader = camelContext.getApplicationContextClassLoader();
}
-
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
return load(classDesc.getName(), cl, inLoader);
@@ -93,7 +90,7 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
}
}
// fallback
- final Class<?> clazz = (Class<?>) primClasses.get(className);
+ final Class<?> clazz = (Class<?>) PRIM_CLASSES.get(className);
if (clazz != null) {
return clazz;
} else {
@@ -102,14 +99,14 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
}
static {
- primClasses.put("boolean", boolean.class);
- primClasses.put("byte", byte.class);
- primClasses.put("char", char.class);
- primClasses.put("short", short.class);
- primClasses.put("int", int.class);
- primClasses.put("long", long.class);
- primClasses.put("float", float.class);
- primClasses.put("double", double.class);
- primClasses.put("void", void.class);
+ PRIM_CLASSES.put("boolean", boolean.class);
+ PRIM_CLASSES.put("byte", byte.class);
+ PRIM_CLASSES.put("char", char.class);
+ PRIM_CLASSES.put("short", short.class);
+ PRIM_CLASSES.put("int", int.class);
+ PRIM_CLASSES.put("long", long.class);
+ PRIM_CLASSES.put("float", float.class);
+ PRIM_CLASSES.put("double", double.class);
+ PRIM_CLASSES.put("void", void.class);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/0360a235/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
index e0695ac..a7247ba 100644
--- a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
@@ -16,19 +16,24 @@
*/
package org.apache.camel.processor.aggregate.jdbc;
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.impl.DefaultExchangeHolder;
-import org.junit.Test;
-
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static junit.framework.Assert.assertEquals;
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultExchangeHolder;
+import org.junit.Test;
+
public class ClassLoadingAwareObjectInputStreamTest {
@Test
@@ -69,25 +74,31 @@ class MyObject implements Serializable {
final byte[] content;
public MyObject(String name, byte[] content) {
- this.name = name;
- this.content = content;
+ this.name = name;
+ this.content = content;
}
-
+
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- MyObject myObject = (MyObject) o;
-
- if (name != null ? !name.equals(myObject.name) : myObject.name != null) return false;
- return Arrays.equals(content, myObject.content);
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ MyObject myObject = (MyObject) o;
+
+ if (name != null ? !name.equals(myObject.name) : myObject.name != null) {
+ return false;
+ }
+ return Arrays.equals(content, myObject.content);
}
-
+
@Override
public int hashCode() {
- int result = name != null ? name.hashCode() : 0;
- result = 31 * result + Arrays.hashCode(content);
- return result;
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + Arrays.hashCode(content);
+ return result;
}
}
[2/6] camel git commit: Fixed CS. This closes #830
Posted by da...@apache.org.
Fixed CS. This closes #830
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/940c88ee
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/940c88ee
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/940c88ee
Branch: refs/heads/master
Commit: 940c88ee91aee5b5f9b90d610fc283ff39315fb3
Parents: 5f55d0d
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Feb 8 17:52:31 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 8 17:52:31 2016 +0100
----------------------------------------------------------------------
.../ClassLoadingAwareObjectInputStream.java | 29 +++++------
.../ClassLoadingAwareObjectInputStreamTest.java | 53 ++++++++++++--------
2 files changed, 45 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/940c88ee/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
index 80a1278..6b8493c 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
@@ -31,16 +31,14 @@ import org.apache.camel.CamelContext;
@SuppressWarnings("rawtypes")
public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
- private CamelContext camelContext;
-
- private static final ClassLoader FALLBACK_CLASS_LOADER =
- ClassLoadingAwareObjectInputStream.class.getClassLoader();
+ private static final ClassLoader FALLBACK_CLASS_LOADER = ClassLoadingAwareObjectInputStream.class.getClassLoader();
/**
* Maps primitive type names to corresponding class objects.
*/
- private static final HashMap<String, Class> primClasses = new HashMap<String, Class>(8, 1.0F);
+ private static final HashMap<String, Class> PRIM_CLASSES = new HashMap<String, Class>(8, 1.0F);
+ private CamelContext camelContext;
private final ClassLoader inLoader;
public ClassLoadingAwareObjectInputStream(InputStream in) throws IOException {
@@ -53,7 +51,6 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
inLoader = camelContext.getApplicationContextClassLoader();
}
-
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
return load(classDesc.getName(), cl, inLoader);
@@ -93,7 +90,7 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
}
}
// fallback
- final Class<?> clazz = (Class<?>) primClasses.get(className);
+ final Class<?> clazz = (Class<?>) PRIM_CLASSES.get(className);
if (clazz != null) {
return clazz;
} else {
@@ -102,14 +99,14 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
}
static {
- primClasses.put("boolean", boolean.class);
- primClasses.put("byte", byte.class);
- primClasses.put("char", char.class);
- primClasses.put("short", short.class);
- primClasses.put("int", int.class);
- primClasses.put("long", long.class);
- primClasses.put("float", float.class);
- primClasses.put("double", double.class);
- primClasses.put("void", void.class);
+ PRIM_CLASSES.put("boolean", boolean.class);
+ PRIM_CLASSES.put("byte", byte.class);
+ PRIM_CLASSES.put("char", char.class);
+ PRIM_CLASSES.put("short", short.class);
+ PRIM_CLASSES.put("int", int.class);
+ PRIM_CLASSES.put("long", long.class);
+ PRIM_CLASSES.put("float", float.class);
+ PRIM_CLASSES.put("double", double.class);
+ PRIM_CLASSES.put("void", void.class);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/940c88ee/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
index e0695ac..a7247ba 100644
--- a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
@@ -16,19 +16,24 @@
*/
package org.apache.camel.processor.aggregate.jdbc;
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.impl.DefaultExchangeHolder;
-import org.junit.Test;
-
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static junit.framework.Assert.assertEquals;
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultExchangeHolder;
+import org.junit.Test;
+
public class ClassLoadingAwareObjectInputStreamTest {
@Test
@@ -69,25 +74,31 @@ class MyObject implements Serializable {
final byte[] content;
public MyObject(String name, byte[] content) {
- this.name = name;
- this.content = content;
+ this.name = name;
+ this.content = content;
}
-
+
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- MyObject myObject = (MyObject) o;
-
- if (name != null ? !name.equals(myObject.name) : myObject.name != null) return false;
- return Arrays.equals(content, myObject.content);
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ MyObject myObject = (MyObject) o;
+
+ if (name != null ? !name.equals(myObject.name) : myObject.name != null) {
+ return false;
+ }
+ return Arrays.equals(content, myObject.content);
}
-
+
@Override
public int hashCode() {
- int result = name != null ? name.hashCode() : 0;
- result = 31 * result + Arrays.hashCode(content);
- return result;
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + Arrays.hashCode(content);
+ return result;
}
}
[6/6] camel git commit: Fixed CS. This closes #830
Posted by da...@apache.org.
Fixed CS. This closes #830
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fadf8d47
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fadf8d47
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fadf8d47
Branch: refs/heads/camel-2.15.x
Commit: fadf8d472e2eb1672413057d552aaf713afacfb9
Parents: 148cac1
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Feb 8 17:52:31 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 8 18:23:41 2016 +0100
----------------------------------------------------------------------
.../ClassLoadingAwareObjectInputStream.java | 29 +++++------
.../ClassLoadingAwareObjectInputStreamTest.java | 53 ++++++++++++--------
2 files changed, 45 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/fadf8d47/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
index 80a1278..6b8493c 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStream.java
@@ -31,16 +31,14 @@ import org.apache.camel.CamelContext;
@SuppressWarnings("rawtypes")
public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
- private CamelContext camelContext;
-
- private static final ClassLoader FALLBACK_CLASS_LOADER =
- ClassLoadingAwareObjectInputStream.class.getClassLoader();
+ private static final ClassLoader FALLBACK_CLASS_LOADER = ClassLoadingAwareObjectInputStream.class.getClassLoader();
/**
* Maps primitive type names to corresponding class objects.
*/
- private static final HashMap<String, Class> primClasses = new HashMap<String, Class>(8, 1.0F);
+ private static final HashMap<String, Class> PRIM_CLASSES = new HashMap<String, Class>(8, 1.0F);
+ private CamelContext camelContext;
private final ClassLoader inLoader;
public ClassLoadingAwareObjectInputStream(InputStream in) throws IOException {
@@ -53,7 +51,6 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
inLoader = camelContext.getApplicationContextClassLoader();
}
-
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
return load(classDesc.getName(), cl, inLoader);
@@ -93,7 +90,7 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
}
}
// fallback
- final Class<?> clazz = (Class<?>) primClasses.get(className);
+ final Class<?> clazz = (Class<?>) PRIM_CLASSES.get(className);
if (clazz != null) {
return clazz;
} else {
@@ -102,14 +99,14 @@ public class ClassLoadingAwareObjectInputStream extends ObjectInputStream {
}
static {
- primClasses.put("boolean", boolean.class);
- primClasses.put("byte", byte.class);
- primClasses.put("char", char.class);
- primClasses.put("short", short.class);
- primClasses.put("int", int.class);
- primClasses.put("long", long.class);
- primClasses.put("float", float.class);
- primClasses.put("double", double.class);
- primClasses.put("void", void.class);
+ PRIM_CLASSES.put("boolean", boolean.class);
+ PRIM_CLASSES.put("byte", byte.class);
+ PRIM_CLASSES.put("char", char.class);
+ PRIM_CLASSES.put("short", short.class);
+ PRIM_CLASSES.put("int", int.class);
+ PRIM_CLASSES.put("long", long.class);
+ PRIM_CLASSES.put("float", float.class);
+ PRIM_CLASSES.put("double", double.class);
+ PRIM_CLASSES.put("void", void.class);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/fadf8d47/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
index e0695ac..a7247ba 100644
--- a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/ClassLoadingAwareObjectInputStreamTest.java
@@ -16,19 +16,24 @@
*/
package org.apache.camel.processor.aggregate.jdbc;
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.impl.DefaultExchangeHolder;
-import org.junit.Test;
-
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static junit.framework.Assert.assertEquals;
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultExchangeHolder;
+import org.junit.Test;
+
public class ClassLoadingAwareObjectInputStreamTest {
@Test
@@ -69,25 +74,31 @@ class MyObject implements Serializable {
final byte[] content;
public MyObject(String name, byte[] content) {
- this.name = name;
- this.content = content;
+ this.name = name;
+ this.content = content;
}
-
+
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- MyObject myObject = (MyObject) o;
-
- if (name != null ? !name.equals(myObject.name) : myObject.name != null) return false;
- return Arrays.equals(content, myObject.content);
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ MyObject myObject = (MyObject) o;
+
+ if (name != null ? !name.equals(myObject.name) : myObject.name != null) {
+ return false;
+ }
+ return Arrays.equals(content, myObject.content);
}
-
+
@Override
public int hashCode() {
- int result = name != null ? name.hashCode() : 0;
- result = 31 * result + Arrays.hashCode(content);
- return result;
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + Arrays.hashCode(content);
+ return result;
}
}