Thank you,

the closest implementation I found is here

PlasticManager plasticManager =
PlasticManager.withContextClassLoader().create();
        PlasticClass plasticClass =
plasticManager.createProxyTransformation(serviceInterface,
null).getPlasticClass();
        PlasticField plasticField =
plasticClass.introduceField(IProvider.class, "_creator");
        PlasticProxyFactory factory = new
PlasticProxyFactoryImpl(plasticManager, log);

        MethodDescription methodDescription = new
MethodDescription(serviceInterface.getClass().getName(), "_scopeInstance",
null, null);
        plasticClass.introduceMethod(methodDescription);

this doesn't help me to create class instance on the fly though, it is
creates PlasticClass also I didn't find flexibility to specify field access
specifiers

I must be looking at wrong set of class it seems, any thoughts ?





On Tue, May 20, 2014 at 12:42 AM, Lance Java <lance.j...@googlemail.com>wrote:

> Tapestry has switched to plastic for its byte code magic. Currently,
> plastic isn't well documented. I find that the best documentation currently
> is the test cases. Perhaps you can find your answer here:
>
>
> https://github.com/apache/tapestry-5/tree/master/plastic/src/test/groovy/org/apache/tapestry5/plastic
>  On 19 May 2014 23:46, "Jigar Joshi" <jiga...@gmail.com> wrote:
>
> > Hello
> >
> > ​with tapestry 5.3.4 and java 7 with use of
> > org.apache.tapestry5.ioc.services.ClassFactory
> >
> >
> >
> >     private Class<?> createProxyClass(ServiceResources resources) {
> >         Class<?> serviceInterface = resources.getServiceInterface();
> >
> >         ClassFab cf = classFactory.newClass(serviceInterface);
> >
> >         // add field
> >         cf.addField("_creator", Modifier.PRIVATE | Modifier.FINAL,
> > SomeClass.class);
> >
> >         // Constructor takes a ServiceCreator
> >         cf.addConstructor(new Class[] { SomeClass.class }, null,
> "_creator
> > = $1;");
> >
> >         // add method
> >         String body = format("return (%s) _creator.get();",
> > serviceInterface.getName());
> >         MethodSignature sig = new MethodSignature(serviceInterface,
> > SCOPE_METHOD_NAME, null, null);
> >         cf.addMethod(Modifier.PRIVATE, sig, body);
> >         String toString = format("<Scoped Proxy for scope(%s): %s(%s)>",
> > scope, resources.getServiceId(),
> >                 serviceInterface.getName());
> >
> >         cf.proxyMethodsToDelegate(serviceInterface, SCOPE_METHOD_NAME +
> > "()", toString);
> >
> >         return cf.createClass();
> >     }
> >
> >
> >
> >
> >
> > with tapestry 5.4-beta3 this class has been removed (it was depricated)
> >
> > I played around a little bit to find related implementation in new
> replaced
> > class
> >
> > org.apache.tapestry5.ioc.services.PlasticProxyFactory
> >
> > couldn't find it offhand, how to achieve same thing with tapestry 5.4 ?
> >
> > Thanks!
> > Jigar
> >
>



-- 
--
Jigar

Reply via email to