private Map<String, ?> deserializeMetaData(JobDataMap jobDataMap) { SimpleSerializedObject<byte[]> serializedDeadlineMetaData = new SimpleSerializedObject<>( (byte[]) jobDataMap.get(MESSAGE_METADATA), byte[].class, MetaData.class.getName(), null ); return serializer.deserialize(serializedDeadlineMetaData); }
/** * De-serializes the object and returns the result. * * @return the deserialized object */ public T getObject() { if (!isDeserialized()) { deserializedObject = serializer.deserialize(serializedObject.get()); } return deserializedObject; }
/** * Returns the token, deserializing it with given {@code serializer} * * @param serializer The serialize to deserialize the token with * @return the deserialized token stored in this entry */ public TrackingToken getToken(Serializer serializer) { return token == null ? null : serializer.deserialize(getSerializedToken()); }
private RemoteExceptionDescription deserializeException(Serializer serializer) { return serializer.deserialize(new SimpleSerializedObject<>(serializedException, byte[].class, exceptionType, exceptionRevision)); }
private Object deserializePayload(JobDataMap jobDataMap) { SimpleSerializedObject<byte[]> serializedPayload = new SimpleSerializedObject<>( (byte[]) jobDataMap.get(SERIALIZED_MESSAGE_PAYLOAD), byte[].class, (String) jobDataMap.get(MESSAGE_TYPE), (String) jobDataMap.get(MESSAGE_REVISION) ); return serializer.deserialize(serializedPayload); }
private Object deserializePayload(Serializer serializer) { return serializer.deserialize(new SimpleSerializedObject<>(serializedPayload, byte[].class, payloadType, payloadRevision)); }
private static Object deserializeDeadlinePayload(Serializer serializer, JobDataMap jobDataMap) { SimpleSerializedObject<byte[]> serializedDeadlinePayload = new SimpleSerializedObject<>( (byte[]) jobDataMap.get(SERIALIZED_MESSAGE_PAYLOAD), byte[].class, (String) jobDataMap.get(MESSAGE_TYPE), (String) jobDataMap.get(MESSAGE_REVISION) ); return serializer.deserialize(serializedDeadlinePayload); }
private static Map<String, ?> deserializeDeadlineMetaData(Serializer serializer, JobDataMap jobDataMap) { SimpleSerializedObject<byte[]> serializedDeadlineMetaData = new SimpleSerializedObject<>( (byte[]) jobDataMap.get(MESSAGE_METADATA), byte[].class, MetaData.class.getName(), null ); return serializer.deserialize(serializedDeadlineMetaData); }
/** * Extracts a {@link ScopeDescriptor} describing the deadline {@link org.axonframework.messaging.Scope}, pulled * from provided {@code jobDataMap}. * * @param serializer the {@link Serializer} used to deserialize the contents of the given {@code} jobDataMap} * into a {@link ScopeDescriptor} * @param jobDataMap the {@link JobDataMap} which should contain a {@link ScopeDescriptor} * @return the {@link ScopeDescriptor} describing the deadline {@link org.axonframework.messaging.Scope}, pulled * from provided {@code jobDataMap} */ public static ScopeDescriptor deadlineScope(Serializer serializer, JobDataMap jobDataMap) { SimpleSerializedObject<byte[]> serializedDeadlineScope = new SimpleSerializedObject<>( (byte[]) jobDataMap.get(SERIALIZED_DEADLINE_SCOPE), byte[].class, (String) jobDataMap.get(SERIALIZED_DEADLINE_SCOPE_CLASS_NAME), null ); return serializer.deserialize(serializedDeadlineScope); } }
@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> Entry<S> loadSaga(Class<S> sagaType, String sagaIdentifier) { EntityManager entityManager = entityManagerProvider.getEntityManager(); final Class<? extends SimpleSerializedObject<?>> serializedObjectType = serializedObjectType(); List<? extends SimpleSerializedObject<?>> serializedSagaList = entityManager.createNamedQuery(LOAD_SAGA_NAMED_QUERY, serializedObjectType) .setParameter("sagaId", sagaIdentifier) .setMaxResults(1) .getResultList(); if (serializedSagaList == null || serializedSagaList.isEmpty()) { return null; } final SimpleSerializedObject<?> serializedSaga = serializedSagaList.get(0); S loadedSaga = serializer.deserialize(serializedSaga); Set<AssociationValue> associationValues = loadAssociationValues(entityManager, sagaType, sagaIdentifier); if (logger.isDebugEnabled()) { logger.debug("Loaded saga id [{}] of type [{}]", sagaIdentifier, serializedSaga.getType().getName()); } return new EntryImpl<>(associationValues, loadedSaga); }
/** * Returns the CommandMessage wrapped in this Message. * * @param serializer The serializer to deserialize message contents with * @return the CommandMessage wrapped in this Message */ public CommandMessage<?> getCommandMessage(Serializer serializer) { SimpleSerializedObject<byte[]> serializedPayload = new SimpleSerializedObject<>(this.serializedPayload, byte[].class, payloadType, payloadRevision); final Object payload = serializer.deserialize(serializedPayload); SerializedMetaData<byte[]> serializedMetaData = new SerializedMetaData<>(this.serializedMetaData, byte[].class); final MetaData metaData = serializer.deserialize(serializedMetaData); return new GenericCommandMessage<>(new GenericMessage<>(commandIdentifier, payload, metaData), commandName); }
@Override public C getPayload() { String revision = request.getPayload().getRevision(); SerializedObject object = new SimpleSerializedObject<>(request.getPayload().getData().toByteArray(), byte[].class, request.getPayload().getType(), "".equals(revision) ? null : revision); return (C)serializer.deserialize(object); }
/** * Extracts a {@link DeadlineMessage} from provided {@code jobDataMap}. * * <b>Note</b> that this function is able to retrieve two different formats of DeadlineMessage. The first being * a now deprecated solution which used to serialized the entire {@link DeadlineMessage} into the * {@link JobDataMap}. This is only kept for backwards compatibility. The second is the new solution which * stores all the required deadline fields separately, only de-/serializing the payload and metadata of a * DeadlineMessage instead of the entire message. * * @param serializer the {@link Serializer} used to deserialize the contents of the given {@code} jobDataMap} * into a {@link DeadlineMessage} * @param jobDataMap the {@link JobDataMap} which should contain a {@link DeadlineMessage} * @return the {@link DeadlineMessage} pulled from the {@code jobDataMap} */ public static DeadlineMessage deadlineMessage(Serializer serializer, JobDataMap jobDataMap) { if (jobDataMap.containsKey(SERIALIZED_DEADLINE_MESSAGE)) { SimpleSerializedObject<byte[]> serializedDeadlineMessage = new SimpleSerializedObject<>( (byte[]) jobDataMap.get(SERIALIZED_DEADLINE_MESSAGE), byte[].class, (String) jobDataMap.get(SERIALIZED_DEADLINE_MESSAGE_CLASS_NAME), null ); return serializer.deserialize(serializedDeadlineMessage); } return new GenericDeadlineMessage<>((String) jobDataMap.get(DEADLINE_NAME), (String) jobDataMap.get(MESSAGE_ID), deserializeDeadlinePayload(serializer, jobDataMap), deserializeDeadlineMetaData(serializer, jobDataMap), retrieveDeadlineTimestamp(jobDataMap)); }
@Override public <S> Entry<S> loadSaga(Class<S> sagaType, String sagaIdentifier) { PreparedStatement statement = null; ResultSet resultSet = null; Connection conn = null; try { conn = connectionProvider.getConnection(); statement = sqlSchema.sql_loadSaga(conn, sagaIdentifier); resultSet = statement.executeQuery(); SerializedObject<?> serializedSaga = null; if (resultSet.next()) { serializedSaga = sqlSchema.readSerializedSaga(resultSet); } if (serializedSaga == null) { return null; } S loadedSaga = serializer.deserialize(serializedSaga); if (logger.isDebugEnabled()) { logger.debug("Loaded saga id [{}] of type [{}]", sagaIdentifier, loadedSaga.getClass().getName()); } return new EntryImpl<>(loadAssociations(conn, sagaTypeName(sagaType), sagaIdentifier), loadedSaga); } catch (SQLException e) { throw new SagaStorageException("Exception while loading a Saga", e); } finally { closeQuietly(statement); closeQuietly(resultSet); closeQuietly(conn); } }
/** * Returns a {@link CommandResultMessage} containg the result of command processing. * * @param serializer the serializer to deserialize the result with * @return a {@link CommandResultMessage} containing the return value of command processing */ public CommandResultMessage<?> getCommandResultMessage(Serializer serializer) { Object payload = deserializePayload(serializer); RemoteExceptionDescription exceptionDescription = deserializeException(serializer); SerializedMetaData<byte[]> serializedMetaData = new SerializedMetaData<>(this.serializedMetaData, byte[].class); MetaData metaData = serializer.deserialize(serializedMetaData); if (exceptionDescription != null) { return new GenericCommandResultMessage<>(new RemoteHandlingException(exceptionDescription), metaData); } return new GenericCommandResultMessage<>(payload, metaData); }
private Object convert(MetaDataValue value) { switch (value.getDataCase()) { case TEXT_VALUE: return value.getTextValue(); case BYTES_VALUE: return messageSerializer.deserialize(new GrpcSerializedObject(value.getBytesValue())); case DOUBLE_VALUE: return value.getDoubleValue(); case NUMBER_VALUE: return value.getNumberValue(); case BOOLEAN_VALUE: return value.getBooleanValue(); case DATA_NOT_SET: return null; } return null; } }
/** * Convert the given MetaDataValue to its Java representation. * <p> * See {@link #convertToMetaDataValue(Object)} for details about the mapping. * * @param value The value to convert * @return The Java object representing the same value */ public Object convertFromMetaDataValue(MetaDataValue value) { switch (value.getDataCase()) { case TEXT_VALUE: return value.getTextValue(); case BYTES_VALUE: io.axoniq.axonserver.grpc.SerializedObject bytesValue = value.getBytesValue(); return serializer.deserialize(new SimpleSerializedObject<>(bytesValue.getData().toByteArray(), byte[].class, bytesValue.getType(), bytesValue.getRevision())); case DATA_NOT_SET: return null; case DOUBLE_VALUE: return value.getDoubleValue(); case NUMBER_VALUE: return value.getNumberValue(); case BOOLEAN_VALUE: return value.getBooleanValue(); } return null; }
public <R> GenericCommandResultMessage<R> deserialize(CommandResponse response) { MetaData metaData = new GrpcMetaDataConverter(messageSerializer).convert(response.getMetaDataMap()); if (response.hasErrorMessage()) { AxonException exception = ErrorCode.getFromCode(response.getErrorCode()).convert(response.getErrorMessage()); return new GenericCommandResultMessage<>(exception, metaData); } R payload = response.hasPayload() ? messageSerializer.deserialize(new GrpcSerializedObject(response.getPayload())) : null; return new GenericCommandResultMessage<>(payload, metaData); }
private Object deserializePayload(JobDataMap jobDataMap) { SimpleSerializedObject<byte[]> serializedPayload = new SimpleSerializedObject<>( (byte[]) jobDataMap.get(SERIALIZED_MESSAGE_PAYLOAD), byte[].class, (String) jobDataMap.get(MESSAGE_TYPE), (String) jobDataMap.get(MESSAGE_REVISION) ); return serializer.deserialize(serializedPayload); }