/** * Convert the input to a UUID using the convenience method * {@link #getUUID(Object)}. * * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object) */ public UUID convert(Object source) { return getUUID(source); }
/** * Helper method that converts the channel id to a UUID using * {@link UUIDConverter#getUUID(Object)}. * @param input Parameter may be null * @return Returns null when the input is null otherwise the UUID as String. */ private String getKey(Object input) { return input == null ? null : UUIDConverter.getUUID(input).toString(); }
private String pathFor(String input) { return input == null ? null : UUIDConverter.getUUID(input).toString(); }
private String getKey(Object input) { return input == null ? null : UUIDConverter.getUUID(input).toString(); }
private void updateMessageGroup(JdbcTemplate template, final String groupId, final long timeout) { template.update("UPDATE INT_MESSAGE_GROUP set UPDATED_DATE=? where GROUP_KEY=? and REGION=?", (PreparedStatementSetter) ps -> { ps.setTimestamp(1, new Timestamp(System.currentTimeMillis() - timeout)); ps.setString(2, UUIDConverter.getUUID(groupId).toString()); ps.setString(3, "DEFAULT"); }); }
@Test public void testConvertUUIDString() throws Exception { UUID uuid = UUID.randomUUID(); assertEquals(uuid, UUIDConverter.getUUID(uuid.toString())); }
@Test public void testConvertUUID() throws Exception { UUID uuid = UUID.randomUUID(); assertEquals(uuid, UUIDConverter.getUUID(uuid)); }
@Test(expected = IllegalArgumentException.class) public void testConvertNonSerializable() throws Exception { assertNotNull(UUIDConverter.getUUID(new Object())); }
@Test public void testConvertSerializable() throws Exception { assertNotNull(UUIDConverter.getUUID(new Date())); }
this.logger.debug("Schedule MessageGroup [ " + messageGroup + "] to 'forceComplete'."); this.expireGroupScheduledFutures.put(UUIDConverter.getUUID(groupId), scheduledFuture);
private void checkLock(AbstractCorrelatingMessageHandler handler, String group, boolean expectedHeld) { ReentrantLock lock = (ReentrantLock) TestUtils.getPropertyValue(handler, "lockRegistry", LockRegistry.class) .obtain(UUIDConverter.getUUID(group).toString()); assertEquals(expectedHeld, lock.isHeldByCurrentThread()); }
@Test public void testConvertPrimitive() throws Exception { assertNotNull(UUIDConverter.getUUID(1L)); }
@Test public void testConvertNull() throws Exception { assertNull(UUIDConverter.getUUID(null)); }
@Test public void testConvertAlmostUUIDString() throws Exception { String name = "1-2-3-4"; try { UUID.fromString(name); fail(); } catch (IllegalArgumentException e) { String message = e.getMessage(); assertTrue("Wrong message: " + message, message.contains("Invalid UUID string")); } assertNotNull(UUIDConverter.getUUID(name)); }
@Test public void testMessageSequenceColumn() throws InterruptedException { JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSource); String messageGroup = "TEST_MESSAGE_GROUP"; this.jdbcChannelMessageStore.addMessageToGroup(messageGroup, new GenericMessage<Object>("foo")); // The simple sleep to to be sure that messages are stored with different 'CREATED_DATE' Thread.sleep(10); this.jdbcChannelMessageStore.addMessageToGroup(messageGroup, new GenericMessage<Object>("bar")); List<Map<String, Object>> result = jdbcTemplate.queryForList("SELECT MESSAGE_SEQUENCE FROM INT_CHANNEL_MESSAGE " + "WHERE GROUP_KEY = ? ORDER BY CREATED_DATE", UUIDConverter.getUUID(messageGroup).toString()); assertEquals(2, result.size()); Object messageSequence1 = result.get(0).get("MESSAGE_SEQUENCE"); Object messageSequence2 = result.get(1).get("MESSAGE_SEQUENCE"); assertNotNull(messageSequence1); assertThat(messageSequence1, Matchers.instanceOf(Number.class)); assertNotNull(messageSequence2); assertThat(messageSequence2, Matchers.instanceOf(Number.class)); assertThat(((Number) messageSequence1).longValue(), Matchers.lessThan(((Number) messageSequence2).longValue())); this.jdbcChannelMessageStore.removeMessageGroup(messageGroup); }
@Test //INT-2649 public void testRollbackOnDelayerHandlerReleaseTask() throws Exception { AbstractApplicationContext context = new ClassPathXmlApplicationContext("DelayerHandlerRescheduleIntegrationTests-context.xml", getClass()); MessageChannel input = context.getBean("transactionalDelayerInput", MessageChannel.class); MessageGroupStore messageStore = context.getBean("messageStore", MessageGroupStore.class); String delayerMessageGroupId = UUIDConverter.getUUID("transactionalDelayer.messageGroupId").toString(); assertEquals(0, messageStore.messageGroupSize(delayerMessageGroupId)); input.send(MessageBuilder.withPayload("test").build()); Thread.sleep(1000); assertEquals(1, messageStore.messageGroupSize(delayerMessageGroupId)); //To check that 'rescheduling' works in the transaction boundaries too context.close(); context.refresh(); assertTrue(RollbackTxSync.latch.await(20, TimeUnit.SECONDS)); //On transaction rollback the delayed Message should remain in the persistent MessageStore assertEquals(1, messageStore.messageGroupSize(delayerMessageGroupId)); context.close(); }
@Test @Transactional public void testRemoveMessageGroup() throws Exception { JdbcTemplate template = new JdbcTemplate(dataSource); template.afterPropertiesSet(); String groupId = "X"; Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build(); messageStore.addMessageToGroup(groupId, message); messageStore.removeMessageGroup(groupId); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(0, group.size()); String uuidGroupId = UUIDConverter.getUUID(groupId).toString(); assertTrue(template.queryForList( "SELECT * from INT_GROUP_TO_MESSAGE where GROUP_KEY = '" + uuidGroupId + "'").size() == 0); }
@Test public void testRemoveMessageGroup() throws Exception { JdbcTemplate template = new JdbcTemplate(this.dataSource); template.afterPropertiesSet(); String groupId = "X"; Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build(); messageStore.addMessagesToGroup(groupId, message); messageStore.removeMessageGroup(groupId); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(0, group.size()); String uuidGroupId = UUIDConverter.getUUID(groupId).toString(); assertTrue(template.queryForList( "SELECT * from INT_GROUP_TO_MESSAGE where GROUP_KEY = ?", uuidGroupId).size() == 0); }
@Test public void testExpireMessageGroupOnCreateOnly() throws Exception { final String groupId = "X"; Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build(); messageStore.addMessagesToGroup(groupId, message); final CountDownLatch groupRemovalLatch = new CountDownLatch(1); messageStore.registerMessageGroupExpiryCallback((messageGroupStore, group) -> { messageGroupStore.removeMessageGroup(group.getGroupId()); groupRemovalLatch.countDown(); }); messageStore.expireMessageGroups(2000); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(1, group.size()); messageStore.addMessagesToGroup(groupId, MessageBuilder.withPayload("bar").setCorrelationId(groupId).build()); JdbcTemplate template = new JdbcTemplate(this.dataSource); template.afterPropertiesSet(); template.update("UPDATE INT_MESSAGE_GROUP set CREATED_DATE=? where GROUP_KEY=? and REGION=?", (PreparedStatementSetter) ps -> { ps.setTimestamp(1, new Timestamp(System.currentTimeMillis() - 10000)); ps.setString(2, UUIDConverter.getUUID(groupId).toString()); ps.setString(3, "DEFAULT"); }); messageStore.expireMessageGroups(2000); group = messageStore.getMessageGroup(groupId); assertEquals(0, group.size()); assertTrue(groupRemovalLatch.await(10, TimeUnit.SECONDS)); }