@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)); }
@Override public SerializedType typeForClass(Class type) { return new SimpleSerializedType(type.getName(), revisionOf(type)); }
/** * Initializes a {@link JavaSerializer} as specified through this Builder. * * @return a {@link JavaSerializer} as specified through this Builder */ public JavaSerializer build() { return new JavaSerializer(this); }
@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); } }
private Serializer buildSerializer(RevisionResolver revisionResolver, SerializerProperties.SerializerType serializerType) { switch (serializerType) { case JACKSON: Map<String, ObjectMapper> objectMapperBeans = applicationContext.getBeansOfType(ObjectMapper.class); ObjectMapper objectMapper = objectMapperBeans.containsKey("defaultAxonObjectMapper") ? objectMapperBeans.get("defaultAxonObjectMapper") : objectMapperBeans.values().stream().findFirst() .orElseThrow(() -> new NoClassDefFoundError( "com/fasterxml/jackson/databind/ObjectMapper" )); ChainingConverter converter = new ChainingConverter(beanClassLoader); return JacksonSerializer.builder() .revisionResolver(revisionResolver) .converter(converter) .objectMapper(objectMapper) .build(); case JAVA: return JavaSerializer.builder().revisionResolver(revisionResolver).build(); case XSTREAM: case DEFAULT: default: XStreamSerializer xStreamSerializer = XStreamSerializer.builder() .revisionResolver(revisionResolver) .build(); xStreamSerializer.getXStream().setClassLoader(beanClassLoader); return xStreamSerializer; } }
@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); } }
private Serializer buildSerializer(RevisionResolver revisionResolver, SerializerProperties.SerializerType serializerType) { switch (serializerType) { case JACKSON: Map<String, ObjectMapper> objectMapperBeans = applicationContext.getBeansOfType(ObjectMapper.class); ObjectMapper objectMapper = objectMapperBeans.containsKey("defaultAxonObjectMapper") ? objectMapperBeans.get("defaultAxonObjectMapper") : objectMapperBeans.values().stream().findFirst() .orElseThrow(() -> new NoClassDefFoundError( "com/fasterxml/jackson/databind/ObjectMapper" )); ChainingConverter converter = new ChainingConverter(beanClassLoader); return JacksonSerializer.builder() .revisionResolver(revisionResolver) .converter(converter) .objectMapper(objectMapper) .build(); case JAVA: return JavaSerializer.builder().revisionResolver(revisionResolver).build(); case XSTREAM: case DEFAULT: default: XStreamSerializer xStreamSerializer = XStreamSerializer.builder() .revisionResolver(revisionResolver) .build(); xStreamSerializer.getXStream().setClassLoader(beanClassLoader); return xStreamSerializer; } }
private SerializedType getSerializedType(Object instance) { SerializedType serializedType; if (instance == null) { serializedType = SimpleSerializedType.emptyType(); } else { serializedType = new SimpleSerializedType(instance.getClass().getName(), revisionOf(instance.getClass())); } return serializedType; }
@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)); }
/** * Initializes a {@link JavaSerializer} as specified through this Builder. * * @return a {@link JavaSerializer} as specified through this Builder */ public JavaSerializer build() { return new JavaSerializer(this); }
@Override public SerializedType typeForClass(Class type) { return new SimpleSerializedType(type.getName(), revisionOf(type)); }
@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)); }
@Override public SerializedType typeForClass(Class type) { return new SimpleSerializedType(type.getName(), revisionOf(type)); }
private SerializedType getSerializedType(Object instance) { SerializedType serializedType; if (instance == null) { serializedType = SimpleSerializedType.emptyType(); } else { serializedType = new SimpleSerializedType(instance.getClass().getName(), revisionOf(instance.getClass())); } return serializedType; }
private SerializedType getSerializedType(Object instance) { SerializedType serializedType; if (instance == null) { serializedType = SimpleSerializedType.emptyType(); } else { serializedType = new SimpleSerializedType(instance.getClass().getName(), revisionOf(instance.getClass())); } return serializedType; }