use of com.predic8.membrane.annot.model.ChildElementInfo in project service-proxy by membrane.
the class BlueprintParsers method writeParserDefinitior.
public void writeParserDefinitior(Model m) throws IOException {
for (MainInfo main : m.getMains()) {
List<Element> sources = new ArrayList<Element>();
sources.addAll(main.getInterceptorElements());
sources.add(main.getElement());
try {
FileObject o = processingEnv.getFiler().createSourceFile(main.getAnnotation().outputPackage() + ".blueprint" + ".BlueprintNamespaceParser", sources.toArray(new Element[0]));
BufferedWriter bw = new BufferedWriter(o.openWriter());
try {
bw.write("/* Copyright 2014 predic8 GmbH, www.predic8.com\r\n" + "\r\n" + " Licensed under the Apache License, Version 2.0 (the \"License\");\r\n" + " you may not use this file except in compliance with the License.\r\n" + " You may obtain a copy of the License at\r\n" + "\r\n" + " http://www.apache.org/licenses/LICENSE-2.0\r\n" + "\r\n" + " Unless required by applicable law or agreed to in writing, software\r\n" + " distributed under the License is distributed on an \"AS IS\" BASIS,\r\n" + " WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n" + " See the License for the specific language governing permissions and\r\n" + " limitations under the License. */\r\n" + "\r\n" + "package " + main.getAnnotation().outputPackage() + ".blueprint;\r\n" + "\r\n" + "/**\r\n" + " * Automatically generated by " + BlueprintParsers.class.getName() + ".\r\n" + " */\r\n" + "public class BlueprintNamespaceParser extends com.predic8.membrane.annot.parser.BlueprintNamespaceParser {\r\n" + "\r\n" + " public void init() {\r\n");
for (ElementInfo i : main.getIis()) {
if (i.getAnnotation().topLevel()) {
bw.write(" registerGlobalBeanDefinitionParser(\"" + i.getAnnotation().name() + "\", new " + i.getParserClassSimpleName() + "());\r\n");
} else {
for (ChildElementDeclarationInfo cedi : i.getUsedBy()) {
for (ChildElementInfo cei : cedi.getUsedBy()) {
TypeElement element = cei.getEi().getElement();
String clazz = AnnotUtils.getRuntimeClassName(element);
bw.write(" registerLocalBeanDefinitionParser(\"" + clazz + "\", \"" + i.getAnnotation().name() + "\", new " + i.getParserClassSimpleName() + "());\r\n");
}
}
}
}
bw.write(" }\r\n" + "}\r\n" + "");
} finally {
bw.close();
}
} catch (FilerException e) {
if (e.getMessage().contains("Source file already created"))
return;
throw e;
}
}
}
use of com.predic8.membrane.annot.model.ChildElementInfo in project service-proxy by membrane.
the class HelpReference method handle.
/*
private int getId(String xsdTypeName) {
if (ids.containsKey(xsdTypeName))
return ids.get(xsdTypeName);
int id = Math.abs(xsdTypeName.hashCode());
if (idsReverse.containsKey(id))
throw new ProcessingException("ID-assigning algorithm failed (two XSD types got the same ID)");
ids.put(xsdTypeName, id);
idsReverse.put(id, xsdTypeName);
return id;
}
*/
private void handle(Model m, MainInfo main, ChildElementInfo cei) throws XMLStreamException {
xew.writeStartElement("child");
xew.writeAttribute("min", cei.isRequired() ? "1" : "0");
xew.writeAttribute("max", cei.isList() ? "unbounded" : "1");
handleDoc(cei);
SortedSet<String> possibilities = new TreeSet<String>();
for (ElementInfo ei : main.getChildElementDeclarations().get(cei.getTypeDeclaration()).getElementInfo()) {
possibilities.add(ei.getId());
}
for (String id : possibilities) {
xew.writeStartElement("possibility");
xew.writeAttribute("refId", id);
xew.writeEndElement();
}
if (cei.getAnnotation().allowForeign()) {
xew.writeStartElement("possibility");
xew.writeAttribute("foreign", "true");
xew.writeEndElement();
}
xew.writeEndElement();
}
use of com.predic8.membrane.annot.model.ChildElementInfo in project service-proxy by membrane.
the class Parsers method writeParserDefinitior.
public void writeParserDefinitior(Model m) throws IOException {
for (MainInfo main : m.getMains()) {
List<Element> sources = new ArrayList<Element>();
sources.addAll(main.getInterceptorElements());
sources.add(main.getElement());
try {
FileObject o = processingEnv.getFiler().createSourceFile(main.getAnnotation().outputPackage() + ".NamespaceHandlerAutoGenerated", sources.toArray(new Element[0]));
BufferedWriter bw = new BufferedWriter(o.openWriter());
try {
bw.write("/* Copyright 2012,2013 predic8 GmbH, www.predic8.com\r\n" + "\r\n" + " Licensed under the Apache License, Version 2.0 (the \"License\");\r\n" + " you may not use this file except in compliance with the License.\r\n" + " You may obtain a copy of the License at\r\n" + "\r\n" + " http://www.apache.org/licenses/LICENSE-2.0\r\n" + "\r\n" + " Unless required by applicable law or agreed to in writing, software\r\n" + " distributed under the License is distributed on an \"AS IS\" BASIS,\r\n" + " WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n" + " See the License for the specific language governing permissions and\r\n" + " limitations under the License. */\r\n" + "\r\n" + "package " + main.getAnnotation().outputPackage() + ";\r\n" + "\r\n" + "/**\r\n" + " * Automatically generated by " + Parsers.class.getName() + ".\r\n" + " */\r\n" + "public class NamespaceHandlerAutoGenerated {\r\n" + "\r\n" + " public static void registerBeanDefinitionParsers(NamespaceHandler nh) {\r\n");
for (ElementInfo i : main.getIis()) {
if (i.getAnnotation().topLevel()) {
bw.write(" nh.registerGlobalBeanDefinitionParser(\"" + i.getAnnotation().name() + "\", new " + i.getParserClassSimpleName() + "());\r\n");
} else {
for (ChildElementDeclarationInfo cedi : i.getUsedBy()) {
for (ChildElementInfo cei : cedi.getUsedBy()) {
TypeElement element = cei.getEi().getElement();
String clazz = AnnotUtils.getRuntimeClassName(element);
bw.write(" nh.registerLocalBeanDefinitionParser(\"" + clazz + "\", \"" + i.getAnnotation().name() + "\", new " + i.getParserClassSimpleName() + "());\r\n");
}
}
}
}
bw.write(" }\r\n" + "}\r\n" + "");
} finally {
bw.close();
}
} catch (FilerException e) {
if (e.getMessage().contains("Source file already created"))
return;
throw e;
}
}
}
use of com.predic8.membrane.annot.model.ChildElementInfo in project service-proxy by membrane.
the class Schemas method assembleElementInfo.
private void assembleElementInfo(Writer w, Model m, MainInfo main, ElementInfo i) throws IOException {
w.append("<xsd:sequence>\r\n");
for (ChildElementInfo cei : i.getCeis()) {
w.append("<xsd:choice" + (cei.isRequired() ? " minOccurs=\"1\"" : " minOccurs=\"0\"") + (cei.isList() ? " maxOccurs=\"unbounded\"" : "") + ">\r\n");
assembleDocumentation(w, i);
for (ElementInfo ei : main.getChildElementDeclarations().get(cei.getTypeDeclaration()).getElementInfo()) {
if (ei.getAnnotation().topLevel())
w.append("<xsd:element ref=\"" + ei.getAnnotation().name() + "\">\r\n");
else
w.append("<xsd:element name=\"" + ei.getAnnotation().name() + "\" type=\"" + ei.getXSDTypeName(m) + "\">\r\n");
assembleDocumentation(w, ei);
w.append("</xsd:element>\r\n");
}
if (cei.getAnnotation().allowForeign())
w.append("<xsd:any namespace=\"##other\" processContents=\"strict\" />\r\n");
w.append("</xsd:choice>\r\n");
}
w.append("</xsd:sequence>\r\n");
for (AttributeInfo ai : i.getAis()) if (!ai.getXMLName().equals("id"))
assembleAttributeDeclaration(w, ai);
if (i.getOai() != null) {
w.append("<xsd:anyAttribute processContents=\"skip\">\r\n");
assembleDocumentation(w, i.getOai());
w.append("</xsd:anyAttribute>\r\n");
}
}
Aggregations