private QName calcXmlName(XmlAttribute att) { String uri; String local; uri = att.namespace(); local = att.name(); // compute the default if(local.equals("##default")) local = NameConverter.standard.toVariableName(getName()); if(uri.equals("##default")) { XmlSchema xs = reader().getPackageAnnotation( XmlSchema.class, parent.getClazz(), this ); // JAX-RPC doesn't want the default namespace URI swapping to take effect to // local "unqualified" elements. UGLY. if(xs!=null) { switch(xs.attributeFormDefault()) { case QUALIFIED: uri = parent.getTypeName().getNamespaceURI(); if(uri.length()==0) uri = parent.builder.defaultNsUri; break; case UNQUALIFIED: case UNSET: uri = ""; } } else uri = ""; } return new QName(uri.intern(),local.intern()); }
/** * Computes a Java class name from a local name. * * <p> * This method faithfully implements the name mangling rule as specified in the JAXB spec. * This method works like {@link #mangleNameToClassName(String)} except that it looks * for "getClass" and returns something else. * * @return * Typically, this method returns "NameLikeThis". */ public static @NotNull String mangleNameToPropertyName(@NotNull String localName) { return NameConverter.standard.toPropertyName(localName); }
/** * Computes a Java class name from a local name. * * <p> * This method faithfully implements the name mangling rule as specified in the JAXB spec. * * @return * Typically, this method returns "NameLikeThis". */ public static @NotNull String mangleNameToClassName(@NotNull String localName) { return NameConverter.standard.toClassName(localName); }
private CClassInfo createDefaultClass() { String className = owner.model.getNameConverter().toClassName(name); QName tagName = new QName("",name); return new CClassInfo(owner.model,owner.getTargetPackage(),className,locator,null,tagName,null,null/*TODO*/); }
local = NameConverter.standard.toVariableName(nav().getClassShortName(clazz)); return new QName(nsUri.intern(),local.intern());
String localPart = qname.getLocalPart(); String javaInterface = NameConverter.standard.toPackageName(qname.getNamespaceURI()) + '.' + Character.toUpperCase(localPart.charAt(0)) + localPart.substring(1); log.info("The Java interface for '" + wsdlInterface + "' is " + javaInterface);
/** * Returns the "squeezed name" of this element. * * @see CClassInfo#getSqueezedName() */ @XmlElement public String getSqueezedName() { if(squeezedName!=null) return squeezedName; StringBuilder b = new StringBuilder(); CClassInfo s = getScope(); if(s!=null) b.append(s.getSqueezedName()); if(className!=null) b.append(className); else b.append( model.getNameConverter().toClassName(tagName.getLocalPart())); return b.toString(); }
private void mapToClass(DElementPattern p) { NameClass nc = p.getName(); if(nc.isOpen()) return; // infinite name. can't map to a class. Set<QName> names = nc.listNames(); CClassInfo[] types = new CClassInfo[names.size()]; int i=0; for( QName n : names ) { // TODO: read class names from customization String name = model.getNameConverter().toClassName(n.getLocalPart()); bindQueue.put( types[i++] = new CClassInfo(model,pkg,name,p.getLocation(),null,n,null,null/*TODO*/), p.getChild() ); } classes.put(p,types); }
@Override public void generateAccessors() { final MethodWriter writer = outline.createMethodWriter(); final Accessor acc = create(JExpr._this()); $get = writer.declareMethod(listT,"get"+prop.getName(true)); writer.javadoc().append(prop.javadoc); JBlock block = $get.body(); block._return(acc.ref(true)); String pname = NameConverter.standard.toVariableName(prop.getName(true)); writer.javadoc().append( "Gets the value of the "+pname+" property.\n\n"+ "For example, to add a new item, do as follows:\n"+ "<pre>\n"+ " get"+prop.getName(true)+"().add(newItem);\n"+ "</pre>\n"+ "\n\n" ); writer.javadoc().append( "<p>\n" + "Objects of the following type(s) are allowed in the list\n") .append(listPossibleTypes(prop));
NameConverter nc = outline.parent().getModel().getNameConverter(); String javadoc = prop.javadoc; if(javadoc.length()==0) javadoc = Messages.DEFAULT_GETTER_JAVADOC.format(nc.toVariableName(prop.getName(true))); writer.javadoc().append(javadoc); $get.body()._return(ref()); JMethod $set = writer.declareMethod( codeModel.VOID, "set"+prop.getName(true) ); JVar $value = writer.addParameter( ptype, "value" ); body = $set.body(); body.assign(JExpr._this().ref(ref()),$value); writer.javadoc().append(Messages.DEFAULT_SETTER_JAVADOC.format(nc.toVariableName(prop.getName(true))));
/** * Generates an attribute wildcard property on a class. */ private void generateAttributeWildcard(ClassOutlineImpl cc) { String FIELD_NAME = "otherAttributes"; String METHOD_SEED = model.getNameConverter().toClassName(FIELD_NAME); JClass mapType = codeModel.ref(Map.class).narrow(QName.class, String.class); JClass mapImpl = codeModel.ref(HashMap.class).narrow(QName.class, String.class); // [RESULT] // Map<QName,String> m = new HashMap<QName,String>(); JFieldVar $ref = cc.implClass.field(JMod.PRIVATE, mapType, FIELD_NAME, JExpr._new(mapImpl)); $ref.annotate2(XmlAnyAttributeWriter.class); MethodWriter writer = cc.createMethodWriter(); JMethod $get = writer.declareMethod(mapType, "get" + METHOD_SEED); $get.javadoc().append( "Gets a map that contains attributes that aren't bound to any typed property on this class.\n\n" + "<p>\n" + "the map is keyed by the name of the attribute and \n" + "the value is the string value of the attribute.\n" + "\n" + "the map returned by this method is live, and you can add new attribute\n" + "by updating the map directly. Because of this design, there's no setter.\n"); $get.javadoc().addReturn().append("always non-null"); $get.body()._return($ref); }
private void generateNameOnlyMetaField(final PluginContext pluginContext, final JDefinedClass metaClass, final FieldOutline fieldOutline) { final PropertyOutline propertyOutline = new DefinedPropertyOutline(fieldOutline); final String constantName = getConstantName(fieldOutline); final Outline outline = pluginContext.outline; final String propertyName = constantName != null ? constantName : propertyOutline.getFieldName(); final String metaFieldName = this.camelCase ? propertyName : fieldOutline.parent().parent().getModel().getNameConverter().toConstantName(propertyName); metaClass.field(JMod.PUBLIC | JMod.STATIC | JMod.FINAL | JMod.TRANSIENT, String.class, metaFieldName, JExpr.lit(propertyName)); }
public static String getPropertyName(FieldOutline fieldOutline) { return NameConverter.standard.toVariableName(fieldOutline .getPropertyInfo().getName(true)); }
public CAttributePropertyInfo createAttributeProperty( XSAttributeUse use, TypeUse tu ) { boolean forConstant = getCustomization(use).isConstantProperty() && use.getFixedValue()!=null; String name = getPropertyName(forConstant); if(name==null) { NameConverter conv = getBuilder().getNameConverter(); if(forConstant) name = conv.toConstantName(use.getDecl().getName()); else name = conv.toPropertyName(use.getDecl().getName()); if(tu.isCollection() && getBuilder().getGlobalBinding().isSimpleMode()) name = JJavaName.getPluralForm(name); } markAsAcknowledged(); constantPropertyErrorCheck(); return wrapUp(new CAttributePropertyInfo(name,use,getCustomizations(use),use.getLocator(), BGMBuilder.getName(use.getDecl()), tu, BGMBuilder.getName(use.getDecl().getType()), use.isRequired() ),use); }
/** * Computes a Java identifier from a local name. * * <p> * This method faithfully implements the name mangling rule as specified in the JAXB spec. * * <p> * In JAXB, a collision with a Java reserved word (such as "return") never happens. * Accordingly, this method may return an identifier that collides with reserved words. * * <p> * Use {@code JJavaName.isJavaIdentifier(String)} to check for such collision. * * @return * Typically, this method returns "nameLikeThis". */ public static @NotNull String mangleNameToVariableName(@NotNull String localName) { return NameConverter.standard.toVariableName(localName); }
@Override public String elementDecl(final XSElementDecl decl) { final String customName = getCustomPropertyName(decl); return customName == null ? GroupInterfaceGenerator.this.pluginContext.outline.getModel().getNameConverter().toPropertyName(decl.getName()) : customName; }
private static List<CEnumConstant> buildMemberList( Model model, Element dom ) { List<CEnumConstant> r = new ArrayList<CEnumConstant>(); String members = DOMUtil.getAttribute(dom,"members"); if(members==null) members=""; // TODO: error handling StringTokenizer tokens = new StringTokenizer(members); while(tokens.hasMoreTokens()) { String token = tokens.nextToken(); r.add(new CEnumConstant(model.getNameConverter().toConstantName(token), null,token,null/*TODO*/,null,null)); } return r; } }
private String getConstantName(final FieldOutline fieldOutline) { final XSComponent schemaComponent = fieldOutline.getPropertyInfo().getSchemaComponent(); if (!this.fixedAttributeAsConstantProperty) return null; if (schemaComponent instanceof XSAttributeDecl) { return ((XSAttributeDecl)schemaComponent).getFixedValue() != null ? fieldOutline.parent().parent().getModel().getNameConverter().toConstantName(((XSAttributeDecl)schemaComponent).getName()) : null; } else { return schemaComponent instanceof XSAttributeUse && ((XSAttributeUse)schemaComponent).getFixedValue() != null ? fieldOutline.parent().parent().getModel().getNameConverter().toConstantName(((XSAttributeUse)schemaComponent).getDecl().getName()) : null; } }
/** * Computes the namespace {@code URI -> package name} conversion * as specified by the JAXB spec. * * @param namespaceUri * Namespace URI. Can be empty, but must not be null. * @return * A Java package name (e.g., "foo.bar"). "" to represent the root package. * This method returns null if the method fails to derive the package name * (there are certain namespace URIs with which this algorithm does not * work --- such as ":::" as the URI.) */ public static String getDefaultPackageName( String namespaceUri ) { if(namespaceUri==null) throw new IllegalArgumentException(); return NameConverter.standard.toPackageName( namespaceUri ); } }
private CClassInfo createDefaultClass() { String className = owner.model.getNameConverter().toClassName(name); QName tagName = new QName("",name); return new CClassInfo(owner.model,owner.getTargetPackage(),className,locator,null,tagName,null,null/*TODO*/); }