diff --git a/core/pom.xml b/core/pom.xml
index dd48568..958f86c 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -46,6 +46,12 @@
1.2.15
test
+
+ org.easymock
+ easymock
+ 2.5.2
+ test
+
diff --git a/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java b/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java
index 1832836..21a468a 100644
--- a/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java
+++ b/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java
@@ -47,7 +47,7 @@ public class BeanListFactoryBean extends AbstractTypeAwareSupport
List beans = getBeans();
Collections.sort(beans, COMPARATOR);
- return getBeans();
+ return beans;
}
diff --git a/core/src/test/java/org/synyx/hera/core/support/BeanListFactoryBeanUnitTest.java b/core/src/test/java/org/synyx/hera/core/support/BeanListFactoryBeanUnitTest.java
new file mode 100644
index 0000000..7e3925c
--- /dev/null
+++ b/core/src/test/java/org/synyx/hera/core/support/BeanListFactoryBeanUnitTest.java
@@ -0,0 +1,79 @@
+package org.synyx.hera.core.support;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.Ordered;
+
+
+/**
+ * Unit test for {@link BeanListFactoryBean}.
+ *
+ * @author Oliver Gierke - gierke@synyx.de
+ */
+public class BeanListFactoryBeanUnitTest {
+
+ private BeanListFactoryBean factory;
+ private ApplicationContext context;
+
+
+ @Before
+ public void setUp() {
+
+ context = createNiceMock(ApplicationContext.class);
+
+ factory = new BeanListFactoryBean();
+ factory.setApplicationContext(context);
+ factory.setType(Ordered.class);
+ }
+
+
+ @Test
+ public void regardsOrderOfBeans() throws Exception {
+
+ // They shall be switched in the result.
+ Ordered first = getOrdered(5);
+ Ordered second = getOrdered(0);
+
+ Map beans = new HashMap();
+ beans.put("first", first);
+ beans.put("second", second);
+
+ expect(context.getBeansOfType(Ordered.class)).andReturn(beans)
+ .anyTimes();
+ replay(context);
+
+ Object result = factory.getObject();
+ assertTrue(result instanceof List>);
+
+ List members = (List) result;
+
+ assertEquals(0, members.indexOf(second));
+ assertEquals(1, members.indexOf(first));
+ }
+
+
+ /**
+ * Returns an {@link Ordered} with the given order.
+ *
+ * @param order
+ * @return
+ */
+ public Ordered getOrdered(final int order) {
+
+ return new Ordered() {
+
+ public int getOrder() {
+
+ return order;
+ }
+ };
+ }
+}