private static TemplateRenderer tryToCompile(String source, Map<String, String> expressions, Map<String, String> constants, Class<?> modelType) throws NotFoundException, CannotCompileException, InstantiationException, IllegalAccessException { ClassPool cp = ClassPool.getDefault(); CtClass sup = cp.get(Object.class.getCanonicalName()); CtClass cls = cp.makeClass("RapidoidTemplate" + ID_GEN.incrementAndGet(), sup); cls.addInterface(cp.get(TemplateRenderer.class.getCanonicalName())); cls.addConstructor(CtNewConstructor.defaultConstructor(cls)); addExpressions(expressions, cls); addConstants(constants, cls); CtClass[] params = {cp.get(RenderCtx.class.getCanonicalName())}; CtClass clsVoid = cp.get(void.class.getCanonicalName()); cls.addMethod(CtNewMethod.make(Modifier.PUBLIC, clsVoid, "render", params, new CtClass[0], source, cls)); return (TemplateRenderer) cls.toClass().newInstance(); }
ClassFile classFile = ctClass.getClassFile(); classFile.setVersionToJava5(); ctClass.addConstructor(CtNewConstructor.defaultConstructor(pool.getCtClass(parameterClassName)));
ClassFile classFile = ctClass.getClassFile(); classFile.setVersionToJava5(); ctClass.addConstructor(CtNewConstructor.defaultConstructor(pool.getCtClass(parameterClassName)));
mCtc.addConstructor(CtNewConstructor.defaultConstructor(mCtc));
mCtc.addConstructor(CtNewConstructor.defaultConstructor(mCtc));
/** * Adds a default constructor to the super classes. */ private void modifySuperclass(CtClass orgclass) throws CannotCompileException, NotFoundException { CtClass superclazz; for (;; orgclass = superclazz) { superclazz = orgclass.getSuperclass(); if (superclazz == null) break; try { superclazz.getDeclaredConstructor(null); break; // the constructor with no arguments is found. } catch (NotFoundException e) { } superclazz.addConstructor( CtNewConstructor.defaultConstructor(superclazz)); } } }
/** * Adds a default constructor to the super classes. */ private void modifySuperclass(CtClass orgclass) throws CannotCompileException, NotFoundException { CtClass superclazz; for (;; orgclass = superclazz) { superclazz = orgclass.getSuperclass(); if (superclazz == null) break; try { superclazz.getDeclaredConstructor(null); break; // the constructor with no arguments is found. } catch (NotFoundException e) { } superclazz.addConstructor( CtNewConstructor.defaultConstructor(superclazz)); } } }
/** Adds a new field of type double to the customized class */ public void addDoubleField(String fieldName) { // FIXME: this should support default values but does not ClassFile classFile = ctClass.getClassFile(); ConstPool constPool = classFile.getConstPool(); try { // add field FieldInfo fieldInfo = new FieldInfo(constPool, fieldName, "D"); classFile.addField(fieldInfo); CtConstructor ctor = CtNewConstructor.defaultConstructor(ctClass); ctClass.addConstructor(ctor); addDoubleSetter(classFile, fieldName); addDoubleGetter(classFile, fieldName); } catch (Exception e) { throw new RuntimeException(e); } }
proxy.addConstructor(CtNewConstructor.defaultConstructor(proxy)); CtConstructor cons = CtNewConstructor.skeleton(proxyConstructorParamTypes,
mCtc.addConstructor(CtNewConstructor.defaultConstructor(mCtc)); if (mConstructors != null) { for (String code : mConstructors) {
proxy.addConstructor(CtNewConstructor.defaultConstructor(proxy)); CtConstructor cons = CtNewConstructor.skeleton(proxyConstructorParamTypes,
private CtConstructor createDefaultConstructor(CtClass declaringClass) throws CannotCompileException { return CtNewConstructor.defaultConstructor(declaringClass); }
/** * Currently only method joinpoints need serialization and thus a default ctor */ private void createDefaultConstructor(CtConstructor superCtor, CtClass clazz) throws CannotCompileException { CtConstructor ctor = CtNewConstructor.defaultConstructor(clazz); clazz.addConstructor(ctor); }
/** * We need a default constructor so we can serialize */ private void addDefaultConstructor() throws CannotCompileException { CtConstructor defaultConstructor = CtNewConstructor.defaultConstructor(jp); jp.addConstructor(defaultConstructor); }
private static TemplateRenderer tryToCompile(String source, Map<String, String> expressions, Map<String, String> constants, Class<?> modelType) throws NotFoundException, CannotCompileException, InstantiationException, IllegalAccessException { ClassPool cp = ClassPool.getDefault(); CtClass sup = cp.get(Object.class.getCanonicalName()); CtClass cls = cp.makeClass("RapidoidTemplate" + ID_GEN.incrementAndGet(), sup); cls.addInterface(cp.get(TemplateRenderer.class.getCanonicalName())); cls.addConstructor(CtNewConstructor.defaultConstructor(cls)); addExpressions(expressions, cls); addConstants(constants, cls); CtClass[] params = {cp.get(RenderCtx.class.getCanonicalName())}; CtClass clsVoid = cp.get(void.class.getCanonicalName()); cls.addMethod(CtNewMethod.make(Modifier.PUBLIC, clsVoid, "render", params, new CtClass[0], source, cls)); return (TemplateRenderer) cls.toClass().newInstance(); }
protected CtConstructor createDefaultConstructor(final CtClass clazz) { try { final CtConstructor ctConstructor = CtNewConstructor.defaultConstructor(clazz); clazz.addConstructor(ctConstructor); return ctConstructor; } catch (final CannotCompileException e) { throw new CannotCompileRuntimeException(e); } }
private void addDefaultConstructor2(CtClass ctClass) { try { if (!hasDefaultConstructor(ctClass)) { CtConstructor defaultConstructor = CtNewConstructor.defaultConstructor(ctClass); ctClass.addConstructor(defaultConstructor); } } catch (Exception e) { Logger.error(e, "Failed to generate default constructor for " + ctClass.getName()); throw new UnexpectedException("Failed to generate default constructor for " + ctClass.getName(), e); } }
public JaxrsEndpointApiCtClassBuilder(final ClassPool pool, final String classname) throws CannotCompileException, NotFoundException { this.pool = pool; this.declaring = JaxrsEndpointApiUtils.makeClass(pool, classname); /* 获得 JaxwsHandler 类作为动态类的父类 */ CtClass superclass = pool.get(EndpointApi.class.getName()); declaring.setSuperclass(superclass); // 默认添加无参构造器 declaring.addConstructor(CtNewConstructor.defaultConstructor(declaring)); this.ccFile = this.declaring.getClassFile(); }
public JaxwsEndpointApiCtClassBuilder(final ClassPool pool, final String classname) throws CannotCompileException, NotFoundException { this.pool = pool; this.declaring = JaxwsEndpointApiUtils.makeClass(pool, classname); this.declaring.defrost(); /* 获得 JaxwsHandler 类作为动态类的父类 */ CtClass superclass = pool.get(EndpointApi.class.getName()); declaring.setSuperclass(superclass); // 默认添加无参构造器 declaring.addConstructor(CtNewConstructor.defaultConstructor(declaring)); this.classFile = this.declaring.getClassFile(); }
public static CtClass makeMirrorSubclass(CtClass target, CtClass parent, String name) throws CannotCompileException { CtClass mirrorClass = parent.makeNestedClass(name, true); mirrorClass.setModifiers(Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL); AnnotationUtil.annotateReflectionAccessor(mirrorClass, target.getName(), null, null); CtConstructor constructor = CtNewConstructor.defaultConstructor(mirrorClass); constructor.setModifiers(Modifier.PRIVATE); mirrorClass.addConstructor(constructor); return mirrorClass; }