Package com.envoisolutions.sxc.builder

Examples of com.envoisolutions.sxc.builder.ElementParserBuilder


            }
        }
       
        QName n = new QName(ns, step.getLocalName());
       
        ElementParserBuilder elBuilder = ((ElementParserBuilder) returnBuilder);
        if (step.getAxis() == Axis.CHILD) {
            if (n.getLocalPart().equals("*")) {
                returnBuilder = elBuilder.expectAnyElement();
            } else if (globalElement) {
                returnBuilder = elBuilder.expectGlobalElement(n);
            } else {
                returnBuilder = elBuilder.expectElement(n);
            }
        } else if (step.getAxis() == Axis.ATTRIBUTE) {
            returnBuilder = elBuilder.expectAttribute(n);
        } else {
            throw new XPathException("Unsupported axis: " + step.getAxis());
        }
       
        return handlePredicates(returnBuilder, step.getPredicateSet().getPredicates());
View Full Code Here


            }
        }
       
        QName n = new QName(ns, step.getLocalName());
       
        ElementParserBuilder elBuilder = ((ElementParserBuilder) returnBuilder);
        if (step.getAxis() == Axis.CHILD) {
            if (n.getLocalPart().equals("*")) {
                returnBuilder = elBuilder.expectAnyElement();
            } else if (globalElement) {
                returnBuilder = elBuilder.expectGlobalElement(n);
            } else {
                returnBuilder = elBuilder.expectElement(n);
            }
        } else if (step.getAxis() == Axis.ATTRIBUTE) {
            returnBuilder = elBuilder.expectAttribute(n);
        } else {
            throw new XPathException("Unsupported axis: " + step.getAxis());
        }
       
        return handlePredicates(returnBuilder, step.getPredicateSet().getPredicates());
View Full Code Here

        }
    }


    private void createRefParser(ElementParserBuilder builder, QName q, RuntimeElementInfo rei) {
        ElementParserBuilder elBuilder = builder.expectElement(q);
        ref2Parser.put(rei, elBuilder);

        Class<?> c = (Class<?>) rei.getContentType().getType();
        JExpression expression = handleElement(elBuilder, rei.getContentType(), null, c, !c.isPrimitive());
       
        CodeBody cb = elBuilder.getBody();
       
        JType type = model._ref(c);
        JType jaxbElementType = model._ref(JAXBElement.class);
        JType qnameType = model._ref(QName.class);
        JVar qname = cb.decl(qnameType, "_xname", JExpr.direct("reader").invoke("getName"));
       
        elBuilder.getBody()._return(jaxbElementType,
                                    JExpr._new(jaxbElementType)
                                    .arg(qname).arg(JExpr.dotclass((JClass) type))
                                    .arg(expression));
    }
View Full Code Here

                addComplexType(b, cls, info);
            }
            return;
        }
       
        ElementParserBuilder classBuilder = b.expectElement(info.getElementName());
        add(classBuilder, info.getElementName(), cls, null, info, false);
    }
View Full Code Here

    }
   
    private void addComplexType(ElementParserBuilder b, Class<?> cls, RuntimeClassInfo info) {
        if (addedXsiTypes.contains(cls)) return;
       
        ElementParserBuilder builder = b.expectXsiType(info.getTypeName());
       
        add(builder, info.getTypeName(), cls, null, info, true);
    }
View Full Code Here

                // Handle a reference to an <element> or choice of elements
                RuntimeReferencePropertyInfo propRef = (RuntimeReferencePropertyInfo) prop;
                for (RuntimeElement re : propRef.getElements()) {
                    RuntimeElementInfo rei = (RuntimeElementInfo) re;
                  
                    ElementParserBuilder elBuilder = classBuilder.expectElement(rei.getElementName());
                    JVar beanVar2 = elBuilder.passParentVariable(beanVar);
                   
                    ElementParserBuilder objBuilder = ref2Parser.get(rei);
                    if (objBuilder == null) {
                        createRefParser(rootReader, rei.getElementName(), rei);
                        objBuilder = ref2Parser.get(rei);
                    }
                   
                    JVar retVar = elBuilder.call(model._ref(rei.getType()), "_ret", objBuilder);
                    elBuilder.getBody()._return(retVar);
                    doSet(elBuilder.getBody().getBlock(), beanVar2, beanClass, propRef, retVar);

                }
            } else if (prop instanceof RuntimeValuePropertyInfo) {
              logger.info("Reader: Attributes on simple types are not supported yet!");
                RuntimeValuePropertyInfo propv = (RuntimeValuePropertyInfo) prop;
               
                ElementParserBuilder builder2 = (ElementParserBuilder) classBuilder.newState();
                JVar var = builder2.passParentVariable(beanVar);
               
                handlePropertyElement(builder2, var, beanClass, propv, propv.getTarget().getTypeName(),
                                      true, propv.getTarget());
            } else {
              logger.info("(JAXB Reader) Cannot yet map property " + prop.getName()
View Full Code Here

        BuilderKey key = new BuilderKey();
        key.parentClass = beanClass;
        key.type = name;
       
        if (key.type != null && type2Parser.containsKey(key)) {
            ElementParserBuilder child = type2Parser.get(key);
            classBuilder.expectElement(name, child, beanVar);
            return;
        } else {
            // No previous parser available, lets build one.
            ElementParserBuilder propBuilder = classBuilder.expectElement(name);
            JVar propVar = propBuilder.passParentVariable(beanVar);
           
            Class<?> propCls = (Class<?>) typeRef.getTarget().getType();
           
            type2Parser.put(key, propBuilder);
           
            // Check to see if the property class is abstract
            handlePropertyElement(propBuilder, propVar, beanClass,
                                  propEl,
                                  typeRef.getTagName(),
                                  typeRef.isNillable(),
                                  typeRef.getTarget());
           
            // Handle all the possible child types
            Map<Class, ? extends RuntimeClassInfo> beans = set.beans();
            for (Map.Entry<Class, ? extends RuntimeClassInfo> e : beans.entrySet()) {
                Class c = e.getKey();
                RuntimeClassInfo clsInfo = e.getValue();
               
                if (propCls.isAssignableFrom(c)
                    && propCls != c
                    && !Modifier.isAbstract(c.getModifiers())) {
                    ElementParserBuilder xsiBuilder = propBuilder.expectXsiType(clsInfo.getTypeName());
                    JVar xsiVar = xsiBuilder.passParentVariable(propVar);
                    handlePropertyElement(xsiBuilder, xsiVar, beanClass,
                                          propEl,
                                          typeRef.getTagName(),
                                          typeRef.isNillable(),
                                          clsInfo);
View Full Code Here

           
            BuilderKey key = new BuilderKey();
            key.parentClass = beanClass;
            key.type = name;
           
            ElementParserBuilder propBuilder = add(builder, name, c, beanClass, rci, false);
            if (propBuilder != null) {
                JExpression exp = JExpr.direct(c.getSimpleName());
                doSet(propBuilder.getBody().getBlock(), bean, beanClass, propEl, exp);
            }
        } else {
          logger.info("(JAXB Reader) Cannot map type " + c + " yet on " + beanClass);
        }
    }
View Full Code Here

       
        for (Map.Entry<Class, ? extends RuntimeEnumLeafInfo> e : set.enums().entrySet()) {
            Class cls = e.getKey();
            RuntimeEnumLeafInfo info = e.getValue();
           
            ElementParserBuilder enumBuilder;
            if (info.isElement()) {
                enumBuilder = rootReader.expectElement(info.getElementName());
            } else {
                enumBuilder = rootReader.expectXsiType(info.getTypeName());
            }
            JExpression toSet = handleElement(enumBuilder, info, null, cls, true);
           
            CodeBody cb = enumBuilder.getBody();
           
            JType type = model._ref(cls);
            JType jaxbElementType = model._ref(JAXBElement.class);
            JType qnameType = model._ref(QName.class);
            JVar qname = cb.decl(qnameType, "_xname", JExpr.direct("reader").invoke("getName"));
           
            enumBuilder.getBody()._return(jaxbElementType,
                                          JExpr._new(jaxbElementType)
                                          .arg(qname).arg(JExpr.dotclass((JClass) type))
                                          .arg(toSet));
        }
    }
View Full Code Here

       
        for (Map.Entry<Class, ? extends RuntimeEnumLeafInfo> e : set.enums().entrySet()) {
            Class cls = e.getKey();
            RuntimeEnumLeafInfo info = e.getValue();
           
            ElementParserBuilder enumBuilder;
            if (info.isElement()) {
                enumBuilder = rootReader.expectElement(info.getElementName());
            } else {
                enumBuilder = rootReader.expectXsiType(info.getTypeName());
            }
            JExpression toSet = handleElement(enumBuilder, info, null, cls, true);
           
            CodeBody cb = enumBuilder.getBody();
           
            JType type = model._ref(cls);
            JType jaxbElementType = model._ref(JAXBElement.class);
            JType qnameType = model._ref(QName.class);
            JVar qname = cb.decl(qnameType, "_xname", JExpr.direct("reader").invoke("getName"));
           
            enumBuilder.getBody()._return(jaxbElementType,
                                          JExpr._new(jaxbElementType)
                                          .arg(qname).arg(JExpr.dotclass((JClass) type))
                                          .arg(toSet));
        }
    }
View Full Code Here

TOP

Related Classes of com.envoisolutions.sxc.builder.ElementParserBuilder

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.