@Test(expected = IllegalStateException.class) public void testAnnotationArgumentNameBinding() { TransactionalBean tb = new TransactionalBean(); AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb); proxyFactory.addAspect(PointcutWithAnnotationArgument.class); ITransactionalBean proxiedTestBean = proxyFactory.getProxy(); proxiedTestBean.doInTransaction(); }
@Test(expected = IllegalArgumentException.class) public void testBindingInPointcutUsedByAdvice() { TestBean tb = new TestBean(); AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb); proxyFactory.addAspect(NamedPointcutWithArgs.class); ITestBean proxiedTestBean = proxyFactory.getProxy(); proxiedTestBean.setName("Supercalifragalisticexpialidocious"); }
@Test // SPR-13328 @SuppressWarnings("unchecked") public void testProxiedVarargsWithEnumArray() throws Exception { AspectJProxyFactory proxyFactory = new AspectJProxyFactory(new TestBean()); proxyFactory.addAspect(LoggingAspectOnVarargs.class); ITestBean proxy = proxyFactory.getProxy(); assertTrue(proxy.doWithVarargs(MyEnum.A, MyOtherEnum.C)); }
@Test // SPR-13328 @SuppressWarnings("unchecked") public void testUnproxiedVarargsWithEnumArray() throws Exception { AspectJProxyFactory proxyFactory = new AspectJProxyFactory(new TestBean()); proxyFactory.addAspect(LoggingAspectOnSetter.class); ITestBean proxy = proxyFactory.getProxy(); assertTrue(proxy.doWithVarargs(MyEnum.A, MyOtherEnum.C)); }
@Test public void testWithSimpleAspect() throws Exception { TestBean bean = new TestBean(); bean.setAge(2); AspectJProxyFactory proxyFactory = new AspectJProxyFactory(bean); proxyFactory.addAspect(MultiplyReturnValue.class); ITestBean proxy = proxyFactory.getProxy(); assertEquals("Multiplication did not occur", bean.getAge() * 2, proxy.getAge()); }
@Test public void testWithPerThisAspect() throws Exception { TestBean bean1 = new TestBean(); TestBean bean2 = new TestBean(); AspectJProxyFactory pf1 = new AspectJProxyFactory(bean1); pf1.addAspect(PerThisAspect.class); AspectJProxyFactory pf2 = new AspectJProxyFactory(bean2); pf2.addAspect(PerThisAspect.class); ITestBean proxy1 = pf1.getProxy(); ITestBean proxy2 = pf2.getProxy(); assertEquals(0, proxy1.getAge()); assertEquals(1, proxy1.getAge()); assertEquals(0, proxy2.getAge()); assertEquals(2, proxy1.getAge()); }
@Test public void testProgrammaticProxyCreation() { ITestBean testBean = new TestBean(); AspectJProxyFactory factory = new AspectJProxyFactory(); factory.setTarget(testBean); CounterAspect myCounterAspect = new CounterAspect(); factory.addAspect(myCounterAspect); ITestBean proxyTestBean = factory.getProxy(); assertTrue("Expected a proxy", proxyTestBean instanceof Advised); proxyTestBean.setAge(20); assertEquals("Programmatically created proxy shouldn't match bean()", 0, myCounterAspect.count); }
@Test @SuppressWarnings("unchecked") public void testSerializable() throws Exception { AspectJProxyFactory proxyFactory = new AspectJProxyFactory(new TestBean()); proxyFactory.addAspect(LoggingAspectOnVarargs.class); ITestBean proxy = proxyFactory.getProxy(); assertTrue(proxy.doWithVarargs(MyEnum.A, MyOtherEnum.C)); ITestBean tb = (ITestBean) SerializationTestUtils.serializeAndDeserialize(proxy); assertTrue(tb.doWithVarargs(MyEnum.A, MyOtherEnum.C)); }
@Test @SuppressWarnings("unchecked") public void testWithInstance() throws Exception { MultiplyReturnValue aspect = new MultiplyReturnValue(); int multiple = 3; aspect.setMultiple(multiple); TestBean target = new TestBean(); target.setAge(24); AspectJProxyFactory proxyFactory = new AspectJProxyFactory(target); proxyFactory.addAspect(aspect); ITestBean proxy = proxyFactory.getProxy(); assertEquals(target.getAge() * multiple, proxy.getAge()); ITestBean serializedProxy = (ITestBean) SerializationTestUtils.serializeAndDeserialize(proxy); assertEquals(target.getAge() * multiple, serializedProxy.getAge()); }
public Object applyAspect(ProceedingJoinPoint pjp) throws Throwable { final Object result = pjp.proceed(); if (result == null) { return result; } final AspectJProxyFactory portletPreferencesProxyFactory = new AspectJProxyFactory(result); for (final Advice advice : this.advices) { portletPreferencesProxyFactory.addAdvice(advice); } return portletPreferencesProxyFactory.getProxy(); } }
class Example { final Foo foo; Example(Foo original) { AspectJProxyFactory factory = new AspectJProxyFactory(); factory.setTarget(original); factory.addAspect(FooAspect.class); foo = (Foo) factory.getProxy(); } @Aspect static class FooAspect { @Before("execution(Foo.doBar())") Object beforeDoBar() { // My own activity } }
@Before public void setUp() throws Exception { AspectJProxyFactory proxyFactory = new AspectJProxyFactory(mock(AccountRepository.class)); proxyFactory.addAspect(RepositoryPerformanceMonitor.class); repository = proxyFactory.getProxy(); }