@Test void testClassesWithGenericsAsReturnValueWrapperDefault() { try { ProxyAspect aspect = new ProxyAspect(DelegateAdvice.class, new AllMethodsPointcut()); WrapperProxetta proxetta = Proxetta.wrapperProxetta().withAspects(aspect); WrapperProxettaFactory builder = proxetta.proxy().setTarget(Foo.class).setTargetInterface(IFoo.class); builder.newInstance(); } catch (Exception ex) { ex.printStackTrace(); fail(ex.toString()); } }
@Test void testClassAnnotationsWrapper() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException { WrapperProxetta proxetta = Proxetta .wrapperProxetta() .withAspects( new ProxyAspect(HeroProxyAdvice2.class, ((ProxyPointcut) MethodInfo::isTopLevelMethod).and(AllRealMethodsPointcut.get()) )) //.setDebugFolder("/Users/igor/") ; WrapperProxettaFactory proxettaBuilder = proxetta.proxy(); proxettaBuilder.setTarget(Hero.class); proxetta.setVariableClassName(true); Object hero = proxettaBuilder.newInstance(); Method nameMethod = hero.getClass().getMethod("name"); assertEquals("SilverHero89W99.222None1000speeeeedXRAYnull", nameMethod.invoke(hero)); }
Calc calc = new CalcImpl(); WrapperProxetta proxetta = Proxetta.wrapperProxetta().withAspects(new ProxyAspect(StatCounterAdvice.class, methodInfo -> !methodInfo.isRootMethod() && methodInfo.isPublicMethod()));
@Test void testClassesWithGenericsAsReturnValueWrapper() { try { ProxyAspect aspect = new ProxyAspect(DelegateAdvice.class, new AllMethodsPointcut()); WrapperProxetta proxetta = Proxetta.wrapperProxetta().withAspects(aspect); WrapperProxettaFactory builder = proxetta.proxy().setTarget(Foo.class).setTargetInterface(IFoo.class); builder.newInstance(); } catch (Exception ex) { fail(ex.toString()); } }
/** * Returns {@link WrapperProxetta} used for building loggable prepared statements. * Initializes proxetta when called for the first time. */ public static WrapperProxetta getProxetta() { if (proxetta == null) { proxetta = WrapperProxetta.withAspects(new ProxyAspect(LoggableAdvice.class, new ProxyPointcutSupport() { public boolean apply(MethodInfo methodInfo) { int argumentsCount = methodInfo.getArgumentsCount(); char argumentType = 0; if (argumentsCount >= 1) { argumentType = methodInfo.getArgumentOpcodeType(1); } return methodInfo.getReturnOpcodeType() == 'V' && // void-returning method argumentType == 'I' && // first argument type methodInfo.isTopLevelMethod() && // top-level methodInfo.getMethodName().startsWith("set") && // set* (argumentsCount == 2 || argumentsCount == 3); // number of arguments } })); } return proxetta; }