* let @BeanListFactoryBean@ regards bean order before handing them out to clients

git-svn-id: svn+ssh://svn.synyx.de/var/svn/synyx/opensource/hera/trunk@6963 5a64d73e-33d6-4ccc-9058-23f8668ecac9
This commit is contained in:
Oliver Gierke
2009-09-23 08:35:18 +00:00
parent 27782f57bd
commit 9879cb70ab
3 changed files with 86 additions and 1 deletions

View File

@@ -46,6 +46,12 @@
<version>1.2.15</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>2.5.2</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -47,7 +47,7 @@ public class BeanListFactoryBean<T> extends AbstractTypeAwareSupport<T>
List<T> beans = getBeans();
Collections.sort(beans, COMPARATOR);
return getBeans();
return beans;
}

View File

@@ -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<Ordered> factory;
private ApplicationContext context;
@Before
public void setUp() {
context = createNiceMock(ApplicationContext.class);
factory = new BeanListFactoryBean<Ordered>();
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<String, Ordered> beans = new HashMap<String, Ordered>();
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<Ordered> 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;
}
};
}
}