Search in sources :

Example 6 with ChildElementInfo

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;
        }
    }
}
Also used : ElementInfo(com.predic8.membrane.annot.model.ElementInfo) ChildElementInfo(com.predic8.membrane.annot.model.ChildElementInfo) TypeElement(javax.lang.model.element.TypeElement) Element(javax.lang.model.element.Element) TypeElement(javax.lang.model.element.TypeElement) ArrayList(java.util.ArrayList) ChildElementInfo(com.predic8.membrane.annot.model.ChildElementInfo) BufferedWriter(java.io.BufferedWriter) MainInfo(com.predic8.membrane.annot.model.MainInfo) FileObject(javax.tools.FileObject) FilerException(javax.annotation.processing.FilerException) ChildElementDeclarationInfo(com.predic8.membrane.annot.model.ChildElementDeclarationInfo)

Example 7 with ChildElementInfo

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();
}
Also used : ElementInfo(com.predic8.membrane.annot.model.ElementInfo) ChildElementInfo(com.predic8.membrane.annot.model.ChildElementInfo) TreeSet(java.util.TreeSet)

Example 8 with ChildElementInfo

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;
        }
    }
}
Also used : ElementInfo(com.predic8.membrane.annot.model.ElementInfo) ChildElementInfo(com.predic8.membrane.annot.model.ChildElementInfo) TypeElement(javax.lang.model.element.TypeElement) Element(javax.lang.model.element.Element) TypeElement(javax.lang.model.element.TypeElement) ArrayList(java.util.ArrayList) ChildElementInfo(com.predic8.membrane.annot.model.ChildElementInfo) BufferedWriter(java.io.BufferedWriter) MainInfo(com.predic8.membrane.annot.model.MainInfo) FileObject(javax.tools.FileObject) FilerException(javax.annotation.processing.FilerException) ChildElementDeclarationInfo(com.predic8.membrane.annot.model.ChildElementDeclarationInfo)

Example 9 with ChildElementInfo

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");
    }
}
Also used : AttributeInfo(com.predic8.membrane.annot.model.AttributeInfo) ElementInfo(com.predic8.membrane.annot.model.ElementInfo) ChildElementInfo(com.predic8.membrane.annot.model.ChildElementInfo) ChildElementInfo(com.predic8.membrane.annot.model.ChildElementInfo)

Aggregations

ChildElementInfo (com.predic8.membrane.annot.model.ChildElementInfo)9 ElementInfo (com.predic8.membrane.annot.model.ElementInfo)7 AttributeInfo (com.predic8.membrane.annot.model.AttributeInfo)5 TypeElement (javax.lang.model.element.TypeElement)5 ChildElementDeclarationInfo (com.predic8.membrane.annot.model.ChildElementDeclarationInfo)4 MainInfo (com.predic8.membrane.annot.model.MainInfo)4 BufferedWriter (java.io.BufferedWriter)4 ArrayList (java.util.ArrayList)4 FilerException (javax.annotation.processing.FilerException)4 Element (javax.lang.model.element.Element)4 FileObject (javax.tools.FileObject)4 OtherAttributesInfo (com.predic8.membrane.annot.model.OtherAttributesInfo)2 TextContentInfo (com.predic8.membrane.annot.model.TextContentInfo)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 TreeSet (java.util.TreeSet)1 DeclaredType (javax.lang.model.type.DeclaredType)1 TypeMirror (javax.lang.model.type.TypeMirror)1