HHH-4572 - check if the connection supports jdbc4 before looking for the createClob method
git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@17984 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
parent
a63c8ef82a
commit
a99a524b37
|
@ -224,7 +224,9 @@ public final class SerializationHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deserializes an Object from an array of bytes.
|
* Deserializes an object from an array of bytes using the Thread Context
|
||||||
|
* ClassLoader (TCCL). If there is no TCCL set, the classloader of the calling
|
||||||
|
* class is used.
|
||||||
* <p/>
|
* <p/>
|
||||||
* Delegates to {@link #deserialize(byte[], ClassLoader)}
|
* Delegates to {@link #deserialize(byte[], ClassLoader)}
|
||||||
*
|
*
|
||||||
|
@ -238,7 +240,7 @@ public final class SerializationHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deserializes an Object from an array of bytes.
|
* Deserializes an object from an array of bytes.
|
||||||
* <p/>
|
* <p/>
|
||||||
* Delegates to {@link #deserialize(java.io.InputStream, ClassLoader)} using a
|
* Delegates to {@link #deserialize(java.io.InputStream, ClassLoader)} using a
|
||||||
* {@link ByteArrayInputStream} to wrap the array.
|
* {@link ByteArrayInputStream} to wrap the array.
|
||||||
|
@ -261,9 +263,12 @@ public final class SerializationHelper {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom ObjectInputStream implementation to more appropriately handle classloading
|
* By default, to resolve the classes being deserialized JDK serialization uses the
|
||||||
* within app servers (mainly jboss - hence this class inspired by jboss's class of
|
* classes loader which loaded the class which initiated the deserialization call. Here
|
||||||
* the same purpose).
|
* that would be hibernate classes. However, there are cases where that is not the correct
|
||||||
|
* class loader to use; mainly here we are worried about deserializing user classes in
|
||||||
|
* environments (app servers, etc) where Hibernate is on a parent classes loader. To
|
||||||
|
* facilitate for that we allow passing in the class loader we should use.
|
||||||
*/
|
*/
|
||||||
private static final class CustomObjectInputStream extends ObjectInputStream {
|
private static final class CustomObjectInputStream extends ObjectInputStream {
|
||||||
private final ClassLoader loader;
|
private final ClassLoader loader;
|
||||||
|
@ -273,10 +278,14 @@ public final class SerializationHelper {
|
||||||
this.loader = loader;
|
this.loader = loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFoundException {
|
protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFoundException {
|
||||||
String className = v.getName();
|
String className = v.getName();
|
||||||
log.trace("Attempting to locate class [" + className + "]");
|
log.trace("Attempting to locate class [" + className + "]");
|
||||||
|
|
||||||
|
// if we were given a classloader, attempt to use it to resolve the class...
|
||||||
if ( loader != null ) {
|
if ( loader != null ) {
|
||||||
try {
|
try {
|
||||||
return Class.forName( className, false, loader );
|
return Class.forName( className, false, loader );
|
||||||
|
@ -286,6 +295,8 @@ public final class SerializationHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// By default delegate to normal JDK deserialization which will use the class loader
|
||||||
|
// of the class which is calling this deserialization.
|
||||||
return super.resolveClass( v );
|
return super.resolveClass( v );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue