private static RuntimeClassFile generateClassFile(Class beanType, PropertySet set) { BeanProperty[][] props = getBeanProperties(beanType, set); RuntimeClassFile cf = new RuntimeClassFile (BeanPropertyAccessor.class.getName(), BeanPropertyAccessor.class.getName(), beanType.getClassLoader()); cf.markSynthetic(); cf.setSourceFile(BeanPropertyAccessor.class.getName()); try { cf.setTarget(System.getProperty("java.specification.version")); } catch (Exception e) { } MethodInfo ctor = cf.addConstructor(Modifiers.PUBLIC, null); ctor.markSynthetic(); CodeBuilder b = new CodeBuilder(ctor); b.loadThis(); b.invokeSuperConstructor(null); b.returnVoid(); generateAccessMethod(cf, beanType, props[0], READ_METHOD); generateAccessMethod(cf, beanType, props[0], TRY_READ_METHOD); generateAccessMethod(cf, beanType, props[0], HAS_READ_METHOD); generateAccessMethod(cf, beanType, props[1], WRITE_METHOD); generateAccessMethod(cf, beanType, props[1], TRY_WRITE_METHOD); generateAccessMethod(cf, beanType, props[1], HAS_WRITE_METHOD); generateSearchMethod(cf, beanType, props[0]); return cf; }
mi.markSynthetic(); CodeBuilder b = new CodeBuilder(mi);
mi.markSynthetic(); CodeBuilder b = new CodeBuilder(mi);
}; MethodInfo ctor = cf.addConstructor(Modifiers.PUBLIC, paramTypes); ctor.markSynthetic(); CodeBuilder builder = new CodeBuilder(ctor); mi.markSynthetic(); builder = new CodeBuilder(mi);
private static RuntimeClassFile generateClassFile(Class beanType, PropertySet set) { BeanProperty[][] props = getBeanProperties(beanType, set); RuntimeClassFile cf = new RuntimeClassFile (BeanPropertyAccessor.class.getName(), BeanPropertyAccessor.class.getName(), beanType.getClassLoader()); cf.markSynthetic(); cf.setSourceFile(BeanPropertyAccessor.class.getName()); cf.setTarget("1.5"); MethodInfo ctor = cf.addConstructor(Modifiers.PUBLIC, null); ctor.markSynthetic(); CodeBuilder b = new CodeBuilder(ctor); b.loadThis(); b.invokeSuperConstructor(null); b.returnVoid(); generateAccessMethod(cf, beanType, props[0], READ_METHOD); generateAccessMethod(cf, beanType, props[0], TRY_READ_METHOD); generateAccessMethod(cf, beanType, props[0], HAS_READ_METHOD); generateAccessMethod(cf, beanType, props[1], WRITE_METHOD); generateAccessMethod(cf, beanType, props[1], TRY_WRITE_METHOD); generateAccessMethod(cf, beanType, props[1], HAS_WRITE_METHOD); generateSearchMethod(cf, beanType, props[0]); return cf; }
mi.markSynthetic(); CodeBuilder b = new CodeBuilder(mi);
mi.markSynthetic(); CodeBuilder b = new CodeBuilder(mi);
}; MethodInfo ctor = cf.addConstructor(Modifiers.PUBLIC, paramTypes); ctor.markSynthetic(); CodeBuilder builder = new CodeBuilder(ctor); mi.markSynthetic(); builder = new CodeBuilder(mi);
mi.markSynthetic(); if (property.isJoin()) { mi.addException(TypeDesc.forClass(FetchException.class)); mi = mClassFile.addMethod(Modifiers.PROTECTED, writeName, null, new TypeDesc[]{type}); mi.markSynthetic(); MethodInfo mi = mClassFile.addMethod (Modifiers.PROTECTED, readName, toType, null); mi.markSynthetic(); MethodInfo mi = mClassFile.addMethod (Modifiers.PROTECTED, writeName, null, new TypeDesc[] {fromType}); mi.markSynthetic(); mi.setModifiers(mi.getModifiers().toSynchronized(true));
mi.markSynthetic(); if (property.isJoin()) { mi.addException(TypeDesc.forClass(FetchException.class)); mi = mClassFile.addMethod(Modifiers.PROTECTED, writeName, null, new TypeDesc[]{type}); mi.markSynthetic(); MethodInfo mi = mClassFile.addMethod (Modifiers.PROTECTED, readName, toType, null); mi.markSynthetic(); MethodInfo mi = mClassFile.addMethod (Modifiers.PROTECTED, writeName, null, new TypeDesc[] {fromType}); mi.markSynthetic(); mi.setModifiers(mi.getModifiers().toSynchronized(true));