/** * Indicates whether the given {@code desiredFormat} is supported as a representation for this type. More * specifically, it will consult the serializer that returned this instance whether it has a converter to convert * the serialized object's data to the desired type * * @param desiredFormat the format in which the serialized object is desired * @param <T> the format in which the serialized object is desired * @return {@code true} if the format is supported, otherwise {@code false} */ public <T> boolean supportsFormat(Class<T> desiredFormat) { return serializer.getConverter().canConvert(serializedObject.getContentType(), desiredFormat); }
/** * Converts the data format of the given {@code original} IntermediateRepresentation to the target data type. * * @param original The source to convert * @param targetType The type of data to convert to * @param <T> the target data type * @return the converted representation */ @SuppressWarnings("unchecked") default <T> SerializedObject<T> convert(SerializedObject<?> original, Class<T> targetType) { if (original.getContentType().equals(targetType)) { return (SerializedObject<T>) original; } return new SimpleSerializedObject<>(convert(original.getData(), original.getContentType(), targetType), targetType, original.getType()); }
@SuppressWarnings({"unchecked"}) @Override public Object doDeserialize(SerializedObject serializedObject, XStream xStream) { if ("org.dom4j.Document".equals(serializedObject.getContentType().getName())) { return xStream.unmarshal(new Dom4JReader((org.dom4j.Document) serializedObject.getData())); } if ("nu.xom.Document".equals(serializedObject.getContentType().getName())) { return xStream.unmarshal(new XomReader((nu.xom.Document) serializedObject.getData())); } InputStream serializedData = convert(serializedObject.getData(), serializedObject.getContentType(), InputStream.class); return xStream.fromXML(new InputStreamReader(serializedData, getCharset())); }
@Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { if (Map.class.equals(serializedObject.getContentType())) { // this is the MetaDataMap, deserialize differently Map<String, MetaDataValue> metaDataMap = (Map<String, MetaDataValue>) serializedObject.getData(); return (T) metaDataConverter.convert(metaDataMap); } return delegate.deserialize(serializedObject); }
@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); } }
@SuppressWarnings("unchecked") public <T> SerializedObject<T> serializePayload(Serializer serializer, Class<T> expectedRepresentation) { synchronized (payloadGuard) { SerializedObject existingForm = serializedPayload.get(serializer); if (existingForm == null) { SerializedObject<T> serialized = serializer.serialize(message.getPayload(), expectedRepresentation); if (message.getPayload() == null) { // make sure the payload type is maintained serialized = new SimpleSerializedObject<>(serialized.getData(), serialized.getContentType(), serializer.typeForClass(message.getPayloadType())); } serializedPayload.put(serializer, serialized); return serialized; } else { return serializer.getConverter().convert(existingForm, expectedRepresentation); } } }
/** * Indicates whether the given {@code desiredFormat} is supported as a representation for this type. More * specifically, it will consult the serializer that returned this instance whether it has a converter to convert * the serialized object's data to the desired type * * @param desiredFormat the format in which the serialized object is desired * @param <T> the format in which the serialized object is desired * @return {@code true} if the format is supported, otherwise {@code false} */ public <T> boolean supportsFormat(Class<T> desiredFormat) { return serializer.getConverter().canConvert(serializedObject.getContentType(), desiredFormat); }
@SuppressWarnings({"unchecked"}) @Override public Object doDeserialize(SerializedObject serializedObject, XStream xStream) { if ("org.dom4j.Document".equals(serializedObject.getContentType().getName())) { return xStream.unmarshal(new Dom4JReader((org.dom4j.Document) serializedObject.getData())); } if ("nu.xom.Document".equals(serializedObject.getContentType().getName())) { return xStream.unmarshal(new XomReader((nu.xom.Document) serializedObject.getData())); } InputStream serializedData = convert(serializedObject.getData(), serializedObject.getContentType(), InputStream.class); return xStream.fromXML(new InputStreamReader(serializedData, getCharset())); }
/** * Converts the data format of the given {@code original} IntermediateRepresentation to the target data type. * * @param original The source to convert * @param targetType The type of data to convert to * @param <T> the target data type * @return the converted representation */ @SuppressWarnings("unchecked") default <T> SerializedObject<T> convert(SerializedObject<?> original, Class<T> targetType) { if (original.getContentType().equals(targetType)) { return (SerializedObject<T>) original; } return new SimpleSerializedObject<>(convert(original.getData(), original.getContentType(), targetType), targetType, original.getType()); }
/** * Converts the data format of the given {@code original} IntermediateRepresentation to the target data type. * * @param original The source to convert * @param targetType The type of data to convert to * @param <T> the target data type * @return the converted representation */ @SuppressWarnings("unchecked") default <T> SerializedObject<T> convert(SerializedObject<?> original, Class<T> targetType) { if (original.getContentType().equals(targetType)) { return (SerializedObject<T>) original; } return new SimpleSerializedObject<>(convert(original.getData(), original.getContentType(), targetType), targetType, original.getType()); }
@SuppressWarnings({"unchecked"}) @Override public Object doDeserialize(SerializedObject serializedObject, XStream xStream) { if ("org.dom4j.Document".equals(serializedObject.getContentType().getName())) { return xStream.unmarshal(new Dom4JReader((org.dom4j.Document) serializedObject.getData())); } if("nu.xom.Document".equals(serializedObject.getContentType().getName())) { return xStream.unmarshal(new XomReader((nu.xom.Document) serializedObject.getData())); } InputStream serializedData = convert(serializedObject.getData(), serializedObject.getContentType(), InputStream.class); return xStream.fromXML(new InputStreamReader(serializedData, getCharset())); }
@Override public <S, T> T deserialize(SerializedObject<S> serializedObject) { if (Map.class.equals(serializedObject.getContentType())) { // this is the MetaDataMap, deserialize differently Map<String, MetaDataValue> metaDataMap = (Map<String, MetaDataValue>) serializedObject.getData(); return (T) metaDataConverter.convert(metaDataMap); } return delegate.deserialize(serializedObject); }
@SuppressWarnings("unchecked") @Override protected Object doDeserialize(SerializedObject serializedObject, XStream xStream) { DBObject serialized = convert(serializedObject.getData(), serializedObject.getContentType(), DBObject.class); return getXStream().unmarshal(new DBObjectHierarchicalStreamReader(serialized)); } }
@SuppressWarnings("unchecked") @Override protected Object doDeserialize(SerializedObject serializedObject, XStream xStream) { DBObject serialized = convert(serializedObject.getData(), serializedObject.getContentType(), DBObject.class); return getXStream().unmarshal(new DBObjectHierarchicalStreamReader(serialized)); }
@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); } }
private Document tokenEntryToDocument(AbstractTokenEntry<?> tokenEntry) { return new Document("processorName", tokenEntry.getProcessorName()) .append("segment", tokenEntry.getSegment()) .append("owner", tokenEntry.getOwner()) .append("timestamp", tokenEntry.timestamp().toEpochMilli()) .append("token", tokenEntry.getSerializedToken() == null ? null : tokenEntry.getSerializedToken().getData()) .append("tokenType", tokenEntry.getSerializedToken() == null ? null : tokenEntry.getSerializedToken() .getContentType().getName()); }
@SuppressWarnings("unchecked") public <T> SerializedObject<T> serializePayload(Serializer serializer, Class<T> expectedRepresentation) { synchronized (payloadGuard) { SerializedObject existingForm = serializedPayload.get(serializer); if (existingForm == null) { SerializedObject<T> serialized = serializer.serialize(message.getPayload(), expectedRepresentation); if (message.getPayload() == null) { // make sure the payload type is maintained serialized = new SimpleSerializedObject<>(serialized.getData(), serialized.getContentType(), serializer.typeForClass(message.getPayloadType())); } serializedPayload.put(serializer, serialized); return serialized; } else { return serializer.getConverter().convert(existingForm, expectedRepresentation); } } }
/** * Utility method that serializes the payload of the given {@code message} using given {@code serializer} * and {@code expectedRepresentation}. This method will verify if the {@code eventMessage} is {@link * SerializationAware}. * * @param message The message containing the payload to serialize * @param serializer The serializer to serialize the payload with * @param expectedRepresentation The data type to serialize to * @param <T> The data type to serialize to * @return a Serialized Object containing the serialized for of the message's payload */ public static <T> SerializedObject<T> serializePayload(Message<?> message, Serializer serializer, Class<T> expectedRepresentation) { if (message instanceof SerializationAware) { return ((SerializationAware) message).serializePayload(serializer, expectedRepresentation); } SerializedObject<T> serializedObject = serializer.serialize(message.getPayload(), expectedRepresentation); if (message.getPayload() == null) { // make sure the payload type is maintained return new SimpleSerializedObject<>(serializedObject.getData(), serializedObject.getContentType(), serializer.typeForClass(message.getPayloadType())); } return serializedObject; }