Package com.envoisolutions.sxc.builder

Examples of com.envoisolutions.sxc.builder.BuildException


            createCollectionBlock.assign(collectionVar, JExpr._new(collectionVar.type()));
        } else if (property.getField() == null && property.getGetter() == null) {
            // write only collections are not allowed by the spec, but we can support it anyway
            JType collectionType = getCollectionClass(property.getType(), property.getComponentType());
            if (collectionType == null) {
                throw new BuildException("Collection property does not have a getter and collection does not have a default constructor: " +
                        property.getBean().getType().getName() + "." + property.getName());
            }
            createCollectionBlock.assign(collectionVar, JExpr._new(collectionType));
        } else {
            if (property.getField() != null) {
View Full Code Here


            } else if (destType.equals(BigInteger.class)) {
                return JExpr._new(context.toJClass(BigInteger.class)).arg(stringValue);
            } else if (destType.isEnum()) {
                JAXBEnumBuilder enumBuilder = enumBuilders.get(destType);
                if (enumBuilder == null) {
                    throw new BuildException("Unknown enum type " + destType);
                }
                return invokeEnumParser(builder, xsrVar, enumBuilder, stringValue);
            }
        }
        throw new UnsupportedOperationException("Invalid type " + destType);
View Full Code Here

            CodeWriterImpl codeWriter;
            try {
                codeWriter = new CodeWriterImpl((String) properties.get("com.envoisolutions.sxc.output.directory"));
                write(codeWriter);
            } catch (IOException e) {
                throw new BuildException(e);
            }
            sources = codeWriter.getSources();
        }
        return sources;
    }
View Full Code Here

                            Class itemType = entry.getKey();
                            ElementMapping mapping = entry.getValue();

                            if (mapping.isNillable()) {
                                if (nilMapping != null && nilMapping != mapping) {
                                    throw new BuildException("Property " + property + " mappings " + mapping.getXmlName() + " and " + nilMapping + " are both nillable.  Only one mapping may of an property may be nilable");
                                }
                                nilMapping = mapping;
                            }


                            // add instance of check
                            JExpression isInstance = outerVar._instanceof(context.toJClass(itemType));
                            JBlock block = conditional.addCondition(isInstance);

                            // add space (' ') separator for XmlList
                            if (property.isXmlList()) {
                                // if (fooFirst) {
                                //    writer.writeCharacters(" ");
                                // }
                                // fooFirst = false;
                                block._if(firstVar.not())._then().add(builder.getXSW().invoke("writeCharacters").arg(" "));
                                block.assign(firstVar, JExpr.FALSE);
                            }

                            // declare item variable
                            JVar itemVar;
                            if (toClass(property.getComponentType()) == itemType) {
                                itemVar = outerVar;
                            } else {
                                String itemName = builder.getWriteVariableManager().createId(itemType.getSimpleName());
                                itemVar = block.decl(context.toJClass(itemType), itemName, JExpr.cast(context.toJClass(itemType), outerVar));
                            }
                            writeElement(builder, block, mapping, itemVar, itemType, false, property.isXmlList());
                        }

                        // if item was null, write xsi:nil or report an error
                        JBlock nullBlock = conditional.addCondition(outerVar.eq(JExpr._null()));
                        if (nilMapping != null) {
                            // write start element
                            QName name = nilMapping.getXmlName();
                            nullBlock.add(builder.getWriteStartElement(name));

                            // write xsi:nil
                            nullBlock.add(builder.getXSW().invoke("writeXsiNil"));

                            // close element
                            nullBlock.add(builder.getXSW().invoke("writeEndElement"));
                        } else {
                            nullBlock.invoke(builder.getWriteContextVar(), "unexpectedNullValue").arg(builder.getWriteObject()).arg(property.getName());
                        }

                        // if not a recogonized type or null, report unknown type error
                        JInvocation unexpected = conditional._else().invoke(builder.getWriteContextVar(), "unexpectedElementType").arg(builder.getXSW()).arg(builder.getWriteObject()).arg(property.getName()).arg(outerVar);
                        for (Class expectedType : expectedTypes.keySet()) {
                            unexpected.arg(context.dotclass(expectedType));
                        }
                    }
                    break;
                case ELEMENT_REF:
                    JBlock block = builder.getWriteMethod().body();

                    JVar itemVar = propertyVar;
                    if (property.isCollection()) {
                        JBlock collectionNotNull = block._if(propertyVar.ne(JExpr._null()))._then();

                        JType itemType;
                        if (!toClass(property.getComponentType()).isPrimitive()) {
                            itemType = context.getGenericType(property.getComponentType());
                        } else {
                            itemType = context.toJType((Class<?>) toClass(property.getComponentType()));
                        }

                        String itemName = builder.getWriteVariableManager().createId( property.getName() + "Item");
                        JForEach each = collectionNotNull.forEach(itemType, itemName, propertyVar);

                        JBlock newBody = each.body();
                        block = newBody;
                        itemVar = each.var();
                    }

                    // process value through adapter
                    itemVar = writeAdapterConversion(builder, block, property, itemVar);

                    if (property.isMixed()) {
                        // add instance of check
                        JExpression isInstance = itemVar._instanceof(context.toJClass(String.class));
                        JConditional conditional = block._if(isInstance);

                        // declare item variable
                        JVar stringVar;
                        if (toClass(property.getComponentType()) == String.class) {
                            stringVar = itemVar;
                        } else {
                            String itemName = builder.getWriteVariableManager().createId("string");
                            stringVar = conditional._then().decl(context.toJClass(String.class), itemName, JExpr.cast(context.toJClass(String.class), itemVar));
                        }
                        writeSimpleTypeElement(builder, stringVar, String.class, conditional._then());

                        block = conditional._else();
                    }


                    if (!property.isXmlAny()) {
                        block.invoke(builder.getWriteContextVar(), "unexpectedElementRef").arg(builder.getXSW()).arg(builder.getWriteObject()).arg(property.getName()).arg(itemVar);
                    } else {
                        block.invoke(builder.getWriteContextVar(), "writeXmlAny").arg(builder.getXSW()).arg(builder.getWriteObject()).arg(property.getName()).arg(itemVar);
                    }
                    break;
                case VALUE:
                    block = builder.getWriteMethod().body();

                    itemVar = propertyVar;
                    firstVar = null;
                    if (property.isCollection()) {
                        JBlock collectionNotNull = block._if(propertyVar.ne(JExpr._null()))._then();

                        JType itemType;
                        if (!toClass(property.getComponentType()).isPrimitive()) {
                            itemType = context.getGenericType(property.getComponentType());
                        } else {
                            itemType = context.toJType((Class<?>) toClass(property.getComponentType()));
                        }

                        firstVar = collectionNotNull.decl(context.toJType(boolean.class), builder.getWriteVariableManager().createId(property.getName() + "First"), JExpr.TRUE);

                        String itemName = builder.getWriteVariableManager().createId( property.getName() + "Item");
                        JForEach each = collectionNotNull.forEach(itemType, itemName, propertyVar);

                        JBlock newBody = each.body();
                        block = newBody;
                        itemVar = each.var();
                    }

                    // add space (' ') separator for XmlList
                    if (property.isCollection()) {
                        // if (fooFirst) {
                        //    writer.writeCharacters(" ");
                        // }
                        // fooFirst = false;
                        block._if(firstVar.not())._then().add(builder.getXSW().invoke("writeCharacters").arg(" "));
                        block.assign(firstVar, JExpr.FALSE);
                    }

                    // process value through adapter
                    propertyVar = writeAdapterConversion(builder, block, property, itemVar);

                    // write it
                    writeSimpleTypeElement(builder, propertyVar, toClass(property.getComponentType()), block);

                    break;
                default:
                    throw new BuildException("Unknown XmlMapping type " + property.getXmlStyle());
            }
        }
    }
View Full Code Here

            } else {
                JFieldVar propertyAccessorField = builder.getPrivatePropertyAccessor(property.getGetter(), property.getSetter(), property.getName());
                propertyVar.init(propertyAccessorField.invoke("getObject").arg(beanVar).arg(builder.getWriteContextVar()).arg(beanVar));
            }
        } else {
            throw new BuildException("Property does not have a getter " + property.getBean().getClass().getName() + "." + property.getName());
        }

        return propertyVar;
    }
View Full Code Here

    private void writeClassWriter(JAXBObjectBuilder builder, Bean bean, JBlock block, JExpression propertyVar) {
        // Complex type which will already have an element builder defined
        JAXBObjectBuilder existingBuilder = builders.get(bean);
        if (existingBuilder == null) {
            throw new BuildException("Unknown bean " + bean);
        }

        // Declare dependency from builder to existingBuilder
        builder.addDependency(existingBuilder.getJAXBObjectClass());
View Full Code Here

    private Property findReferencedIdProperty(Property property) {
        // find referenced bean
        Bean targetBean = model.getBean(toClass(property.getComponentType()));
        if (targetBean == null) {
            throw new BuildException("Unknown bean " + toClass(property.getType()));
        }

        // find id property on referenced bean
        Property idProperty = null;
        while (idProperty == null) {
            for (Property targetProperty : targetBean.getProperties()) {
                if (targetProperty.isId()) {
                    idProperty = targetProperty;
                    break;
                }
            }
            if (idProperty == null) {
                if (targetBean.getBaseClass() == null) {
                    throw new BuildException("Property " + property + " is an IDREF, but property type " + toClass(property.getType()).getName() + " does not have an ID property");
                }
                targetBean = targetBean.getBaseClass();
            }
        }
        return idProperty;
View Full Code Here

            } else if (type.equals(BigInteger.class)) {
                return value.invoke("toString");
            } else if (type.isEnum()) {
                JAXBEnumBuilder enumBuilder = enumBuilders.get(type);
                if (enumBuilder == null) {
                    throw new BuildException("Unknown enum type " + type);
                }

                return invokeEnumToString(builder, builder.getWriteObject(), JExpr._null(), enumBuilder, value);
            }
        }
View Full Code Here

        try {
            jaxbObjectClass = builderContext.getCodeModel()._class("sxc." + type.getName() + "JAXB");
            jaxbObjectClass._extends(builderContext.getCodeModel().ref(JAXBObject.class));
        } catch (JClassAlreadyExistsException e) {
            throw new BuildException(e);
        }

        constructor = jaxbObjectClass.constructor(JMod.PUBLIC);
        superInvocation = constructor.body().invoke("super")
                .arg(JExpr.dotclass(builderContext.toJClass(type)))
View Full Code Here

        try {
            jaxbObjectFactoryClass = builderContext.getCodeModel()._class(className);
            jaxbObjectFactoryClass._extends(builderContext.getCodeModel().ref(JAXBObjectFactory.class).narrow(type));
        } catch (JClassAlreadyExistsException e) {
            throw new BuildException(e);
        }

        // INSTANCE variable
        jaxbObjectFactoryClass.field(JMod.PUBLIC | JMod.STATIC | JMod.FINAL, jaxbObjectFactoryClass, "INSTANCE", JExpr._new(jaxbObjectFactoryClass));
View Full Code Here

TOP

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

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.