summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/BasicStream.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2009-06-26 14:59:11 -0700
committerMark Spruiell <mes@zeroc.com>2009-06-26 14:59:11 -0700
commit3a5f968f8487eb1f91769ab8704a9609dcbe9efe (patch)
tree469fc394f1e1e9ba0ef615c991faa524af4a21d0 /java/src/IceInternal/BasicStream.java
parentupdating CHANGES for bug 4126 (diff)
downloadice-3a5f968f8487eb1f91769ab8704a9609dcbe9efe.tar.bz2
ice-3a5f968f8487eb1f91769ab8704a9609dcbe9efe.tar.xz
ice-3a5f968f8487eb1f91769ab8704a9609dcbe9efe.zip
more fixes for bug 4126
Diffstat (limited to 'java/src/IceInternal/BasicStream.java')
-rw-r--r--java/src/IceInternal/BasicStream.java84
1 files changed, 20 insertions, 64 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java
index 25d40228962..57827762773 100644
--- a/java/src/IceInternal/BasicStream.java
+++ b/java/src/IceInternal/BasicStream.java
@@ -820,12 +820,14 @@ public class BasicStream
try
{
InputStreamWrapper w = new InputStreamWrapper(sz, this);
- java.io.ObjectInputStream in = new java.io.ObjectInputStream(w);
+ ObjectInputStream in = new ObjectInputStream(w);
return (java.io.Serializable)in.readObject();
}
catch(java.lang.Exception ex)
{
- throw new Ice.MarshalException("cannot deserialize object: " + ex);
+ Ice.MarshalException e = new Ice.MarshalException("cannot deserialize object");
+ e.initCause(ex);
+ throw e;
}
}
@@ -2358,58 +2360,10 @@ public class BasicStream
getConcreteClass(String className)
throws LinkageError
{
- Class<?> c = null;
-
- //
- // Calling Class.forName() doesn't always work. For example, if Ice.jar is installed
- // as an extension (in $JAVA_HOME/jre/lib/ext), calling Class.forName(name) uses the
- // extension class loader, which will not look in CLASSPATH for the target class.
- //
- // First we try using the system class loader (which knows about CLASSPATH). Next we
- // try the current thread's class loader, and finally we fall back to Class.forName().
- //
- try
- {
- try
- {
- c = getConcreteClass(className, ClassLoader.getSystemClassLoader());
- }
- catch(SecurityException ex)
- {
- }
-
- if(c == null)
- {
- try
- {
- c = getConcreteClass(className, Thread.currentThread().getContextClassLoader());
- }
- catch(SecurityException ex)
- {
- }
- }
+ Class<?> c = Util.findClass(className);
- if(c == null)
- {
- c = Class.forName(className);
- }
- }
- catch(ClassNotFoundException ex)
+ if(c != null)
{
- // Ignore
- }
-
- return c;
- }
-
- private Class<?>
- getConcreteClass(String className, ClassLoader cl)
- throws LinkageError
- {
- try
- {
- Class<?> c = cl.loadClass(className);
-
//
// Ensure the class is instantiable. The constants are
// defined in the JVM specification (0x200 = interface,
@@ -2421,10 +2375,6 @@ public class BasicStream
return c;
}
}
- catch(ClassNotFoundException ex)
- {
- // Ignore
- }
return null;
}
@@ -2597,14 +2547,20 @@ public class BasicStream
{
Class<?> cls;
Class<?>[] types = new Class<?>[1];
- cls = Class.forName("org.apache.tools.bzip2.CBZip2InputStream");
- types[0] = java.io.InputStream.class;
- _bzInputStreamCtor = cls.getDeclaredConstructor(types);
- cls = Class.forName("org.apache.tools.bzip2.CBZip2OutputStream");
- types = new Class[2];
- types[0] = java.io.OutputStream.class;
- types[1] = Integer.TYPE;
- _bzOutputStreamCtor = cls.getDeclaredConstructor(types);
+ cls = Util.findClass("org.apache.tools.bzip2.CBZip2InputStream");
+ if(cls != null)
+ {
+ types[0] = java.io.InputStream.class;
+ _bzInputStreamCtor = cls.getDeclaredConstructor(types);
+ }
+ cls = Util.findClass("org.apache.tools.bzip2.CBZip2OutputStream");
+ if(cls != null)
+ {
+ types = new Class[2];
+ types[0] = java.io.OutputStream.class;
+ types[1] = Integer.TYPE;
+ _bzOutputStreamCtor = cls.getDeclaredConstructor(types);
+ }
}
catch(Exception ex)
{