protected AbstractField( ClassOutlineImpl outline, CPropertyInfo prop ) { this.outline = outline; this.prop = prop; this.codeModel = outline.parent().getCodeModel(); this.implType = getType(IMPLEMENTATION); this.exposedType = getType(Aspect.EXPOSED); }
public MethodWriter createMethodWriter() { return _parent.getModel().strategy.createMethodWriter(this); }
/** * Generates beans into code model according to the BGM, * and produces the reflection model. * * @param _errorReceiver * This object will receive all the errors discovered * during the back-end stage. * * @return * returns a {@link Outline} which will in turn * be used to further generate marshaller/unmarshaller, * or null if the processing fails (errors should have been * reported to the error recevier.) */ public static Outline generate(Model model, ErrorReceiver _errorReceiver) { try { return new BeanGenerator(model, _errorReceiver); } catch (AbortException e) { return null; } }
BeanGenerator bg = new BeanGenerator(); bg.addProperty("foo", Double.TYPE); bg.addProperty("bar", String.class); Object bean = bg.create();
public static Class<?> createBeanClass( /* fully qualified class name */ final String className, /* bean properties, name -> type */ final Map<String, Class<?>> properties){ final BeanGenerator beanGenerator = new BeanGenerator(); /* use our own hard coded class name instead of a real naming policy */ beanGenerator.setNamingPolicy(new NamingPolicy(){ @Override public String getClassName(final String prefix, final String source, final Object key, final Predicate names){ return className; }}); BeanGenerator.addProperties(beanGenerator, properties); return (Class<?>) beanGenerator.createClass(); }
enums.put( p, generateEnumDef(p) ); JPackage[] packages = getUsedPackages(EXPOSED); getPackageContext(pkg); getClazz(bean); for( ClassOutlineImpl cc : getClasses() ) { if(superClass!=null) { model.strategy._extends(cc,getClazz(superClass)); } else { CClassRef refSuperClass = cc.target.getRefBaseClass(); for( ClassOutlineImpl co : getClasses() ) generateClassBody(co); generateEnumBody(eo); getPackageContext(ei._package()).objectFactoryGenerator().populate(ei); generateClassList();
parent.getClassFactory().createClass( parent.getContainer( ei.parent, Aspect.EXPOSED ), ei.shortName(), ei.getLocator() )); this.parent = parent; parent.elements.put(ei,this); JCodeModel cm = parent.getCodeModel(); JClass scope=null; if(ei.getScope()!=null) scope = parent.getClazz(ei.getScope()).implRef; JExpression scopeClass = scope==null?JExpr._null():scope.dotclass(); JFieldVar valField = implClass.field(JMod.PROTECTED|JMod.FINAL|JMod.STATIC,QName.class,"NAME",createQName(cm,ei.getElementName()));
writeTypeName(cc.target.getTypeName(), xtw, mostUsedNamespaceURI); while (subclasses.hasNext()) { CClassInfo s = subclasses.next(); saw.value(getClazz(s).implRef); generateFieldDecl(cc, prop); generateAttributeWildcard(cc);
scope = outline.getClazz(ei.getScope()).implClass; outline.getErrorReceiver().error(existing.getLocator(), Messages.OBJECT_FACTORY_CONFLICT.format(ei.getSqueezedName())); outline.getErrorReceiver().error(ei.getLocator(), Messages.OBJECT_FACTORY_CONFLICT_RELATED.format()); return; outline.generateAdapterIfNecessary(ei.getProperty(),m);
/** * return the Java type for the given type reference in the model. */ private JType resolve(CTypeRef typeRef,Aspect a) { return outline.parent().resolve(typeRef,a); }
/** * Annotate the field according to the recipes given as {@link CPropertyInfo}. */ protected void annotate( JAnnotatable field ) { assert(field!=null); if (prop instanceof CAttributePropertyInfo) { annotateAttribute(field); } else if (prop instanceof CElementPropertyInfo) { annotateElement(field); } else if (prop instanceof CValuePropertyInfo) { field.annotate(XmlValue.class); } else if (prop instanceof CReferencePropertyInfo) { annotateReference(field); } outline.parent().generateAdapterIfNecessary(prop,field); }
Outline o = BeanGenerator.generate(this, ehf);
NameConverter nc = context.parent().getModel().getNameConverter(); codeModel = context.parent().getCodeModel(); prop = field.getPropertyInfo();
public ClassOutlineImpl getClazz( CClassInfo bean ) { ClassOutlineImpl r = classes.get(bean); if(r==null) classes.put( bean, r=generateClassDef(bean) ); return r; }
enums.put( p, generateEnumDef(p) ); JPackage[] packages = getUsedPackages(EXPOSED); getPackageContext(pkg); getClazz(bean); for( ClassOutlineImpl cc : getClasses() ) { if(superClass!=null) { model.strategy._extends(cc,getClazz(superClass)); } else { CClassRef refSuperClass = cc.target.getRefBaseClass(); for( ClassOutlineImpl co : getClasses() ) generateClassBody(co); generateEnumBody(eo); getPackageContext(ei._package()).objectFactoryGenerator().populate(ei); generateClassList();
parent.getClassFactory().createClass( parent.getContainer( ei.parent, Aspect.EXPOSED ), ei.shortName(), ei.getLocator() )); this.parent = parent; parent.elements.put(ei,this); JCodeModel cm = parent.getCodeModel(); JClass scope=null; if(ei.getScope()!=null) scope = parent.getClazz(ei.getScope()).implRef; JExpression scopeClass = scope==null?JExpr._null():scope.dotclass(); JFieldVar valField = implClass.field(JMod.PROTECTED|JMod.FINAL|JMod.STATIC,QName.class,"NAME",createQName(cm,ei.getElementName()));
writeTypeName(cc.target.getTypeName(), xtw, mostUsedNamespaceURI); while (subclasses.hasNext()) { CClassInfo s = subclasses.next(); saw.value(getClazz(s).implRef); generateFieldDecl(cc, prop); generateAttributeWildcard(cc);
scope = outline.getClazz(ei.getScope()).implClass; outline.getErrorReceiver().error(existing.getLocator(), Messages.OBJECT_FACTORY_CONFLICT.format(ei.getSqueezedName())); outline.getErrorReceiver().error(ei.getLocator(), Messages.OBJECT_FACTORY_CONFLICT_RELATED.format()); return; outline.generateAdapterIfNecessary(ei.getProperty(),m);
/** * return the Java type for the given type reference in the model. */ private JType resolve(CTypeRef typeRef,Aspect a) { return outline.parent().resolve(typeRef,a); }
/** * Annotate the field according to the recipes given as {@link CPropertyInfo}. */ protected void annotate( JAnnotatable field ) { assert(field!=null); if (prop instanceof CAttributePropertyInfo) { annotateAttribute(field); } else if (prop instanceof CElementPropertyInfo) { annotateElement(field); } else if (prop instanceof CValuePropertyInfo) { field.annotate(XmlValue.class); } else if (prop instanceof CReferencePropertyInfo) { annotateReference(field); } outline.parent().generateAdapterIfNecessary(prop,field); }