private void generateXmlTagsPropertiesFile(Model model) { PropertiesBuffer propertiesBuffer = new PropertiesBuffer(); // Path of the methods.properties file: String methods = XmlReader.class.getPackage().getName().replaceAll("\\.", "/") + "/" + XmlReader.METHODS_FILE; // Generate properties to register for every tag appropriate reader method: model.types() .filter(StructType.class::isInstance) .map(StructType.class::cast) .sorted() .forEach(type -> { Name typeName = type.getName(); String singularTag = schemaNames.getSchemaTagName(typeName); String pluralTag = schemaNames.getSchemaTagName(names.getPlural(typeName)); JavaClassName className = javaTypes.getXmlReaderName(type); propertiesBuffer.addProperty(singularTag, String.format("%1$s.readOne", className)); propertiesBuffer.addProperty(pluralTag, String.format("%1$s.readMany", className)); }); try { propertiesBuffer.write(new File(resourcesDir, methods)); } catch (IOException exception) { throw new RuntimeException("Can't write file for XML generic methods reader.", exception); } }
private JavaTypeReference getXjcStructTypeReference(StructType type) { JavaTypeReference reference = new JavaTypeReference(); String text = getSchemaTypeName(type.getName()); reference.setText(text); reference.addImport(javaPackages.getXjcPackageName(), text); return reference; }
private JavaTypeReference getStructReference(StructType type) { JavaTypeReference reference = new JavaTypeReference(); String text = javaNames.getJavaClassStyleName(type.getName()); reference.setText(text); reference.addImport(javaPackages.getTypesPackageName(), text); return reference; }
private void generateStructWriteOne(StructType type) { // Calculate the name of the type and the XML tag: JavaClassName typeName = javaTypes.getInterfaceName(type); String tag = schemaNames.getSchemaTagName(type.getName()); // Add the required imports: javaBuffer.addImport(typeName); javaBuffer.addImport(XmlWriter.class); // Generate the method that uses the default tag name: javaBuffer.addLine("public static void writeOne(%1$s object, XmlWriter writer) {", typeName.getSimpleName()); javaBuffer.addLine( "writeOne(object, \"%1$s\", writer);", tag); javaBuffer.addLine("}"); javaBuffer.addLine(); // Generate the method that receives the tag name as parameter: javaBuffer.addLine( "public static void writeOne(%1$s object, String tag, XmlWriter writer) {", typeName.getSimpleName()); javaBuffer.addLine("writer.writeStartElement(tag);"); Stream.concat(type.attributes(), type.links()) .filter(x -> schemaNames.isRepresentedAsAttribute(x.getName())) .sorted() .forEach(this::generateStructWriteMemberAsAttribute); Stream.concat(type.attributes(), type.links()) .filter(x -> !schemaNames.isRepresentedAsAttribute(x.getName())) .sorted() .forEach(this::generateStructWriteMemberAsElement); javaBuffer.addLine("writer.writeEndElement();"); javaBuffer.addLine("}"); javaBuffer.addLine(); }
private String getName(Concept concept) { String name = concept.getName().toString(); String parent = null; if (concept instanceof StructMember) { StructMember member = (StructMember) concept; parent = member.getDeclaringType().getName().toString(); } else if (concept instanceof Method) { Method method = (Method) concept; parent = method.getDeclaringService().getName().toString(); } if (parent != null) { name = parent + "/" + name; } return name; }
private void generateBuilderFactoryMethods(StructType type) { JavaClassName builderName = javaTypes.getBuilderName(type); javaBuffer.addImport(builderName); String methodName = javaNames.getJavaMemberStyleName(type.getName()); javaBuffer.addLine("public static %1$s %2$s() {", builderName.getSimpleName(), methodName); javaBuffer.addLine( "return new %1$s();", builderName.getSimpleName()); javaBuffer.addLine("}"); javaBuffer.addLine(); } }
String field = javaNames.getJavaMemberStyleName(name); String property = javaNames.getJavaPropertyStyleName(name); String declaring = javaNames.getJavaClassStyleName(member.getDeclaringType().getName());