/** * Convenience method to wrap any object and expose the appropriate * {@link JobExecutionListener} interfaces. * * @param delegate a delegate object * @return a JobListener instance constructed from the delegate */ public static JobExecutionListener getListener(Object delegate) { JobListenerFactoryBean factory = new JobListenerFactoryBean(); factory.setDelegate(delegate); return (JobExecutionListener) factory.getObject(); }
@Test public void testEqualityOfProxies() throws Exception { JobListenerWithInterface delegate = new JobListenerWithInterface(); Object listener1 = JobListenerFactoryBean.getListener(delegate); Object listener2 = JobListenerFactoryBean.getListener(delegate); assertEquals(listener1, listener2); }
@Test public void testAnnotationsIsListener() throws Exception { assertTrue(JobListenerFactoryBean.isListener(new Object() { @BeforeJob public void foo(JobExecution execution) { } })); }
@Test(expected = IllegalArgumentException.class) public void testWrongSignatureAnnotation() { AbstractTestComponent delegate = new AbstractTestComponent() { @AfterJob public void aMethod(Integer item) { executed = true; } }; factoryBean.setDelegate(delegate); factoryBean.getObject(); }
@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_JOB.getPropertyName(), "aMethod"); factoryBean.setMetaDataMap(metaDataMap); factoryBean.getObject(); }
@Before public void setUp() { factoryBean = new JobListenerFactoryBean(); }
@Test public void testVanillaInterfaceWithProxy() throws Exception { JobListenerWithInterface delegate = new JobListenerWithInterface(); ProxyFactory factory = new ProxyFactory(delegate); factoryBean.setDelegate(factory.getProxy()); Object listener = factoryBean.getObject(); assertTrue(listener instanceof JobExecutionListener); }
@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_JOB.getPropertyName(), "aMethod"); factoryBean.setMetaDataMap(metaDataMap); JobExecutionListener listener = (JobExecutionListener) factoryBean.getObject(); listener.afterJob(new JobExecution(1L)); assertTrue(delegate.isExecuted()); }
/** * Convenience method to wrap any object and expose the appropriate * {@link JobExecutionListener} interfaces. * * @param delegate a delegate object * @return a JobListener instance constructed from the delegate */ public static JobExecutionListener getListener(Object delegate) { JobListenerFactoryBean factory = new JobListenerFactoryBean(); factory.setDelegate(delegate); return (JobExecutionListener) factory.getObject(); }
@Test public void testEmptySignatureAnnotation() { AbstractTestComponent delegate = new AbstractTestComponent() { @AfterJob public void aMethod() { executed = true; } }; factoryBean.setDelegate(delegate); JobExecutionListener listener = (JobExecutionListener) factoryBean.getObject(); listener.afterJob(new JobExecution(1L)); assertTrue(delegate.isExecuted()); }
@Test public void testRightSignatureNamedMethod() { AbstractTestComponent delegate = new AbstractTestComponent() { @SuppressWarnings("unused") public void aMethod(JobExecution jobExecution) { executed = true; assertEquals(new Long(25), jobExecution.getId()); } }; factoryBean.setDelegate(delegate); Map<String, String> metaDataMap = new HashMap<>(); metaDataMap.put(AFTER_JOB.getPropertyName(), "aMethod"); factoryBean.setMetaDataMap(metaDataMap); JobExecutionListener listener = (JobExecutionListener) factoryBean.getObject(); listener.afterJob(new JobExecution(25L)); assertTrue(delegate.isExecuted()); }
@Test public void testUseInHashSet() throws Exception { JobListenerWithInterface delegate = new JobListenerWithInterface(); Object listener = JobListenerFactoryBean.getListener(delegate); Object other = JobListenerFactoryBean.getListener(delegate); assertTrue(listener instanceof JobExecutionListener); Set<JobExecutionListener> listeners = new HashSet<>(); listeners.add((JobExecutionListener) listener); listeners.add((JobExecutionListener) other); assertTrue(listeners.contains(listener)); assertEquals(1, listeners.size()); }
@Test public void testInterfaceIsListener() throws Exception { assertTrue(JobListenerFactoryBean.isListener(new JobListenerWithInterface())); }
/** * Convenience method to wrap any object and expose the appropriate * {@link JobExecutionListener} interfaces. * * @param delegate a delegate object * @return a JobListener instance constructed from the delegate */ public static JobExecutionListener getListener(Object delegate) { JobListenerFactoryBean factory = new JobListenerFactoryBean(); factory.setDelegate(delegate); return (JobExecutionListener) factory.getObject(); }
@Test public void testRightSignatureAnnotation() { AbstractTestComponent delegate = new AbstractTestComponent() { @AfterJob public void aMethod(JobExecution jobExecution) { executed = true; assertEquals(new Long(25), jobExecution.getId()); } }; factoryBean.setDelegate(delegate); JobExecutionListener listener = (JobExecutionListener) factoryBean.getObject(); listener.afterJob(new JobExecution(25L)); assertTrue(delegate.isExecuted()); }
@Test public void testAnnotationsWithOrdered() throws Exception { Object delegate = new Ordered() { @BeforeJob public void foo(JobExecution execution) { } @Override public int getOrder() { return 3; } }; JobExecutionListener listener = JobListenerFactoryBean.getListener(delegate); assertTrue("Listener is not of correct type", listener instanceof Ordered); assertEquals(3, ((Ordered) listener).getOrder()); }
/** * Convenience method to wrap any object and expose the appropriate * {@link JobExecutionListener} interfaces. * * @param delegate a delegate object * @return a JobListener instance constructed from the delegate */ public static JobExecutionListener getListener(Object delegate) { JobListenerFactoryBean factory = new JobListenerFactoryBean(); factory.setDelegate(delegate); return (JobExecutionListener) factory.getObject(); }
@Test public void testWithInterface() throws Exception { JobListenerWithInterface delegate = new JobListenerWithInterface(); factoryBean.setDelegate(delegate); JobExecutionListener listener = (JobExecutionListener) factoryBean.getObject(); JobExecution jobExecution = new JobExecution(11L); listener.beforeJob(jobExecution); listener.afterJob(jobExecution); assertTrue(delegate.beforeJobCalled); assertTrue(delegate.afterJobCalled); }
@Test public void testFactoryMethod() throws Exception { JobListenerWithInterface delegate = new JobListenerWithInterface(); Object listener = JobListenerFactoryBean.getListener(delegate); assertTrue(listener instanceof JobExecutionListener); ((JobExecutionListener) listener).afterJob(new JobExecution(11L)); assertTrue(delegate.afterJobCalled); }
/** * Convenience method to wrap any object and expose the appropriate * {@link JobExecutionListener} interfaces. * * @param delegate a delegate object * @return a JobListener instance constructed from the delegate */ public static JobExecutionListener getListener(Object delegate) { JobListenerFactoryBean factory = new JobListenerFactoryBean(); factory.setDelegate(delegate); return (JobExecutionListener) factory.getObject(); }