public static <Data> Data deserializeSagaData(SerializedSagaData serializedSagaData) { Class<?> clasz = null; try { clasz = SagaDataSerde.class.getClassLoader().loadClass(serializedSagaData.getSagaDataType()); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } Object x = JSonMapper.fromJson(serializedSagaData.getSagaDataJSON(), clasz); return (Data)x; } }
public static <Data> SerializedSagaData serializeSagaData(Data sagaData) { return new SerializedSagaData(sagaData.getClass().getName(), JSonMapper.toJson(sagaData)); }
public static <Data> Data deserializeSagaData(SerializedSagaData serializedSagaData) { Class<?> clasz = null; try { clasz = SagaDataSerde.class.getClassLoader().loadClass(serializedSagaData.getSagaDataType()); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } Object x = JSonMapper.fromJson(serializedSagaData.getSagaDataJSON(), clasz); return (Data)x; } }
public static <Data> SerializedSagaData serializeSagaData(Data sagaData) { return new SerializedSagaData(sagaData.getClass().getName(), JSonMapper.toJson(sagaData)); }
@Override public void update(SagaInstance sagaInstance) { logger.info("Updating {} {}", sagaInstance.getSagaType(), sagaInstance.getId()); int count = jdbcTemplate.update(updateSagaInstanceSql, sagaInstance.getStateName(), sagaInstance.getLastRequestId(), sagaInstance.getSerializedSagaData().getSagaDataType(), sagaInstance.getSerializedSagaData().getSagaDataJSON(), sagaInstance.getSagaType(), sagaInstance.getId()); Assert.isTrue(count == 1, "Should be 1 : " + count); saveDestinationsAndResources(sagaInstance); }
@Override public SagaInstance find(String sagaType, String sagaId) { logger.info("finding {} {}", sagaType, sagaId); Set<DestinationAndResource> destinationsAndResources = new HashSet<>(jdbcTemplate.query( selectFromSagaInstanceParticipantsSql, (rs, rownum) -> new DestinationAndResource(rs.getString("destination"), rs.getString("resource")), sagaType, sagaId)); return DataAccessUtils.requiredSingleResult(jdbcTemplate.query( selectFromSagaInstanceSql, (rs, rownum) -> new SagaInstance(sagaType, sagaId, rs.getString("state_name"), rs.getString("last_request_id"), new SerializedSagaData(rs.getString("saga_data_type"), rs.getString("saga_data_json")), destinationsAndResources), sagaType, sagaId)); // TODO insert - sagaInstance.getDestinationsAndResources(); }
@Override public void update(SagaInstance sagaInstance) { logger.info("Updating {} {}", sagaInstance.getSagaType(), sagaInstance.getId()); int count = jdbcTemplate.update(updateSagaInstanceSql, sagaInstance.getStateName(), sagaInstance.getLastRequestId(), sagaInstance.getSerializedSagaData().getSagaDataType(), sagaInstance.getSerializedSagaData().getSagaDataJSON(), sagaInstance.getSagaType(), sagaInstance.getId()); Assert.isTrue(count == 1, "Should be 1 : " + count); saveDestinationsAndResources(sagaInstance); }
@Override public SagaInstance find(String sagaType, String sagaId) { logger.info("finding {} {}", sagaType, sagaId); Set<DestinationAndResource> destinationsAndResources = new HashSet<>(jdbcTemplate.query( selectFromSagaInstanceParticipantsSql, (rs, rownum) -> new DestinationAndResource(rs.getString("destination"), rs.getString("resource")), sagaType, sagaId)); return DataAccessUtils.requiredSingleResult(jdbcTemplate.query( selectFromSagaInstanceSql, (rs, rownum) -> new SagaInstance(sagaType, sagaId, rs.getString("state_name"), rs.getString("last_request_id"), new SerializedSagaData(rs.getString("saga_data_type"), rs.getString("saga_data_json")), destinationsAndResources), sagaType, sagaId)); // TODO insert - sagaInstance.getDestinationsAndResources(); }
@Override public void save(SagaInstance sagaInstance) { sagaInstance.setId(idGenerator.genId().asString()); logger.info("Saving {} {}", sagaInstance.getSagaType(), sagaInstance.getId()); jdbcTemplate.update(insertIntoSagaInstanceSql, sagaInstance.getSagaType(), sagaInstance.getId(), sagaInstance.getStateName(), sagaInstance.getLastRequestId(), sagaInstance.getSerializedSagaData().getSagaDataType(), sagaInstance.getSerializedSagaData().getSagaDataJSON()); saveDestinationsAndResources(sagaInstance); }
@Override public void save(SagaInstance sagaInstance) { sagaInstance.setId(idGenerator.genId().asString()); logger.info("Saving {} {}", sagaInstance.getSagaType(), sagaInstance.getId()); jdbcTemplate.update(insertIntoSagaInstanceSql, sagaInstance.getSagaType(), sagaInstance.getId(), sagaInstance.getStateName(), sagaInstance.getLastRequestId(), sagaInstance.getSerializedSagaData().getSagaDataType(), sagaInstance.getSerializedSagaData().getSagaDataJSON()); saveDestinationsAndResources(sagaInstance); }
private void assertSagaInstanceEquals(SagaInstance expectedSagaInstance, SagaInstance sagaInstance) { assertEquals(expectedSagaInstance.getSagaType(), sagaInstance.getSagaType()); assertEquals(expectedSagaInstance.getId(), sagaInstance.getId()); assertEquals(expectedSagaInstance.getStateName(), sagaInstance.getStateName()); assertEquals(expectedSagaInstance.getLastRequestId(), sagaInstance.getLastRequestId()); assertEquals(expectedSagaInstance.getSerializedSagaData().getSagaDataType(), sagaInstance.getSerializedSagaData().getSagaDataType()); assertEquals(expectedSagaInstance.getSerializedSagaData().getSagaDataJSON(), sagaInstance .getSerializedSagaData().getSagaDataJSON()); }