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