/** * Fix local name to be unique within the appropriate namespace for a category of names. * * @param qname requested qualified name (<code>null</code> allowed, always returns <code>null</code>) * @param map namespace URI to {@link UniqueNameSet} map for category * @return unique version of qualified name */ private QName fixQName(QName qname, Map map) { if (qname != null) { String uri = qname.getUri(); UniqueNameSet nameset = (UniqueNameSet)map.get(uri); if (nameset == null) { nameset = new UniqueNameSet(); map.put(uri, nameset); } String base = qname.getName(); String name = nameset.add(base); if (name.equals(base)) { return qname; } else { return new QName(uri, name); } } else { return null; } }
/** * Check if a qualified name is already defined within a category of names. * * @param qname requested qualified name (<code>null</code> allowed, always returns <code>false</code>) * @param map namespace URI to {@link UniqueNameSet} map for category * @return <code>true</code> if used, <code>false</code> if not */ private boolean isQNameUsed(QName qname, Map map) { if (qname != null) { UniqueNameSet nameset = (UniqueNameSet)map.get(qname.getUri()); if (nameset != null) { return nameset.contains(qname.getName()); } } return false; }
/** * Add derived class to package. This method is only used when top-level classes are being used for substructures. * * @param name preferred name for class * @param base base class name * @param nconv name converter for class * @param decorators class decorators * @param enumer enumeration class flag * @param holder binding holder * @return class generator */ public ClassHolder addClass(String name, String base, NameConverter nconv, ClassDecorator[] decorators, boolean enumer, BindingHolder holder) { ClassHolder def = enumer ? new EnumerationClassHolder(m_nameSet.add(name), base, this, holder, nconv, decorators, false) : (ClassHolder)new StructureClassHolder(m_nameSet.add(name), base, this, holder, nconv, decorators, false); m_classes.add(def); m_allClasses.add(def); return def; }
String text = group.getEffectiveClassName(); if (m_useInnerClasses) { if (m_nameSet.contains(text)) { StructureClassHolder outer = this; while (outer != null) { text = m_nameSet.add(text); child = group.isEnumeration() ? new EnumerationClassHolder(text, this) : (ClassHolder)new StructureClassHolder(text, this);
/** * Constructor. * * @param name full package name (dot-separated form) * @param dir target directory for code generation (<code>null</code> if skipping code generation) * @param parent parent package information */ public PackageHolder(String name, File dir, PackageHolder parent) { m_packageName = name; m_generateDirectory = dir; m_parentPackage = parent; if (m_parentPackage != null) { m_parentPackage.m_subpackageCount++; } m_nameSet = new UniqueNameSet(); m_classes = new ArrayList(); m_allClasses = new ArrayList(); }
ClassHolder superclas = (ClassHolder)m_superClass; superclas.getPackage().generate(verbose, m_superClass, m_classBuilder.getAST()); m_nameSet.addAll(superclas.m_nameSet);
/** * Add class to package. * * @param name preferred name for class * @param nconv name converter for class * @param decorators class decorators * @param inner use inner classes for substructures * @param enumer enumeration class flag * @param holder binding holder * @return class generator */ public ClassHolder addClass(String name, NameConverter nconv, ClassDecorator[] decorators, boolean inner, boolean enumer, BindingHolder holder) { String actual = m_nameSet.add(name); ClassHolder def = enumer ? new EnumerationClassHolder(actual, actual, this, holder, nconv, decorators, inner) : (ClassHolder)new StructureClassHolder(actual, actual, this, holder, nconv, decorators, inner); m_classes.add(def); m_allClasses.add(def); return def; }
/** * Constructor. * * @param name class name * @param base base class name * @param pack package information * @param holder binding holder * @param nconv name converter * @param decorators class decorators * @param inner use inner classes for substructures * @param simple simple value flag */ public ClassHolder(String name, String base, PackageHolder pack, BindingHolder holder, NameConverter nconv, ClassDecorator[] decorators, boolean inner, boolean simple) { super(buildName(name, pack), simple); m_package = pack; m_holder = holder; m_nameConverter = nconv; m_name = name; m_baseName = base; m_decorators = decorators; m_useInnerClasses = inner; m_importsTracker = new ImportsTracker(pack.getName()); m_outerClass = null; m_inners = new LazyList(); m_nameSet = new UniqueNameSet(); m_nameSet.add(name); m_importsTracker.addLocalType(name, getFullName()); }
/** * Convert base name to collection name. If using a <code>java.util.List</code> representation the name is converted * to singular form and "List" is appended; if using an array representation the name is converted to plural form. * * @param base * @param item */ private void setCollectionName(String base, Item item) { String name; if (getSchemaCustom().getRepeatType() == SchemaRootBase.REPEAT_ARRAY) { name = m_nameConverter.pluralize(base); if (!name.equals(base)) { s_logger.debug("Converted name " + base + " to " + name); } } else { String singular = m_nameConverter.depluralize(base); if (!singular.equals(base)) { s_logger.debug("Converted name " + base + " to " + singular); } name = singular + "List"; } item.setName(m_nameSet.add(name)); }
UniqueNameSet prefset = new UniqueNameSet(); prefset.add(m_schemaPrefix); for (Iterator iter = uritoprefix.keySet().iterator(); iter.hasNext();) { String uri = (String)iter.next(); prefix = "ns"; prefix = prefset.add(prefix); uritoprefix.put(uri, prefix);
/** * Add all fixed names in a group to the set of names defined for this class. This calls itself recursively to * handle nested groups. * * @param wrapper */ private void addFixedNames(ParentNode wrapper) { ArrayList values = wrapper.getChildren(); for (int i = 0; i < values.size(); i++) { DataNode value = (DataNode)values.get(i); Item item = value.getItem(); boolean addname = item.isFixedName(); if (value instanceof ParentNode) { ParentNode childgrp = (ParentNode)value; addFixedNames(childgrp); addname = addname && (childgrp.isSelectorNeeded() || wrapper.isSelectorNeeded()); } if (addname) { String name = item.getEffectiveName(); if (!m_nameSet.add(name).equals(name)) { // TODO: pass in the validation context, create an error throw new IllegalStateException("Name '" + name + "' cannot be used twice in same context"); } } } }
/** * Constructor for creating a child inner class definition. * * @param name class name * @param context parent class * @param simple simple value flag */ protected ClassHolder(String name, ClassHolder context, boolean simple) { super(context.getFullName() + '.' + name, context.getBindingName() + '$' + name, simple); m_package = context.m_package; m_holder = context.m_holder; m_nameConverter = context.m_nameConverter; m_name = name; m_baseName = null; m_decorators = context.m_decorators; m_useInnerClasses = true; m_importsTracker = context.m_importsTracker; m_outerClass = context; m_inners = new LazyList(); m_nameSet = new UniqueNameSet(); ClassHolder scan = this; while (scan != null) { m_nameSet.add(scan.getName()); scan = scan.m_outerClass; } m_importsTracker.addLocalType(name, getFullName()); m_package.addInnerClass(this); }
String constname = m_nameSet.add(m_nameConverter.toConstantName(value)); names.add(constname); if (!constname.equals(value)) {
item.setName(m_nameSet.add(m_nameConverter.toBaseName(item.getEffectiveName()) + "Select")); m_selectSet = new UniqueNameSet(); setCollectionName(name, item); } else { item.setName(m_nameSet.add(name)); name = item.getName(); } else { item.setName(m_nameSet.add(name)); name = m_selectSet.add(NameUtils.toNameWord(name)); node.setSelectPropName(name); node.setSelectConstName(m_nameConverter.toConstantName(name + suffix));
String plural = m_nameConverter.pluralize(workingname); if (!plural.equals(workingname)) { workingname = m_nameSet.add(plural);
String constname = m_nameSet.add(m_nameConverter.toConstantName(value)); FieldBuilder field = clasbuilder.addField(constname, name); field.setPublicStaticFinal();