Search in sources :

Example 6 with ProxyProxetta

use of jodd.proxetta.impl.ProxyProxetta in project jodd by oblac.

the class SubclassTest method testJdk.

@Test
public void testJdk() throws Exception {
    ProxyProxetta proxyProxetta = ProxyProxetta.withAspects(new ProxyAspect(StatCounterAdvice.class, new AllMethodsPointcut()));
    proxyProxetta.setVariableClassName(false);
    ProxyProxettaBuilder builder = proxyProxetta.builder();
    builder.setTarget(Object.class);
    try {
        builder.define();
        fail("Default class loader should not load java.*");
    } catch (RuntimeException rex) {
    // ignore
    }
    builder = proxyProxetta.builder();
    builder.setTarget(Object.class);
    builder.setTargetProxyClassName("foo.");
    Object object = builder.newInstance();
    assertNotNull(object);
    assertEquals("foo.Object$$Proxetta", object.getClass().getName());
    System.out.println("----------list");
    StatCounter.counter = 0;
    builder = proxyProxetta.builder(ArrayList.class, "foo.");
    List list = (List) builder.newInstance();
    assertNotNull(list);
    assertEquals("foo.ArrayList$$Proxetta", list.getClass().getName());
    assertEquals(1, StatCounter.counter);
    list.add(new Integer(1));
    assertTrue(StatCounter.counter == 3 || StatCounter.counter == 2);
    System.out.println("----------set");
    builder = proxyProxetta.builder(HashSet.class, "foo.");
    Set set = (Set) builder.newInstance();
    assertNotNull(set);
    assertEquals("foo.HashSet$$Proxetta", set.getClass().getName());
    assertTrue(StatCounter.counter == 4 || StatCounter.counter == 3);
    set.add(new Integer(1));
    assertTrue(StatCounter.counter == 5 || StatCounter.counter == 4);
}
Also used : ProxyProxetta(jodd.proxetta.impl.ProxyProxetta) AllMethodsPointcut(jodd.proxetta.pointcuts.AllMethodsPointcut) HashSet(java.util.HashSet) Set(java.util.Set) ProxyProxettaBuilder(jodd.proxetta.impl.ProxyProxettaBuilder) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 7 with ProxyProxetta

use of jodd.proxetta.impl.ProxyProxetta in project jodd by oblac.

the class AnnTest method testMethodAnnotationsProxy.

@Test
public void testMethodAnnotationsProxy() {
    ProxyProxetta proxetta = ProxyProxetta.withAspects(new ProxyAspect(HeroProxyAdvice.class, new AllRealMethodsPointcut() {

        @Override
        public boolean apply(MethodInfo methodInfo) {
            if (!methodInfo.isTopLevelMethod()) {
                return false;
            }
            return super.apply(methodInfo);
        }
    }));
    ProxettaBuilder proxettaBuilder = proxetta.builder();
    proxettaBuilder.setTarget(Hero.class);
    proxetta.setVariableClassName(true);
    Hero hero = (Hero) proxettaBuilder.newInstance();
    assertEquals("BatmanHero37W88.3CatWoman99speeeeedXRAYnull", hero.name());
}
Also used : ProxyProxetta(jodd.proxetta.impl.ProxyProxetta) WrapperProxettaBuilder(jodd.proxetta.impl.WrapperProxettaBuilder) Hero(jodd.proxetta.data.Hero) AllRealMethodsPointcut(jodd.proxetta.pointcuts.AllRealMethodsPointcut) HeroProxyAdvice(jodd.proxetta.data.HeroProxyAdvice) Test(org.junit.Test)

Example 8 with ProxyProxetta

use of jodd.proxetta.impl.ProxyProxetta in project jodd by oblac.

the class MethodInfoTest method testMethodInfo.

@Test
public void testMethodInfo() {
    final ValueHolder<MethodInfo> valueHolder = ValueHolderWrapper.create();
    ProxyAspect proxyAspect = new ProxyAspect(FooProxyAdvice.class, new ProxyPointcut() {

        public boolean apply(MethodInfo methodInfo) {
            if (methodInfo.getMethodName().equals("p1")) {
                valueHolder.set(methodInfo);
                return true;
            }
            return false;
        }
    });
    ProxyProxetta proxyProxetta = ProxyProxetta.withAspects(proxyAspect);
    proxyProxetta.setClassNameSuffix("$$$Proxetta888");
    ProxyProxettaBuilder pb = proxyProxetta.builder();
    pb.setTarget(Foo.class);
    Foo foo = (Foo) pb.newInstance();
    assertNotNull(foo);
    MethodInfo mi = valueHolder.get();
    assertEquals("p1", mi.getMethodName());
    assertEquals(Foo.class.getName().replace('.', '/'), mi.getClassname());
    assertEquals("(java.lang.String)", mi.getDeclaration());
    assertEquals("(Ljava/lang/String;)Ljava/lang/String;", mi.getDescription());
    assertEquals("java.lang.String", mi.getReturnType());
    assertEquals("Ljava/lang/String;", mi.getReturnTypeName());
    assertEquals("java.lang.String p1(java.lang.String)", mi.getSignature());
    assertEquals(1, mi.getArgumentsCount());
    assertEquals("Ljava/lang/String;", mi.getArgumentTypeName(1));
    assertTrue(mi.isTopLevelMethod());
    AnnotationInfo[] anns = mi.getArgumentAnnotations(0);
    assertNotNull(anns);
    assertEquals(1, anns.length);
    assertEquals(FooAnn.class.getName(), anns[0].getAnnotationClassname());
}
Also used : ProxyProxetta(jodd.proxetta.impl.ProxyProxetta) ProxyProxettaBuilder(jodd.proxetta.impl.ProxyProxettaBuilder) Foo(jodd.proxetta.data.Foo) FooAnn(jodd.proxetta.data.FooAnn) Test(org.junit.Test)

Example 9 with ProxyProxetta

use of jodd.proxetta.impl.ProxyProxetta in project jodd by oblac.

the class ReturnTest method testNullReturns.

@Test
public void testNullReturns() throws Exception {
    ProxyProxetta proxetta = ProxyProxetta.withAspects(new ProxyAspect(ReturnNullAdvice.class, new AllMethodsPointcut()));
    ProxyProxettaBuilder builder = proxetta.builder(Retro.class, ".Retro3");
    //		proxetta.setDebugFolder("d:\\");
    Class proxyClass = builder.define();
    Object proxy = proxyClass.newInstance();
    Retro retro = (Retro) proxy;
    assertNotNull(retro);
    assertNull(retro.method1());
    assertEquals(0, retro.method2());
    assertEquals(0, retro.method3());
    assertEquals(0, retro.method4());
    assertEquals(0, retro.method5());
    assertEquals(false, retro.method6());
    assertEquals(0, retro.method7(), 0.005);
    assertEquals(0, retro.method8(), 0.005);
    assertNull(retro.method9());
    assertEquals(0, retro.method11());
    retro.method10();
}
Also used : ProxyProxetta(jodd.proxetta.impl.ProxyProxetta) AllMethodsPointcut(jodd.proxetta.pointcuts.AllMethodsPointcut) ProxyProxettaBuilder(jodd.proxetta.impl.ProxyProxettaBuilder) ReturnNullAdvice(jodd.proxetta.data.ReturnNullAdvice) Retro(jodd.proxetta.data.Retro) Test(org.junit.Test)

Example 10 with ProxyProxetta

use of jodd.proxetta.impl.ProxyProxetta in project jodd by oblac.

the class SubclassTest method testProxyClassNames.

@Test
public void testProxyClassNames() {
    ProxyProxetta proxyProxetta = ProxyProxetta.withAspects(new ProxyAspect(FooProxyAdvice.class, new AllMethodsPointcut()));
    proxyProxetta.setVariableClassName(true);
    ProxyProxettaBuilder builder = proxyProxetta.builder();
    builder.setTarget(Foo.class);
    Foo foo = (Foo) builder.newInstance();
    assertNotNull(foo);
    assertEquals(Foo.class.getName() + "$$Proxetta", StringUtil.substring(foo.getClass().getName(), 0, -1));
    builder = proxyProxetta.builder();
    builder.setTarget(Foo.class);
    foo = (Foo) builder.newInstance();
    assertNotNull(foo);
    assertEquals(Foo.class.getName() + "$$Proxetta", StringUtil.substring(foo.getClass().getName(), 0, -1));
    proxyProxetta.setClassNameSuffix("$$Ppp");
    builder = proxyProxetta.builder();
    builder.setTarget(Foo.class);
    foo = (Foo) builder.newInstance();
    assertNotNull(foo);
    assertEquals(Foo.class.getName() + "$$Ppp", StringUtil.substring(foo.getClass().getName(), 0, -1));
    proxyProxetta.setClassNameSuffix("$$Proxetta");
    proxyProxetta.setVariableClassName(false);
    builder = proxyProxetta.builder(Foo.class, ".Too");
    foo = (Foo) builder.newInstance();
    assertNotNull(foo);
    assertEquals(Foo.class.getPackage().getName() + ".Too$$Proxetta", foo.getClass().getName());
    builder = proxyProxetta.builder();
    builder.setTarget(Foo.class);
    builder.setTargetProxyClassName("foo.");
    foo = (Foo) builder.newInstance();
    assertNotNull(foo);
    assertEquals("foo.Foo$$Proxetta", foo.getClass().getName());
    proxyProxetta.setClassNameSuffix(null);
    builder = proxyProxetta.builder();
    builder.setTargetProxyClassName("foo.Fff");
    builder.setTarget(Foo.class);
    foo = (Foo) builder.newInstance();
    assertNotNull(foo);
    assertEquals("foo.Fff", foo.getClass().getName());
}
Also used : ProxyProxetta(jodd.proxetta.impl.ProxyProxetta) AllMethodsPointcut(jodd.proxetta.pointcuts.AllMethodsPointcut) ProxyProxettaBuilder(jodd.proxetta.impl.ProxyProxettaBuilder) Test(org.junit.Test)

Aggregations

ProxyProxetta (jodd.proxetta.impl.ProxyProxetta)19 Test (org.junit.Test)15 ProxyProxettaBuilder (jodd.proxetta.impl.ProxyProxettaBuilder)10 AllMethodsPointcut (jodd.proxetta.pointcuts.AllMethodsPointcut)5 ProxyAspect (jodd.proxetta.ProxyAspect)4 Field (java.lang.reflect.Field)3 AllRealMethodsPointcut (jodd.proxetta.pointcuts.AllRealMethodsPointcut)3 List (java.util.List)2 PetiteConfig (jodd.petite.PetiteConfig)2 ProxettaAwarePetiteContainer (jodd.petite.proxetta.ProxettaAwarePetiteContainer)2 Foo (jodd.proxetta.data.Foo)2 Hero (jodd.proxetta.data.Hero)2 Retro (jodd.proxetta.data.Retro)2 WrapperProxettaBuilder (jodd.proxetta.impl.WrapperProxettaBuilder)2 AllTopMethodsPointcut (jodd.proxetta.pointcuts.AllTopMethodsPointcut)2 Before (org.junit.Before)2 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 Set (java.util.Set)1