@Test public void testInterfacesWithClassPointcut() { pico.addComponent(Dao.class, DaoImpl.class); pico.registerMixin(cuts.instancesOf(Dao.class), IdentifiableMixin.class); pico.registerInterfaces(cuts.instancesOf(Dao.class), new Class[] {AnotherInterface.class}); Dao dao = pico.getComponent(Dao.class); assertTrue(dao instanceof Identifiable); assertTrue(dao instanceof AnotherInterface); }
@Test public void testMixin() { pico.registerMixin(cuts.instancesOf(Dao.class), IdentifiableMixin.class); pico.addComponent(Dao.class, DaoImpl.class); Dao dao = pico.getComponent(Dao.class); verifyMixin(dao); assertTrue(dao instanceof AnotherInterface); }
@Test public void testInterceptor() { StringBuffer log = new StringBuffer(); pico.registerInterceptor( cuts.instancesOf(Dao.class), cuts.allMethods(), new LoggingInterceptor(log)); pico.addComponent(Dao.class, DaoImpl.class); Dao dao = pico.getComponent(Dao.class); verifyIntercepted(dao, log); }
@Test public void testMixinExplicitInterfaces() { pico.registerMixin( cuts.instancesOf(Dao.class), new Class[] {Identifiable.class}, IdentifiableMixin.class); pico.addComponent(Dao.class, DaoImpl.class); Dao dao = pico.getComponent(Dao.class); verifyMixin(dao); assertFalse(dao instanceof AnotherInterface); }
@Test public void testInterfacesWithClassPointcutNoAdviceStillSetsUp() { pico.addComponent(Dao.class, DaoImpl.class); pico.registerInterfaces(cuts.instancesOf(Dao.class), new Class[] {AnotherInterface.class}); Dao dao = pico.getComponent(Dao.class); // dynaop doesn't add any interfaces if there's no advice applied to the // object: assertFalse(dao instanceof Identifiable); assertTrue(dao instanceof AnotherInterface); }
@Test public void testContainerSuppliedInterceptor() { pico.registerInterceptor( cuts.instancesOf(Dao.class), cuts.allMethods(), LoggingInterceptor.class); pico.addComponent("log", StringBuffer.class); pico.addComponent(LoggingInterceptor.class); pico.addComponent(Dao.class, DaoImpl.class); Dao dao = pico.getComponent(Dao.class); StringBuffer log = (StringBuffer) pico.getComponent("log"); verifyIntercepted(dao, log); }
@Test public void testContainerSuppliedMixin() { pico.addComponent(IdGenerator.class, IdGeneratorImpl.class); pico.addComponent("order1", OrderEntityImpl.class); pico.addComponent("order2", OrderEntityImpl.class); pico.registerMixin( cuts.instancesOf(OrderEntity.class), new Class[] {Identifiable.class}, IdentifiableMixin.class); Identifiable i1 = (Identifiable) pico.getComponent("order1"); Identifiable i2 = (Identifiable) pico.getComponent("order2"); assertEquals(1, i1.getId()); assertEquals(2, i2.getId()); i1.setId(3); assertEquals(3, i1.getId()); assertEquals(2, i2.getId()); }