@Test(expected = IllegalArgumentException.class) public void testWrongSignatureNamedMethod() { AbstractTestComponent delegate = new AbstractTestComponent() { @SuppressWarnings("unused") public void aMethod(Integer item) { executed = true; } }; factoryBean.setDelegate(delegate); Map<String, String> metaDataMap = new HashMap<>(); metaDataMap.put(AFTER_WRITE.getPropertyName(), "aMethod"); factoryBean.setMetaDataMap(metaDataMap); factoryBean.getObject(); }
@Test public void testAnnotatingInterfaceResultsInOneCall() throws Exception { MultipleAfterStep delegate = new MultipleAfterStep(); factoryBean.setDelegate(delegate); Map<String, String> metaDataMap = new HashMap<>(); metaDataMap.put(AFTER_STEP.getPropertyName(), "afterStep"); factoryBean.setMetaDataMap(metaDataMap); StepListener listener = (StepListener) factoryBean.getObject(); ((StepExecutionListener) listener).afterStep(stepExecution); assertEquals(1, delegate.callcount); }
@Test public void testEmptySignatureNamedMethod() { AbstractTestComponent delegate = new AbstractTestComponent() { @SuppressWarnings("unused") public void aMethod() { executed = true; } }; factoryBean.setDelegate(delegate); Map<String, String> metaDataMap = new HashMap<>(); metaDataMap.put(AFTER_WRITE.getPropertyName(), "aMethod"); factoryBean.setMetaDataMap(metaDataMap); @SuppressWarnings("unchecked") ItemWriteListener<String> listener = (ItemWriteListener<String>) factoryBean.getObject(); listener.afterWrite(Arrays.asList("foo", "bar")); assertTrue(delegate.isExecuted()); }
@Test public void testRightSignatureNamedMethod() { AbstractTestComponent delegate = new AbstractTestComponent() { @SuppressWarnings("unused") public void aMethod(List<String> items) { executed = true; assertEquals("foo", items.get(0)); assertEquals("bar", items.get(1)); } }; factoryBean.setDelegate(delegate); Map<String, String> metaDataMap = new HashMap<>(); metaDataMap.put(AFTER_WRITE.getPropertyName(), "aMethod"); factoryBean.setMetaDataMap(metaDataMap); @SuppressWarnings("unchecked") ItemWriteListener<String> listener = (ItemWriteListener<String>) factoryBean.getObject(); listener.afterWrite(Arrays.asList("foo", "bar")); assertTrue(delegate.isExecuted()); }
@Test public void testAllThreeTypes() throws Exception { // Test to make sure if someone has annotated a method, implemented the // interface, and given a string // method name, that all three will be called ThreeStepExecutionListener delegate = new ThreeStepExecutionListener(); factoryBean.setDelegate(delegate); Map<String, String> metaDataMap = new HashMap<>(); metaDataMap.put(AFTER_STEP.getPropertyName(), "destroy"); factoryBean.setMetaDataMap(metaDataMap); StepListener listener = (StepListener) factoryBean.getObject(); ((StepExecutionListener) listener).afterStep(stepExecution); assertEquals(3, delegate.callcount); }