1313import java .io .ObjectStreamClass ;
1414import java .io .OutputStream ;
1515import java .io .Serializable ;
16+ import java .util .Objects ;
1617
1718import org .hibernate .Hibernate ;
1819import org .hibernate .internal .CoreLogging ;
@@ -105,25 +106,12 @@ public static void serialize(Serializable obj, OutputStream outputStream) throws
105106 }
106107 }
107108
108- ObjectOutputStream out = null ;
109- try {
110- // stream closed in the finally
111- out = new ObjectOutputStream ( outputStream );
109+ try ( var out = new ObjectOutputStream ( outputStream ) ) {
112110 out .writeObject ( obj );
113-
114111 }
115112 catch (IOException ex ) {
116113 throw new SerializationException ( "could not serialize" , ex );
117114 }
118- finally {
119- try {
120- if ( out != null ) {
121- out .close ();
122- }
123- }
124- catch (IOException ignored ) {
125- }
126- }
127115 }
128116
129117 /**
@@ -137,7 +125,7 @@ public static void serialize(Serializable obj, OutputStream outputStream) throws
137125 * @throws SerializationException (runtime) if the serialization fails
138126 */
139127 public static byte [] serialize (Serializable obj ) throws SerializationException {
140- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream ( 512 );
128+ final var byteArrayOutputStream = new ByteArrayOutputStream ( 512 );
141129 serialize ( obj , byteArrayOutputStream );
142130 return byteArrayOutputStream .toByteArray ();
143131 }
@@ -199,7 +187,6 @@ public static Object deserialize(InputStream inputStream, ClassLoader loader) th
199187 return doDeserialize ( inputStream , loader , defaultClassLoader (), hibernateClassLoader () );
200188 }
201189
202- @ SuppressWarnings ("unchecked" )
203190 public static <T > T doDeserialize (
204191 InputStream inputStream ,
205192 ClassLoader loader ,
@@ -211,32 +198,11 @@ public static <T> T doDeserialize(
211198
212199 LOG .trace ( "Starting deserialization of object" );
213200
214- try {
215- CustomObjectInputStream in = new CustomObjectInputStream (
216- inputStream ,
217- loader ,
218- fallbackLoader1 ,
219- fallbackLoader2
220- );
221- try {
222- return (T ) in .readObject ();
223- }
224- catch (ClassNotFoundException e ) {
225- throw new SerializationException ( "could not deserialize" , e );
226- }
227- catch (IOException e ) {
228- throw new SerializationException ( "could not deserialize" , e );
229- }
230- finally {
231- try {
232- in .close ();
233- }
234- catch (IOException ignore ) {
235- // ignore
236- }
237- }
201+ try ( var in = new CustomObjectInputStream ( inputStream , loader , fallbackLoader1 , fallbackLoader2 ) ) {
202+ //noinspection unchecked
203+ return (T ) in .readObject ();
238204 }
239- catch (IOException e ) {
205+ catch (ClassNotFoundException | IOException e ) {
240206 throw new SerializationException ( "could not deserialize" , e );
241207 }
242208 }
@@ -310,7 +276,7 @@ private CustomObjectInputStream(
310276 }
311277
312278 @ Override
313- protected Class resolveClass (ObjectStreamClass v ) throws IOException , ClassNotFoundException {
279+ protected Class <?> resolveClass (ObjectStreamClass v ) throws IOException , ClassNotFoundException {
314280 final String className = v .getName ();
315281 LOG .tracev ( "Attempting to locate class [{0}]" , className );
316282
@@ -321,7 +287,7 @@ protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFo
321287 LOG .trace ( "Unable to locate class using given classloader" );
322288 }
323289
324- if ( different ( loader1 , loader2 ) ) {
290+ if ( ! Objects . equals ( loader1 , loader2 ) ) {
325291 try {
326292 return Class .forName ( className , false , loader2 );
327293 }
@@ -330,7 +296,7 @@ protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFo
330296 }
331297 }
332298
333- if ( different ( loader1 , loader3 ) && different ( loader2 , loader3 ) ) {
299+ if ( ! Objects . equals ( loader1 , loader3 ) && ! Objects . equals ( loader2 , loader3 ) ) {
334300 try {
335301 return Class .forName ( className , false , loader3 );
336302 }
@@ -339,16 +305,9 @@ protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFo
339305 }
340306 }
341307
342- // By default delegate to normal JDK deserialization which will use the class loader
343- // of the class which is calling this deserialization.
308+ // By default, delegate to normal JDK deserialization which will use the
309+ // class loader of the class which is calling this deserialization.
344310 return super .resolveClass ( v );
345311 }
346-
347- private boolean different (ClassLoader one , ClassLoader other ) {
348- if ( one == null ) {
349- return other != null ;
350- }
351- return !one .equals ( other );
352- }
353312 }
354313}
0 commit comments