@SuppressWarnings({"NonSerializableObjectPassedToObjectStream", "ThrowFromFinallyBlock"}) @Override public <T> SerializedObject<T> serialize(Object instance, Class<T> expectedType) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(baos); try { oos.writeObject(instance); } finally { oos.flush(); } } catch (IOException e) { throw new SerializationException("An exception occurred writing serialized data to the output stream", e); } T converted = converter.convert(baos.toByteArray(), expectedType); return new SimpleSerializedObject<>(converted, expectedType, getSerializedType(instance)); }
@SuppressWarnings("unchecked") @Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { if (SerializedType.emptyType().equals(serializedObject.getType())) { return null; } if (UnknownSerializedType.class.isAssignableFrom(classForType(serializedObject.getType()))) { return (T) new UnknownSerializedType(this, serializedObject); } SerializedObject<InputStream> converted = converter.convert(serializedObject, InputStream.class); ObjectInputStream ois = null; try { ois = new ObjectInputStream(converted.getData()); return (T) ois.readObject(); } catch (ClassNotFoundException | IOException e) { throw new SerializationException("An error occurred while deserializing: " + e.getMessage(), e); } finally { IOUtils.closeQuietly(ois); } }
@Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { try { if (SerializedType.emptyType().equals(serializedObject.getType())) { return null; } Class<?> type = classForType(serializedObject.getType()); if (UnknownSerializedType.class.isAssignableFrom(type)) { return (T) new UnknownSerializedType(this, serializedObject); } if (JsonNode.class.equals(serializedObject.getContentType())) { return getReader(type) .readValue((JsonNode) serializedObject.getData()); } SerializedObject<byte[]> byteSerialized = converter.convert(serializedObject, byte[].class); return getReader(type).readValue(byteSerialized.getData()); } catch (IOException e) { throw new SerializationException("Error while deserializing object", e); } }
@Override public <T> SerializedObject<T> serialize(Object object, Class<T> expectedRepresentation) { try { if (String.class.equals(expectedRepresentation)) { //noinspection unchecked return new SimpleSerializedObject<>((T) getWriter().writeValueAsString(object), expectedRepresentation, typeForClass(ObjectUtils.nullSafeTypeOf(object))); } byte[] serializedBytes = getWriter().writeValueAsBytes(object); T serializedContent = converter.convert(serializedBytes, expectedRepresentation); return new SimpleSerializedObject<>(serializedContent, expectedRepresentation, typeForClass(ObjectUtils.nullSafeTypeOf(object))); } catch (JsonProcessingException e) { throw new SerializationException("Unable to serialize object", e); } }
@Test public void testProcessorStopsOnNonTransientExceptionWhenLoadingToken() { when(tokenStore.fetchToken("test", 0)).thenThrow(new SerializationException("Faking a serialization issue")); testSubject.start(); assertWithin( 1, TimeUnit.SECONDS, () -> assertFalse("Expected processor to have stopped", testSubject.isRunning()) ); assertWithin( 1, TimeUnit.SECONDS, () -> assertTrue("Expected processor to set the error flag", testSubject.isError()) ); assertEquals(Collections.emptyList(), sleepInstructions); }
@SuppressWarnings({"NonSerializableObjectPassedToObjectStream", "ThrowFromFinallyBlock"}) @Override public <T> SerializedObject<T> serialize(Object instance, Class<T> expectedType) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(baos); try { oos.writeObject(instance); } finally { oos.flush(); } } catch (IOException e) { throw new SerializationException("An exception occurred writing serialized data to the output stream", e); } T converted = converter.convert(baos.toByteArray(), expectedType); return new SimpleSerializedObject<>(converted, expectedType, getSerializedType(instance)); }
@SuppressWarnings({"NonSerializableObjectPassedToObjectStream", "ThrowFromFinallyBlock"}) @Override public <T> SerializedObject<T> serialize(Object instance, Class<T> expectedType) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(baos); try { oos.writeObject(instance); } finally { oos.flush(); } } catch (IOException e) { throw new SerializationException("An exception occurred writing serialized data to the output stream", e); } T converted = converter.convert(baos.toByteArray(), expectedType); return new SimpleSerializedObject<>(converted, expectedType, getSerializedType(instance)); }
@SuppressWarnings("unchecked") @Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { if (SerializedType.emptyType().equals(serializedObject.getType())) { return null; } SerializedObject<InputStream> converted = converter.convert(serializedObject, InputStream.class); ObjectInputStream ois = null; try { ois = new ObjectInputStream(converted.getData()); return (T) ois.readObject(); } catch (ClassNotFoundException | IOException e) { throw new SerializationException("An error occurred while deserializing: " + e.getMessage(), e); } finally { IOUtils.closeQuietly(ois); } }
@SuppressWarnings("unchecked") @Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { if (SerializedType.emptyType().equals(serializedObject.getType())) { return null; } if (UnknownSerializedType.class.isAssignableFrom(classForType(serializedObject.getType()))) { return (T) new UnknownSerializedType(this, serializedObject); } SerializedObject<InputStream> converted = converter.convert(serializedObject, InputStream.class); ObjectInputStream ois = null; try { ois = new ObjectInputStream(converted.getData()); return (T) ois.readObject(); } catch (ClassNotFoundException | IOException e) { throw new SerializationException("An error occurred while deserializing: " + e.getMessage(), e); } finally { IOUtils.closeQuietly(ois); } }
@Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { try { if (SerializedType.emptyType().equals(serializedObject.getType())) { return null; } Class<?> type = classForType(serializedObject.getType()); if (UnknownSerializedType.class.isAssignableFrom(type)) { return (T) new UnknownSerializedType(this, serializedObject); } if (JsonNode.class.equals(serializedObject.getContentType())) { return getReader(type) .readValue((JsonNode) serializedObject.getData()); } SerializedObject<byte[]> byteSerialized = converter.convert(serializedObject, byte[].class); return getReader(type).readValue(byteSerialized.getData()); } catch (IOException e) { throw new SerializationException("Error while deserializing object", e); } }
@Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { if (SerializedType.emptyType().equals(serializedObject.getType())) { return null; } try { if (JsonNode.class.equals(serializedObject.getContentType())) { return getReader(classForType(serializedObject.getType())) .readValue((JsonNode) serializedObject.getData()); } SerializedObject<byte[]> byteSerialized = converter.convert(serializedObject, byte[].class); return getReader(classForType(serializedObject.getType())).readValue(byteSerialized.getData()); } catch (IOException e) { throw new SerializationException("Error while deserializing object", e); } }
@Override public <T> SerializedObject<T> serialize(Object object, Class<T> expectedRepresentation) { try { if (String.class.equals(expectedRepresentation)) { //noinspection unchecked return new SimpleSerializedObject<>((T) getWriter().writeValueAsString(object), expectedRepresentation, typeForClass(ObjectUtils.nullSafeTypeOf(object))); } byte[] serializedBytes = getWriter().writeValueAsBytes(object); T serializedContent = converter.convert(serializedBytes, expectedRepresentation); return new SimpleSerializedObject<>(serializedContent, expectedRepresentation, typeForClass(ObjectUtils.nullSafeTypeOf(object))); } catch (JsonProcessingException e) { throw new SerializationException("Unable to serialize object", e); } }
@Override public <T> SerializedObject<T> serialize(Object object, Class<T> expectedRepresentation) { try { if (String.class.equals(expectedRepresentation)) { //noinspection unchecked return new SimpleSerializedObject<>((T) getWriter().writeValueAsString(object), expectedRepresentation, typeForClass(ObjectUtils.nullSafeTypeOf(object))); } byte[] serializedBytes = getWriter().writeValueAsBytes(object); T serializedContent = converter.convert(serializedBytes, expectedRepresentation); return new SimpleSerializedObject<>(serializedContent, expectedRepresentation, typeForClass(ObjectUtils.nullSafeTypeOf(object))); } catch (JsonProcessingException e) { throw new SerializationException("Unable to serialize object", e); } }