use of jodd.proxetta.impl.WrapperProxettaBuilder in project jodd by oblac.
the class WrapperTest method testClassWrapper.
@Test
public void testClassWrapper() throws Exception {
Calc calc = new CalcImpl();
WrapperProxetta proxetta = WrapperProxetta.withAspects(new ProxyAspect(StatCounterAdvice.class, new ProxyPointcutSupport() {
public boolean apply(MethodInfo methodInfo) {
return !isRootMethod(methodInfo) && isPublic(methodInfo);
}
}));
// proxetta.setDebugFolder("d:\\");
// wrapper over CLASS
// resulting object has ALL interfaces
// resulting object wraps ALL target class methods
WrapperProxettaBuilder builder = proxetta.builder(calc.getClass());
Class calc2Class = builder.define();
Object object = calc2Class.newInstance();
assertTrue(object instanceof Calc);
assertEquals(CalcImpl.class, ProxettaUtil.getTargetClass(object.getClass()));
assertEquals(1, calc2Class.getInterfaces().length);
builder.injectTargetIntoWrapper(calc, object);
// counter in static block !!!
assertEquals(1, StatCounter.counter);
Method method = calc2Class.getMethod("hello");
assertNotNull(method);
method.invoke(object);
assertEquals(2, StatCounter.counter);
method = calc2Class.getMethod("calculate", int.class, int.class);
assertNotNull(method);
Integer result = (Integer) method.invoke(object, 3, 7);
assertEquals(10, result.intValue());
assertEquals(3, StatCounter.counter);
assertNotNull(calc2Class.getMethod("customMethod"));
}
use of jodd.proxetta.impl.WrapperProxettaBuilder in project jodd by oblac.
the class GenericsInDefaultTest method testClassesWithGenericsAsReturnValueWrapperDefault.
@Test
public void testClassesWithGenericsAsReturnValueWrapperDefault() {
try {
ProxyAspect aspect = new ProxyAspect(DelegateAdvice.class);
WrapperProxetta proxetta = WrapperProxetta.withAspects(aspect);
WrapperProxettaBuilder builder = proxetta.builder(Foo.class, IFoo.class);
builder.newInstance();
} catch (Exception ex) {
ex.printStackTrace();
fail(ex.toString());
}
}
use of jodd.proxetta.impl.WrapperProxettaBuilder in project jodd by oblac.
the class AnnTest method testClassAnnotationsWrapper.
@Test
public void testClassAnnotationsWrapper() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
WrapperProxetta proxetta = WrapperProxetta.withAspects(new ProxyAspect(HeroProxyAdvice2.class, new AllRealMethodsPointcut() {
@Override
public boolean apply(MethodInfo methodInfo) {
if (!methodInfo.isTopLevelMethod()) {
return false;
}
return super.apply(methodInfo);
}
}));
WrapperProxettaBuilder proxettaBuilder = proxetta.builder();
proxettaBuilder.setTarget(Hero.class);
proxetta.setVariableClassName(true);
Object hero = proxettaBuilder.newInstance();
assertEquals("SilverHero89W99.222None1000speeeeedXRAYnull", ReflectUtil.invoke(hero, "name"));
}
use of jodd.proxetta.impl.WrapperProxettaBuilder in project jodd by oblac.
the class AnnTest method testMethodAnnotationsWrapper.
@Test
public void testMethodAnnotationsWrapper() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
WrapperProxetta proxetta = WrapperProxetta.withAspects(new ProxyAspect(HeroProxyAdvice.class, new AllRealMethodsPointcut() {
@Override
public boolean apply(MethodInfo methodInfo) {
if (!methodInfo.isTopLevelMethod()) {
return false;
}
return super.apply(methodInfo);
}
}));
WrapperProxettaBuilder proxettaBuilder = proxetta.builder();
proxettaBuilder.setTarget(Hero.class);
proxetta.setVariableClassName(true);
Object hero = proxettaBuilder.newInstance();
assertEquals("BatmanHero37W88.3CatWoman99speeeeedXRAYnull", ReflectUtil.invoke(hero, "name"));
}
Aggregations