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