BodyBuilder createCacheMethod(MethodSignature sig, String cacheField) { BodyBuilder result = new BodyBuilder(); result.begin(); result.addln("if (this.{0}==null)", cacheField); result.addln("this.{0} = super.{1}($$);", cacheField, sig.getName()); result.addln("return this.{0};", cacheField); result.end(); return result; }
/** * Creates a method that delegates to the _delegate object; this is used for * methods that are not logged. */ private void addPassThruMethodImplementation(ClassFab classFab, MethodSignature sig) { BodyBuilder builder = new BodyBuilder(); builder.begin(); builder.add("return ($r) _delegate."); builder.add(sig.getName()); builder.addln("($$);"); builder.end(); classFab.addMethod(Modifier.PUBLIC, sig, builder.toString()); }
/** * Convience for {@link #addln(String, Object[])} */ public void addln(String pattern, Object arg0) { addln(pattern, new Object[] { arg0 }); }
/** @since 1.1 */ private void addSerializable(String pointId) { _classFab.addInterface(Serializable.class); BodyBuilder bb = new BodyBuilder(); bb.add( "return {0}.getServiceSerializationSupport().getServiceTokenForService(\"{1}\");", ServiceSerializationHelper.class.getName(), pointId); MethodSignature sig = new MethodSignature(Object.class, "writeReplace", null, null); _classFab.addMethod(Modifier.PRIVATE, sig, bb.toString()); }
private Class constructInterceptorClass(InterceptorStack stack, List parameters) { Class serviceInterfaceClass = stack.getServiceInterface(); String name = ClassFabUtils.generateClassName(serviceInterfaceClass); ClassFab classFab = _factory.newClass(name, Object.class); classFab.addInterface(serviceInterfaceClass); createInfrastructure(stack, classFab); addServiceMethods(stack, classFab, parameters); return classFab.createClass(); }
private BodyBuilder constructorBuilder() { if (_constructorBuilder == null) { _constructorBuilder = new BodyBuilder(); _constructorBuilder.begin(); } return _constructorBuilder; }
ClassFab generateClassFab(CompiledExpression compiled) throws Exception { if (compiled.getGeneratedClass() != null) return compiled.getGeneratedClass(); ClassFab classFab = _classFactory.newClass(ClassFabUtils.generateClassName(compiled.getExpression().getClass()), Object.class); classFab.addInterface(ExpressionAccessor.class); compiled.setGeneratedClass(classFab); return classFab; }
/** * Convience for {@link #add(String, Object[])} */ public void add(String pattern, Object arg0, Object arg1) { add(pattern, new Object[] { arg0, arg1 }); }
protected Locale getLocale() { return _threadLocale.getLocale(); }
public void addField(String name, Class type) { _classFab.addField(name, type); }
public boolean matchMethod(MethodSignature method) { return method.getParameterTypes().length == _parameterCount; }
public void setThreadEventNotifier(ThreadEventNotifier threadEventNotifier) { this.threadEventNotifier = threadEventNotifier; threadEventNotifier.addThreadCleanupListener(this); }
private BodyBuilder createIncompleteMethod(MethodSignature sig) { BodyBuilder result = new BodyBuilder(); // Matched inside finalizeIncompleteMethods() result.begin(); if (existingImplementation(sig)) result.addln("super.{0}($$);", sig.getName()); return result; }
/** * Convience for {@link #addln(String, Object[])}. */ public void addln(String pattern, Object arg0, Object arg1, Object arg2) { addln(pattern, new Object[] { arg0, arg1, arg2 }); }
/** * Convience for {@link #add(String, Object[])} */ public void add(String pattern, Object arg0, Object arg1, Object arg2) { add(pattern, new Object[] { arg0, arg1, arg2 }); }
public void addField(String name, Class type) { _classFab.addField(name, type); }
private BodyBuilder createIncompleteMethod(MethodSignature sig) { BodyBuilder result = new BodyBuilder(); // Matched inside finalizeIncompleteMethods() result.begin(); if (existingImplementation(sig)) result.addln("super.{0}($$);", sig.getName()); return result; }
/** * Convience for {@link #addln(String, Object[])}. */ public void addln(String pattern, Object arg0, Object arg1) { addln(pattern, new Object[] { arg0, arg1 }); }
/** * Convience for {@link #add(String, Object[])} */ public void add(String pattern, Object arg0) { add(pattern, new Object[] { arg0 }); }