diff --git a/spring-integration-core/src/test/java/org/springframework/integration/test/util/TestUtils.java b/spring-integration-core/src/test/java/org/springframework/integration/test/util/TestUtils.java index 3f2584ffca..659281a178 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/test/util/TestUtils.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/test/util/TestUtils.java @@ -1,11 +1,11 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -19,6 +19,7 @@ package org.springframework.integration.test.util; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import java.io.File; import java.util.Properties; import java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy; @@ -52,128 +53,138 @@ import org.springframework.util.StringUtils; * @author Mark Fisher * @author Iwein Fuld * @author Oleg Zhurakousky + * @author Artem Bilan */ public abstract class TestUtils { public static Object getPropertyValue(Object root, String propertyPath) { - Object value = null; - DirectFieldAccessor accessor = new DirectFieldAccessor(root); - String[] tokens = propertyPath.split("\\."); - for (int i = 0; i < tokens.length; i++) { - value = accessor.getPropertyValue(tokens[i]); - if (value != null) { - accessor = new DirectFieldAccessor(value); - } else if (i == tokens.length - 1) { - return null; - } else { - throw new IllegalArgumentException( - "intermediate property '" + tokens[i] + "' is null"); - } - } - return value; - } + Object value = null; + DirectFieldAccessor accessor = new DirectFieldAccessor(root); + String[] tokens = propertyPath.split("\\."); + for (int i = 0; i < tokens.length; i++) { + value = accessor.getPropertyValue(tokens[i]); + if (value != null) { + accessor = new DirectFieldAccessor(value); + } else if (i == tokens.length - 1) { + return null; + } else { + throw new IllegalArgumentException( + "intermediate property '" + tokens[i] + "' is null"); + } + } + return value; + } - @SuppressWarnings("unchecked") - public static T getPropertyValue(Object root, String propertyPath, Class type) { - Object value = getPropertyValue(root, propertyPath); - Assert.isAssignable(type, value.getClass()); - return (T) value; - } + @SuppressWarnings("unchecked") + public static T getPropertyValue(Object root, String propertyPath, Class type) { + Object value = getPropertyValue(root, propertyPath); + Assert.isAssignable(type, value.getClass()); + return (T) value; + } - public static TestApplicationContext createTestApplicationContext() { - TestApplicationContext context = new TestApplicationContext(); - ErrorHandler errorHandler = new MessagePublishingErrorHandler(new BeanFactoryChannelResolver(context)); - ThreadPoolTaskScheduler scheduler = createTaskScheduler(10); - scheduler.setErrorHandler(errorHandler); - registerBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME, scheduler, context); - return context; - } + public static TestApplicationContext createTestApplicationContext() { + TestApplicationContext context = new TestApplicationContext(); + ErrorHandler errorHandler = new MessagePublishingErrorHandler(new BeanFactoryChannelResolver(context)); + ThreadPoolTaskScheduler scheduler = createTaskScheduler(10); + scheduler.setErrorHandler(errorHandler); + registerBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME, scheduler, context); + return context; + } - public static ThreadPoolTaskScheduler createTaskScheduler(int poolSize) { - ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); - scheduler.setPoolSize(poolSize); - scheduler.setRejectedExecutionHandler(new CallerRunsPolicy()); - scheduler.afterPropertiesSet(); - return scheduler; - } + public static ThreadPoolTaskScheduler createTaskScheduler(int poolSize) { + ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); + scheduler.setPoolSize(poolSize); + scheduler.setRejectedExecutionHandler(new CallerRunsPolicy()); + scheduler.afterPropertiesSet(); + return scheduler; + } - private static void registerBean(String beanName, Object bean, BeanFactory beanFactory) { - Assert.notNull(beanName, "bean name must not be null"); - ConfigurableListableBeanFactory configurableListableBeanFactory = null; - if (beanFactory instanceof ConfigurableListableBeanFactory) { - configurableListableBeanFactory = (ConfigurableListableBeanFactory) beanFactory; - } else if (beanFactory instanceof GenericApplicationContext) { - configurableListableBeanFactory = ((GenericApplicationContext) beanFactory).getBeanFactory(); - } - if (bean instanceof BeanNameAware) { - ((BeanNameAware) bean).setBeanName(beanName); - } - if (bean instanceof BeanFactoryAware) { - ((BeanFactoryAware) bean).setBeanFactory(beanFactory); - } - if (bean instanceof InitializingBean) { - try { - ((InitializingBean) bean).afterPropertiesSet(); - } - catch (Exception e) { - throw new FatalBeanException("failed to register bean with test context", e); - } - } - configurableListableBeanFactory.registerSingleton(beanName, bean); - } + private static void registerBean(String beanName, Object bean, BeanFactory beanFactory) { + Assert.notNull(beanName, "bean name must not be null"); + ConfigurableListableBeanFactory configurableListableBeanFactory = null; + if (beanFactory instanceof ConfigurableListableBeanFactory) { + configurableListableBeanFactory = (ConfigurableListableBeanFactory) beanFactory; + } else if (beanFactory instanceof GenericApplicationContext) { + configurableListableBeanFactory = ((GenericApplicationContext) beanFactory).getBeanFactory(); + } + if (bean instanceof BeanNameAware) { + ((BeanNameAware) bean).setBeanName(beanName); + } + if (bean instanceof BeanFactoryAware) { + ((BeanFactoryAware) bean).setBeanFactory(beanFactory); + } + if (bean instanceof InitializingBean) { + try { + ((InitializingBean) bean).afterPropertiesSet(); + } + catch (Exception e) { + throw new FatalBeanException("failed to register bean with test context", e); + } + } + configurableListableBeanFactory.registerSingleton(beanName, bean); + } - public static class TestApplicationContext extends GenericApplicationContext { + public static class TestApplicationContext extends GenericApplicationContext { - private TestApplicationContext() { - super(); - } + private TestApplicationContext() { + super(); + } - public void registerChannel(String channelName, MessageChannel channel) { - if (channel instanceof NamedComponent && ((NamedComponent) channel).getComponentName() != null) { - if (channelName == null) { - channelName = ((NamedComponent) channel).getComponentName(); - } - else { - Assert.isTrue(((NamedComponent) channel).getComponentName().equals(channelName), - "channel name has already been set with a conflicting value"); - } - } - registerBean(channelName, channel, this); - } + public void registerChannel(String channelName, MessageChannel channel) { + if (channel instanceof NamedComponent && ((NamedComponent) channel).getComponentName() != null) { + if (channelName == null) { + channelName = ((NamedComponent) channel).getComponentName(); + } + else { + Assert.isTrue(((NamedComponent) channel).getComponentName().equals(channelName), + "channel name has already been set with a conflicting value"); + } + } + registerBean(channelName, channel, this); + } - public void registerEndpoint(String endpointName, AbstractEndpoint endpoint) { - registerBean(endpointName, endpoint, this); - } - } + public void registerEndpoint(String endpointName, AbstractEndpoint endpoint) { + registerBean(endpointName, endpoint, this); + } + } - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") public static MessageHandler handlerExpecting(final Matcher messageMatcher) { - return new MessageHandler() { - public void handleMessage(Message message) throws MessageRejectedException, MessageHandlingException, MessageDeliveryException { - assertThat(message, is(messageMatcher)); - } - }; - } - - /** - * @param history a message history - * @param componentName the name of a component to scan for - * @param startingIndex the index to start scanning - * @return the properties provided by the named component or null if none available - */ - public static Properties locateComponentInHistory(MessageHistory history, String componentName, int startingIndex){ - Assert.notNull(history, "'history' must not be null"); - Assert.isTrue(StringUtils.hasText(componentName), "'componentName' must be provided"); - Assert.isTrue(startingIndex < history.size(), "'startingIndex' can not be greater then size of history"); - Properties component = null; - for (int i = startingIndex; i < history.size(); i++) { - Properties properties = history.get(i); - if (componentName.equals(properties.get("name"))){ + return new MessageHandler() { + public void handleMessage(Message message) throws MessageRejectedException, MessageHandlingException, MessageDeliveryException { + assertThat(message, is(messageMatcher)); + } + }; + } + + /** + * @param history a message history + * @param componentName the name of a component to scan for + * @param startingIndex the index to start scanning + * @return the properties provided by the named component or null if none available + */ + public static Properties locateComponentInHistory(MessageHistory history, String componentName, int startingIndex){ + Assert.notNull(history, "'history' must not be null"); + Assert.isTrue(StringUtils.hasText(componentName), "'componentName' must be provided"); + Assert.isTrue(startingIndex < history.size(), "'startingIndex' can not be greater then size of history"); + Properties component = null; + for (int i = startingIndex; i < history.size(); i++) { + Properties properties = history.get(i); + if (componentName.equals(properties.get("name"))){ component = properties; break; } - } + } return component; - } -} \ No newline at end of file + } + + /** + * Update file path by replacing any '/' with the system's file separator. + * @param s The file path containing '/'. + * @return The updated file path (if necessary). + */ + public static String applySystemFileSeparator(String s) { + return s.replaceAll("/", java.util.regex.Matcher.quoteReplacement(File.separator)); + } +} diff --git a/spring-integration-test/src/main/java/org/springframework/integration/test/util/TestUtils.java b/spring-integration-test/src/main/java/org/springframework/integration/test/util/TestUtils.java index c36e1a210c..659281a178 100644 --- a/spring-integration-test/src/main/java/org/springframework/integration/test/util/TestUtils.java +++ b/spring-integration-test/src/main/java/org/springframework/integration/test/util/TestUtils.java @@ -1,11 +1,11 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -57,126 +57,133 @@ import org.springframework.util.StringUtils; */ public abstract class TestUtils { - public static Object getPropertyValue(Object root, String propertyPath) { - Object value = null; - DirectFieldAccessor accessor = new DirectFieldAccessor(root); - String[] tokens = propertyPath.split("\\."); - for (int i = 0; i < tokens.length; i++) { - value = accessor.getPropertyValue(tokens[i]); - if (value != null) { - accessor = new DirectFieldAccessor(value); - } else if (i == tokens.length - 1) { - return null; - } else { - throw new IllegalArgumentException( - "intermediate property '" + tokens[i] + "' is null"); - } - } - return value; - } + public static Object getPropertyValue(Object root, String propertyPath) { + Object value = null; + DirectFieldAccessor accessor = new DirectFieldAccessor(root); + String[] tokens = propertyPath.split("\\."); + for (int i = 0; i < tokens.length; i++) { + value = accessor.getPropertyValue(tokens[i]); + if (value != null) { + accessor = new DirectFieldAccessor(value); + } else if (i == tokens.length - 1) { + return null; + } else { + throw new IllegalArgumentException( + "intermediate property '" + tokens[i] + "' is null"); + } + } + return value; + } - @SuppressWarnings("unchecked") - public static T getPropertyValue(Object root, String propertyPath, Class type) { - Object value = getPropertyValue(root, propertyPath); - Assert.isAssignable(type, value.getClass()); - return (T) value; - } + @SuppressWarnings("unchecked") + public static T getPropertyValue(Object root, String propertyPath, Class type) { + Object value = getPropertyValue(root, propertyPath); + Assert.isAssignable(type, value.getClass()); + return (T) value; + } - public static TestApplicationContext createTestApplicationContext() { - TestApplicationContext context = new TestApplicationContext(); - ErrorHandler errorHandler = new MessagePublishingErrorHandler(new BeanFactoryChannelResolver(context)); - ThreadPoolTaskScheduler scheduler = createTaskScheduler(10); - scheduler.setErrorHandler(errorHandler); - registerBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME, scheduler, context); - return context; - } + public static TestApplicationContext createTestApplicationContext() { + TestApplicationContext context = new TestApplicationContext(); + ErrorHandler errorHandler = new MessagePublishingErrorHandler(new BeanFactoryChannelResolver(context)); + ThreadPoolTaskScheduler scheduler = createTaskScheduler(10); + scheduler.setErrorHandler(errorHandler); + registerBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME, scheduler, context); + return context; + } - public static ThreadPoolTaskScheduler createTaskScheduler(int poolSize) { - ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); - scheduler.setPoolSize(poolSize); - scheduler.setRejectedExecutionHandler(new CallerRunsPolicy()); - scheduler.afterPropertiesSet(); - return scheduler; - } + public static ThreadPoolTaskScheduler createTaskScheduler(int poolSize) { + ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); + scheduler.setPoolSize(poolSize); + scheduler.setRejectedExecutionHandler(new CallerRunsPolicy()); + scheduler.afterPropertiesSet(); + return scheduler; + } - private static void registerBean(String beanName, Object bean, BeanFactory beanFactory) { - Assert.notNull(beanName, "bean name must not be null"); - ConfigurableListableBeanFactory configurableListableBeanFactory = null; - if (beanFactory instanceof ConfigurableListableBeanFactory) { - configurableListableBeanFactory = (ConfigurableListableBeanFactory) beanFactory; - } else if (beanFactory instanceof GenericApplicationContext) { - configurableListableBeanFactory = ((GenericApplicationContext) beanFactory).getBeanFactory(); - } - if (bean instanceof BeanNameAware) { - ((BeanNameAware) bean).setBeanName(beanName); - } - if (bean instanceof BeanFactoryAware) { - ((BeanFactoryAware) bean).setBeanFactory(beanFactory); - } - if (bean instanceof InitializingBean) { - try { - ((InitializingBean) bean).afterPropertiesSet(); - } - catch (Exception e) { - throw new FatalBeanException("failed to register bean with test context", e); - } - } - configurableListableBeanFactory.registerSingleton(beanName, bean); - } + private static void registerBean(String beanName, Object bean, BeanFactory beanFactory) { + Assert.notNull(beanName, "bean name must not be null"); + ConfigurableListableBeanFactory configurableListableBeanFactory = null; + if (beanFactory instanceof ConfigurableListableBeanFactory) { + configurableListableBeanFactory = (ConfigurableListableBeanFactory) beanFactory; + } else if (beanFactory instanceof GenericApplicationContext) { + configurableListableBeanFactory = ((GenericApplicationContext) beanFactory).getBeanFactory(); + } + if (bean instanceof BeanNameAware) { + ((BeanNameAware) bean).setBeanName(beanName); + } + if (bean instanceof BeanFactoryAware) { + ((BeanFactoryAware) bean).setBeanFactory(beanFactory); + } + if (bean instanceof InitializingBean) { + try { + ((InitializingBean) bean).afterPropertiesSet(); + } + catch (Exception e) { + throw new FatalBeanException("failed to register bean with test context", e); + } + } + configurableListableBeanFactory.registerSingleton(beanName, bean); + } - public static class TestApplicationContext extends GenericApplicationContext { + public static class TestApplicationContext extends GenericApplicationContext { - private TestApplicationContext() { - super(); - } + private TestApplicationContext() { + super(); + } - public void registerChannel(String channelName, MessageChannel channel) { - if (channel instanceof NamedComponent && ((NamedComponent) channel).getComponentName() != null) { - if (channelName == null) { - channelName = ((NamedComponent) channel).getComponentName(); - } - else { - Assert.isTrue(((NamedComponent) channel).getComponentName().equals(channelName), - "channel name has already been set with a conflicting value"); - } - } - registerBean(channelName, channel, this); - } + public void registerChannel(String channelName, MessageChannel channel) { + if (channel instanceof NamedComponent && ((NamedComponent) channel).getComponentName() != null) { + if (channelName == null) { + channelName = ((NamedComponent) channel).getComponentName(); + } + else { + Assert.isTrue(((NamedComponent) channel).getComponentName().equals(channelName), + "channel name has already been set with a conflicting value"); + } + } + registerBean(channelName, channel, this); + } - public void registerEndpoint(String endpointName, AbstractEndpoint endpoint) { - registerBean(endpointName, endpoint, this); - } - } + public void registerEndpoint(String endpointName, AbstractEndpoint endpoint) { + registerBean(endpointName, endpoint, this); + } + } - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") public static MessageHandler handlerExpecting(final Matcher messageMatcher) { - return new MessageHandler() { - public void handleMessage(Message message) throws MessageRejectedException, MessageHandlingException, MessageDeliveryException { - assertThat(message, is(messageMatcher)); - } - }; - } - public static Properties locateComponentInHistory(MessageHistory history, String componentName, int startingIndex){ - Assert.notNull(history, "'history' must not be null"); - Assert.isTrue(StringUtils.hasText(componentName), "'componentName' must be provided"); - Assert.isTrue(startingIndex < history.size(), "'startingIndex' can not be greater then size of history"); - Properties component = null; - for (int i = startingIndex; i < history.size(); i++) { - Properties properties = history.get(i); - if (componentName.equals(properties.get("name"))){ + return new MessageHandler() { + public void handleMessage(Message message) throws MessageRejectedException, MessageHandlingException, MessageDeliveryException { + assertThat(message, is(messageMatcher)); + } + }; + } + + /** + * @param history a message history + * @param componentName the name of a component to scan for + * @param startingIndex the index to start scanning + * @return the properties provided by the named component or null if none available + */ + public static Properties locateComponentInHistory(MessageHistory history, String componentName, int startingIndex){ + Assert.notNull(history, "'history' must not be null"); + Assert.isTrue(StringUtils.hasText(componentName), "'componentName' must be provided"); + Assert.isTrue(startingIndex < history.size(), "'startingIndex' can not be greater then size of history"); + Properties component = null; + for (int i = startingIndex; i < history.size(); i++) { + Properties properties = history.get(i); + if (componentName.equals(properties.get("name"))){ component = properties; break; } - } + } return component; - } + } - /** - * Update file path by replacing any '/' with the system's file separator. - * @param s The file path containing '/'. - * @return The updated file path (if necessary). - */ + /** + * Update file path by replacing any '/' with the system's file separator. + * @param s The file path containing '/'. + * @return The updated file path (if necessary). + */ public static String applySystemFileSeparator(String s) { return s.replaceAll("/", java.util.regex.Matcher.quoteReplacement(File.separator)); }