/** * Creates Proxetta with all aspects. The following aspects are created: * <ul> * <li>Transaction proxy - applied on all classes that contains public top-level methods * annotated with <code>@Transaction</code> annotation. This is just one way how proxies * can be applied - since base configuration is in Java, everything is possible.</li> * </ul> */ @Override public void start() { initLogger(); log.info("PROXETTA start ----------"); final ProxyAspect[] proxyAspectsArray = this.proxyAspects.toArray(new ProxyAspect[0]); log.debug("Total proxy aspects: " + proxyAspectsArray.length); // proxetta = Proxetta.wrapperProxetta().setCreateTargetInDefaultCtor(true).withAspects(proxyAspectsArray); proxetta = Proxetta.proxyProxetta().withAspects(proxyAspectsArray); log.info("PROXETTA OK!"); }
public static ProxyProxetta createProxyProxetta() { ProxyPointcut pointcut_logged = new MethodWithAnnotationPointcut(Logged.class); ProxyAspect aspect_logged = new ProxyAspect(LogProxyAdvice.class, pointcut_logged); //proxetta.setDebugFolder(SystemUtil.userHome() + "\\inka\\proxetta"); return Proxetta.proxyProxetta().withAspects(aspect_logged); }
@Test void testClassesWithGenericsAsReturnValueProxyDefault() { try { ProxyAspect aspect = ProxyAspect.of(DelegateAdvice.class, new AllMethodsPointcut()); ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects(aspect); ProxyProxettaFactory builder = proxetta.proxy().setTarget(Foo.class); builder.newInstance(); } catch (Exception ex) { ex.printStackTrace(); fail(ex.toString()); } } }
@Test void testCollector() throws NoSuchFieldException, IllegalAccessException { ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects( new ProxyAspect(CollectorAdvice.class, new AllTopMethodsPointcut()) ); // proxetta.setDebugFolder("d:\\"); Foo foo = (Foo) proxetta.proxy().setTarget(Foo.class).newInstance(); Field field = foo.getClass().getDeclaredField("$__methods$0"); field.setAccessible(true); List<String> list = (List<String>) field.get(foo); assertNotNull(list); assertEquals(0, list.size()); foo.m1(); assertEquals(1, list.size()); assertEquals("m1", list.get(0)); foo.m1(); assertEquals(2, list.size()); assertEquals("m1", list.get(0)); assertEquals("m1", list.get(1)); } }
(ProxettaBeanDefinition) refBeanDefinition; ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects(ArraysUtil.insert(pbd.proxyAspects, aspect, 0));
@Test void testClassesWithGenericsAsReturnValueProxy() { try { ProxyAspect aspect = new ProxyAspect(DelegateAdvice.class, new AllMethodsPointcut()); ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects(aspect); ProxyProxettaFactory builder = proxetta.proxy().setTarget(Foo.class); builder.newInstance(); } catch (Exception ex) { ex.printStackTrace(); fail(ex.toString()); } }
@Test void testInterface() { ProxyAspect proxyAspect = new ProxyAspect(FooProxyAdvice.class, methodInfo -> true); try { Proxetta.proxyProxetta().withAspects(proxyAspect).proxy().setTarget(Inter.class).newInstance(); fail("error"); } catch (ProxettaException ignore) { } }
@Test void testProxyInfo_createNotRightAfterTheMethod() { ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects(aspects()); //proxetta.setDebugFolder(SystemUtil.userHome()); DateDao dateDateProxy = (DateDao) proxetta.proxy().setTarget(DateDao.class).newInstance(); LocalDateTime jDateTime = dateDateProxy.currentTime(); assertNotNull(jDateTime); }
@Test void testExtendingGenerics() { ProxyAspect aspect = new ProxyAspect(LogAdvice.class, new AllMethodsPointcut()); ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects(aspect); ProxyProxettaFactory builder = proxetta.proxy().setTarget(MyBoo.class); Boo boo = (Boo) builder.newInstance(); boo.save(new Foo()); } }
@Test void testWrapperWithProxyReturns() throws Exception { ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects( new ProxyAspect(ReflectionReplacementAdvice.class, new AllMethodsPointcut()));
@Test void testNullReturns() throws Exception { ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects( new ProxyAspect(ReturnNullAdvice.class, new AllMethodsPointcut()));
public MethrefProxetta() { ProxyAspect aspectAll = new ProxyAspect(MethrefAdvice.class, new AllMethodsPointcut() { @Override public boolean apply(MethodInfo methodInfo) { if (methodInfo.getReturnType().equals(String.class.getName())) { return false; } return super.apply(methodInfo); } }); ProxyAspect aspectStr = new ProxyAspect(MethrefStringAdvice.class, new AllMethodsPointcut() { @Override public boolean apply(MethodInfo methodInfo) { if (methodInfo.getReturnType().equals(String.class.getName()) == false) { return false; } return super.apply(methodInfo); } }); proxetta = ProxyProxetta.withAspects(aspectAll, aspectStr); proxetta.setClassNameSuffix(METHREF_CLASSNAME_SUFFIX); }
/** * Creates Proxetta with all aspects. The following aspects are created: * <ul> * <li>Transaction proxy - applied on all classes that contains public top-level methods * annotated with <code>@Transaction</code> annotation. This is just one way how proxies * can be applied - since base configuration is in Java, everything is possible.</li> * </ul> */ @Override public void start() { initLogger(); log.info("PROXETTA start ----------"); final ProxyAspect[] proxyAspectsArray = this.proxyAspects.toArray(new ProxyAspect[0]); log.debug("Total proxy aspects: " + proxyAspectsArray.length); // proxetta = Proxetta.wrapperProxetta().setCreateTargetInDefaultCtor(true).withAspects(proxyAspectsArray); proxetta = Proxetta.proxyProxetta().withAspects(proxyAspectsArray); log.info("PROXETTA OK!"); }
(ProxettaBeanDefinition) refBeanDefinition; ProxyProxetta proxetta = Proxetta.proxyProxetta().withAspects(ArraysUtil.insert(pbd.proxyAspects, aspect, 0));