Package com.firefly.utils.ReflectUtils

Examples of com.firefly.utils.ReflectUtils.MethodProxy


  }
 
  @Test
  public void testProxyMethod() throws NoSuchMethodException, SecurityException, Throwable {
    Foo foo = new Foo();
    MethodProxy proxy = ReflectUtils.getMethodProxy(Foo.class.getMethod("setProperty", String.class, boolean.class));
    Assert.assertThat(proxy.invoke(foo, "proxy foo", true), nullValue());
    Assert.assertThat(foo.getName(), is("proxy foo"));
    Assert.assertThat(foo.isFailure(), is(true));
   
    proxy = ReflectUtils.getMethodProxy(ReflectUtils.getGetterMethod(Foo.class, "name"));
    Assert.assertThat((String)proxy.invoke(foo), is("proxy foo"));
   
    proxy = ReflectUtils.getMethodProxy(ReflectUtils.getGetterMethod(Foo.class, "failure"));
    Assert.assertThat((Boolean)proxy.invoke(foo), is(true));
   
    proxy = ReflectUtils.getMethodProxy(ReflectUtils.getSetterMethod(Foo.class, "price"));
    Assert.assertThat(proxy.invoke(foo, 35.5), nullValue());
    Assert.assertThat(foo.getPrice(), is(35.5));
   
    MethodProxyFactoryUsingJavaCompiler proxyUsingJavaCompiler = MethodProxyFactoryUsingJavaCompiler.INSTANCE;
    Foo foo2 = new Foo();
    MethodProxy proxy2 = proxyUsingJavaCompiler.getMethodProxy(Foo.class.getMethod("setProperty", String.class, boolean.class));
    Assert.assertThat(proxy2.invoke(foo2, "proxy foo", true), nullValue());
    Assert.assertThat(foo2.getName(), is("proxy foo"));
    Assert.assertThat(foo2.isFailure(), is(true));
   
    proxy2 = proxyUsingJavaCompiler.getMethodProxy(ReflectUtils.getGetterMethod(Foo.class, "name"));
    Assert.assertThat((String)proxy2.invoke(foo2), is("proxy foo"));
   
   
    proxy2 = proxyUsingJavaCompiler.getMethodProxy(ReflectUtils.getGetterMethod(Foo.class, "failure"));
    Assert.assertThat((Boolean)proxy2.invoke(foo2), is(true));
   
    proxy2 = proxyUsingJavaCompiler.getMethodProxy(ReflectUtils.getSetterMethod(Foo.class, "price"));
    Assert.assertThat(proxy2.invoke(foo2, 35.5), nullValue());
    Assert.assertThat(foo2.getPrice(), is(35.5));
  }
View Full Code Here


  }
 
  public static void main7(String[] args) throws Throwable {
    Foo foo = new Foo();
    MethodProxyFactoryUsingJavaCompiler proxy = MethodProxyFactoryUsingJavaCompiler.INSTANCE;
    MethodProxy setPriceProxy = proxy.getMethodProxy(ReflectUtils.getSetterMethod(Foo.class, "price"));
    setPriceProxy.invoke(foo, 3.3);
   
    MethodProxy getPriceProxy = proxy.getMethodProxy(ReflectUtils.getGetterMethod(Foo.class, "price"));
    System.out.println(getPriceProxy.invoke(foo));
   
    MethodProxy getPriceProxy2 = ReflectUtils.getMethodProxy(ReflectUtils.getGetterMethod(Foo.class, "price"));
    System.out.println(getPriceProxy2.invoke(foo));
   
    int times = 1000 * 1000 * 1000;
    long start = System.currentTimeMillis();
    for (int i = 0; i < times; i++) {
      getPriceProxy.invoke(foo);
    }
    long end = System.currentTimeMillis();
    System.out.println("java compiler -> " + (end - start));
   
    start = System.currentTimeMillis();
    for (int i = 0; i < times; i++) {
      getPriceProxy.invoke(foo);
    }
    end = System.currentTimeMillis();
    System.out.println("java compiler -> " + (end - start));
   
    start = System.currentTimeMillis();
    for (int i = 0; i < times; i++) {
      getPriceProxy2.invoke(foo);
    }
    end = System.currentTimeMillis();
    System.out.println("javassist -> " + (end - start));
   
    start = System.currentTimeMillis();
    for (int i = 0; i < times; i++) {
      getPriceProxy2.invoke(foo);
    }
    end = System.currentTimeMillis();
    System.out.println("javassist -> " + (end - start));
  }
View Full Code Here

    System.out.println(ReflectUtils.getArrayProxy(obj.getClass()).get(obj, index));
  }
 
  public static void main2(String[] args) throws Throwable {
    Foo foo = new Foo();
    MethodProxy proxy = ReflectUtils.getMethodProxy(ReflectUtils.getGetterMethod(Foo.class, "failure"));
    System.out.println(proxy.invoke(foo));
   
    Field field = Foo.class.getField("num2");
    System.out.println(field.getType());
    System.out.println(field.getName());
    Field info = Foo.class.getField("info");
View Full Code Here

    int times = 1000 * 1000 * 1000;
   
    Foo foo = new Foo();
    Method method = Foo.class.getMethod("setProperty", String.class, boolean.class);
    method.setAccessible(true);
    MethodProxy proxy = ReflectUtils.getMethodProxy(method);
   
    long start = System.currentTimeMillis();
    for (int i = 0; i < times; i++) {
      proxy.invoke(foo, "method b", true);
    }
    long end = System.currentTimeMillis();
    System.out.println(foo.getName() + " invoke: " + (end - start) + "ms");
   
    start = System.currentTimeMillis();
    for (int i = 0; i < times; i++) {
      proxy.invoke(foo, "method b", true);
    }
    end = System.currentTimeMillis();
    System.out.println(foo.getName() + " invoke: " + (end - start) + "ms");
   
    start = System.currentTimeMillis();
View Full Code Here

   
  }
 
  @Override
  public MethodProxy getMethodProxy(Method method) throws Throwable {
    MethodProxy ret = methodCache.get(method);
    if(ret != null)
      return ret;
   
    synchronized(methodCache) {
      ret = methodCache.get(method);
View Full Code Here

    cc.addConstructor(constructor);
   
    cc.addMethod(CtMethod.make("public Method method(){return method;}", cc));
    cc.addMethod(CtMethod.make(createInvokeMethodCode(method), cc));
   
    MethodProxy ret = (MethodProxy) cc.toClass().getConstructor(Method.class).newInstance(method);
//    long end = System.currentTimeMillis();
//    System.out.println("Javassist generates class proxy time -> " + (end - start));
    return ret;
  }
View Full Code Here

   
  }
 
  @Override
  public MethodProxy getMethodProxy(Method method) throws Throwable {
    MethodProxy ret = methodCache.get(method);
    if(ret != null)
      return ret;
   
    synchronized(methodCache) {
      ret = methodCache.get(method);
View Full Code Here

//    System.out.println(source);
    Class<?> methodProxyClass = CompilerUtils.compileSource(completeClassName, source);
    if(methodProxyClass == null)
      return null;
   
    MethodProxy obj = (MethodProxy)methodProxyClass.getConstructor(Method.class).newInstance(method);
//    long end = System.currentTimeMillis();
//    System.out.println("Java compiler generates class proxy time -> " + (end - start));
    return obj;
  }
View Full Code Here

TOP

Related Classes of com.firefly.utils.ReflectUtils.MethodProxy

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.