protected String generateRoutingKey(Message<?> requestMessage) { String key = this.routingKey; if (this.routingKeyGenerator != null) { key = this.routingKeyGenerator.processMessage(requestMessage); } return key; }
protected String generateExchangeName(Message<?> requestMessage) { String exchange = this.exchangeName; if (this.exchangeNameGenerator != null) { exchange = this.exchangeNameGenerator.processMessage(requestMessage); } return exchange; }
@Override protected void handleMessageInternal(Message<?> message) throws Exception { this.processor.processMessage(message); }
public Object getCorrelationKey(Message<?> message) { return this.processor.processMessage(message); }
public T processMessage(Message<?> message) { return this.targetProcessor.processMessage(message); }
/** * @see #setFileNameExpression(Expression) */ @Override public boolean get(Message<?> message, InputStreamCallback callback) { Assert.notNull(this.fileNameProcessor, "A 'fileNameExpression' is needed to use get"); String remotePath = this.fileNameProcessor.processMessage(message); return this.get(remotePath, callback); }
protected CorrelationData generateCorrelationData(Message<?> requestMessage) { CorrelationData correlationData = null; if (this.correlationDataGenerator != null) { UUID messageId = requestMessage.getHeaders().getId(); if (messageId == null) { messageId = NO_ID; } correlationData = new CorrelationDataWrapper(messageId.toString(), this.correlationDataGenerator.processMessage(requestMessage), requestMessage); } return correlationData; }
protected void addDelayProperty(Message<?> message, org.springframework.amqp.core.Message amqpMessage) { if (this.delayGenerator != null) { amqpMessage.getMessageProperties().setDelay(this.delayGenerator.processMessage(message)); } }
private Object doMv(Message<?> requestMessage) { String remoteFilePath = this.fileNameProcessor.processMessage(requestMessage); String remoteFilename = getRemoteFilename(remoteFilePath); String remoteDir = getRemoteDirectory(remoteFilePath, remoteFilename); String remoteFileNewPath = this.renameProcessor.processMessage(requestMessage); Assert.hasLength(remoteFileNewPath, "New filename cannot be empty"); Boolean result = this.remoteFileTemplate.execute(session -> mv(requestMessage, session, remoteFilePath, remoteFileNewPath)); return getMessageBuilderFactory() .withPayload(result) .setHeader(FileHeaders.REMOTE_DIRECTORY, remoteDir) .setHeader(FileHeaders.REMOTE_FILE, remoteFilename) .setHeader(FileHeaders.RENAME_TO, remoteFileNewPath); }
private Object doLs(Message<?> requestMessage) { String dir = this.fileNameProcessor != null ? this.fileNameProcessor.processMessage(requestMessage) : null; if (dir != null && !dir.endsWith(this.remoteFileTemplate.getRemoteFileSeparator())) { dir += this.remoteFileTemplate.getRemoteFileSeparator(); } final String fullDir = dir; List<?> payload = this.remoteFileTemplate.execute(session -> ls(requestMessage, session, fullDir)); return getMessageBuilderFactory() .withPayload(payload) .setHeader(FileHeaders.REMOTE_DIRECTORY, dir); }
private Object doNlst(Message<?> requestMessage) { String dir = this.fileNameProcessor != null ? this.fileNameProcessor.processMessage(requestMessage) : null; if (dir != null && !dir.endsWith(this.remoteFileTemplate.getRemoteFileSeparator())) { dir += this.remoteFileTemplate.getRemoteFileSeparator(); } final String fullDir = dir; List<?> payload = this.remoteFileTemplate.execute(session -> nlst(requestMessage, session, fullDir)); return getMessageBuilderFactory() .withPayload(payload) .setHeader(FileHeaders.REMOTE_DIRECTORY, dir); }
@Test public void testProcessMessage() { Expression expression = expressionParser.parseExpression("payload"); ExpressionEvaluatingMessageProcessor<String> processor = new ExpressionEvaluatingMessageProcessor<>(expression); processor.setBeanFactory(mock(BeanFactory.class)); assertEquals("foo", processor.processMessage(new GenericMessage<>("foo"))); }
private Object doMget(final Message<?> requestMessage) { final String remoteFilePath = this.fileNameProcessor.processMessage(requestMessage); final String remoteFilename = getRemoteFilename(remoteFilePath); final String remoteDir = getRemoteDirectory(remoteFilePath, remoteFilename); List<File> payload = this.remoteFileTemplate.execute(session -> mGet(requestMessage, session, remoteDir, remoteFilename)); return getMessageBuilderFactory() .withPayload(payload) .setHeader(FileHeaders.REMOTE_DIRECTORY, remoteDir) .setHeader(FileHeaders.REMOTE_FILE, remoteFilename); }
private Object doRm(Message<?> requestMessage) { final String remoteFilePath = this.fileNameProcessor.processMessage(requestMessage); String remoteFilename = getRemoteFilename(remoteFilePath); String remoteDir = getRemoteDirectory(remoteFilePath, remoteFilename); boolean payload = this.remoteFileTemplate.execute(session -> rm(requestMessage, session, remoteFilePath)); return getMessageBuilderFactory() .withPayload(payload) .setHeader(FileHeaders.REMOTE_DIRECTORY, remoteDir) .setHeader(FileHeaders.REMOTE_FILE, remoteFilename); }
@Test public void testProcessMessageWithDollarInBrackets() { Expression expression = expressionParser.parseExpression("headers['$foo_id']"); ExpressionEvaluatingMessageProcessor<String> processor = new ExpressionEvaluatingMessageProcessor<>(expression); processor.setBeanFactory(mock(BeanFactory.class)); Message<String> message = MessageBuilder.withPayload("foo").setHeader("$foo_id", "abc").build(); assertEquals("abc", processor.processMessage(message)); }
@Test public void testProcessMessageWithDollarPropertyAccess() { Expression expression = expressionParser.parseExpression("headers.$foo_id"); ExpressionEvaluatingMessageProcessor<String> processor = new ExpressionEvaluatingMessageProcessor<>(expression); processor.setBeanFactory(mock(BeanFactory.class)); Message<String> message = MessageBuilder.withPayload("foo").setHeader("$foo_id", "xyz").build(); assertEquals("xyz", processor.processMessage(message)); }
@Test public void testProcessMessageWithStaticKey() { Expression expression = expressionParser.parseExpression("headers[headers.ID]"); ExpressionEvaluatingMessageProcessor<UUID> processor = new ExpressionEvaluatingMessageProcessor<>(expression); processor.setBeanFactory(mock(BeanFactory.class)); GenericMessage<String> message = new GenericMessage<>("foo"); assertEquals(message.getHeaders().getId(), processor.processMessage(message)); }
@Test public void gatewayWithDestBeanRefExpression() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "jmsOutboundGatewayReplyDestOptions.xml", this.getClass()); EventDrivenConsumer endpoint = (EventDrivenConsumer) context.getBean("jmsGatewayDestExpressionBeanRef"); DirectFieldAccessor accessor = new DirectFieldAccessor(endpoint); JmsOutboundGateway gateway = (JmsOutboundGateway) accessor.getPropertyValue("handler"); ExpressionEvaluatingMessageProcessor<?> processor = TestUtils.getPropertyValue(gateway, "replyDestinationExpressionProcessor", ExpressionEvaluatingMessageProcessor.class); Expression expression = TestUtils.getPropertyValue(gateway, "replyDestinationExpressionProcessor.expression", Expression.class); assertEquals("@replyQueue", expression.getExpressionString()); assertSame(context.getBean("replyQueue"), processor.processMessage(null)); context.close(); }
@Test public void testProcessMessageWithBeanAsMethodArgument() throws Exception { StaticApplicationContext context = new StaticApplicationContext(); BeanDefinition beanDefinition = new RootBeanDefinition(String.class); beanDefinition.getConstructorArgumentValues().addGenericArgumentValue("bar"); context.registerBeanDefinition("testString", beanDefinition); context.registerBeanDefinition(IntegrationContextUtils.INTEGRATION_EVALUATION_CONTEXT_BEAN_NAME, new RootBeanDefinition(IntegrationEvaluationContextFactoryBean.class)); context.refresh(); Expression expression = expressionParser.parseExpression("payload.concat(@testString)"); ExpressionEvaluatingMessageProcessor<String> processor = new ExpressionEvaluatingMessageProcessor<>(expression); processor.setBeanFactory(context); processor.afterPropertiesSet(); GenericMessage<String> message = new GenericMessage<>("foo"); assertEquals("foobar", processor.processMessage(message)); }
@Test public void testWithBeanExpression() { FtpOutboundGateway gateway = TestUtils.getPropertyValue(withBeanExpression, "handler", FtpOutboundGateway.class); ExpressionEvaluatingMessageProcessor<?> processor = TestUtils.getPropertyValue(gateway, "fileNameProcessor", ExpressionEvaluatingMessageProcessor.class); assertNotNull(processor); assertEquals("foo", processor.processMessage(MessageBuilder.withPayload("bar").build())); }