Package org.jibx.util

Examples of org.jibx.util.InsertionOrderedSet


        SchemaElement schema = holder.getSchema();
       
        // process messages and operations used by service
        ArrayList ops = service.getOperations();
        Map fltmap = new HashMap();
        Set imports = new InsertionOrderedSet();
        Map typemap = new HashMap(ptypemap);
        for (int i = 0; i < ops.size(); i++) {
           
            // get information for operation
            OperationCustom odef = (OperationCustom)ops.get(i);
            String oname = odef.getOperationName();
            Operation op = new Operation(oname);
            op.setDocumentation(odef.getDocumentation());
            op.setSoapAction(odef.getSoapAction());
           
            // generate input message information
            Message rqmsg = new Message(odef.getRequestMessageName(), wns);
            op.addInputMessage(rqmsg);
            def.addMessage(rqmsg);
            QName rqelem = null;
            if (m_generationParameters.isDocLit()) {
               
                // check if input parameter defined for method
                ArrayList parms = odef.getParameters();
                if (parms.size() > 0) {
                   
                    // check for existing element definition matching the parameter type
                    ValueCustom parm = (ValueCustom)parms.get(0);
                    rqelem = (QName)classelems.get(parm.getWorkingType());
                    if (rqelem == null) {
                       
                        // create new element for parameter
                        ElementElement pelem = buildValueElement(parm, ptypemap, typeschemas, holder);
                        schema.getTopLevelChildren().add(pelem);
                        rqelem = pelem.getQName();
                       
                    } else {
                       
                        // import and use existing element definition
                        imports.add(elemschemas.get(rqelem));
                        addSchemaReference(rqelem, elemschemas, holder);
                       
                    }
                }
               
            } else {
               
                // construct a sequence for wrapped method parameters
                SequenceElement seq = new SequenceElement();
                ArrayList parms = odef.getParameters();
                for (int j = 0; j < parms.size(); j++) {
                    ValueCustom parm = (ValueCustom)parms.get(j);
                    String type = parm.getWorkingType();
                    ElementElement pelem;
                    if (!typemap.containsKey(type)) {
                       
                        // add predefined mapping type to known types and require schema import
                        QName tname = (QName)classtypes.get(type);
                        if (tname != null) {
                            typemap.put(type, tname);
                            imports.add(typeschemas.get(tname));
                        }
                       
                    }
                    pelem = buildValueElement(parm, ptypemap, typeschemas, holder);
                    seq.getParticleList().add(pelem);
                }
               
                // add corresponding schema definition to schema
                ComplexTypeElement tdef = new ComplexTypeElement();
                tdef.setContentDefinition(seq);
                ElementElement elem = new ElementElement();
                String wname = odef.getRequestWrapperName();
                elem.setName(wname);
                elem.setTypeDefinition(tdef);
                schema.getTopLevelChildren().add(elem);
                rqelem = new QName(sns, wname);
               
            }
           
            // add part definition to message (if present)
            if (rqelem != null) {
                MessagePart part = new MessagePart("part", rqelem);
                rqmsg.getParts().add(part);
                def.addNamespace(rqelem.getUri());
            }
           
            // generate output message information
            Message rsmsg = new Message(odef.getResponseMessageName(), wns);
            op.addOutputMessage(rsmsg);
            def.addMessage(rsmsg);
            ValueCustom rtrn = odef.getReturn();
            QName rselem = null;
            if (m_generationParameters.isDocLit()) {
               
                // check if return value defined for method
                if (!"void".equals(rtrn.getWorkingType())) {
                   
                    // check for existing element definition matching the return type
                    rselem = (QName)classelems.get(rtrn.getWorkingType());
                    if (rselem == null) {
                       
                        // create new element for return
                        ElementElement relem = buildValueElement(rtrn, ptypemap, typeschemas, holder);
                        schema.getTopLevelChildren().add(relem);
                        rselem = relem.getQName();
                       
                    } else {
                       
                        // import and use existing element definition
                        imports.add(elemschemas.get(rselem));
                        addSchemaReference(rqelem, elemschemas, holder);
                       
                    }
                }
               
View Full Code Here


            }
        }
       
        // accumulate unmapped data classes used by all service operations
        // TODO: throws class handling, with multiple services per WSDL
        InsertionOrderedSet abstrs = new InsertionOrderedSet();
        InsertionOrderedSet concrs = new InsertionOrderedSet();
        ArrayList qnames = new ArrayList();
        List services = wsdlcustom.getServices();
        boolean doclit = m_generationParameters.isDocLit();
        for (Iterator iter = services.iterator(); iter.hasNext();) {
            ServiceCustom service = (ServiceCustom)iter.next();
            List ops = service.getOperations();
            for (Iterator iter1 = ops.iterator(); iter1.hasNext();) {
                OperationCustom op = (OperationCustom)iter1.next();
                List parms = op.getParameters();
                if (doclit && parms.size() > 1) {
                    System.err.println("Multiple parmameters not allowed for doc/lit: method " + op.getMethodName());
                }
                for (Iterator iter2 = parms.iterator(); iter2.hasNext();) {
                    ValueCustom parm = (ValueCustom)iter2.next();
                    if (doclit) {
                        accumulateData(parm, classelems, concrs);
                    } else {
                        accumulateData(parm, classtypes, abstrs);
                    }
                }
                if (doclit) {
                    accumulateData(op.getReturn(), classelems, concrs);
                } else {
                    accumulateData(op.getReturn(), classtypes, abstrs);
                }
                ArrayList thrws = op.getThrows();
                for (int i = 0; i < thrws.size(); i++) {
                   
                    // add concrete mapping for data type, if used
                    ThrowsCustom thrw = (ThrowsCustom)thrws.get(i);
                    FaultCustom fault = wsdlcustom.forceFaultCustomization(thrw.getType());
                    if (!concrs.contains(fault.getDataType())) {
                        concrs.add(fault.getDataType());
                        qnames.add(new QName(service.getNamespace(), fault.getElementName()));
                    }
                }
            }
        }
       
        // include extra classes as needing concrete mappings
        GlobalCustom global = m_generationParameters.getGlobal();
        for (int i = 0; i < extras.size(); i++) {
            String type = (String)extras.get(i);
            if (!concrs.contains(type)) {
                concrs.add(type);
                global.addClassCustomization(type);
                qnames.add(null);
            }
        }
       
        // generate bindings for all data classes used
        m_bindingGenerator.generateSpecified(qnames, concrs.asList(), abstrs.asList());
       
        // add binding definitions for collections passed or returned in plain doc/lit, and find empty service bindings
        Map typemap = new HashMap();
        Set unbounduris = new HashSet();
        for (Iterator iter = services.iterator(); iter.hasNext();) {
View Full Code Here

        TreeWalker.setLogging(Level.ERROR);
        RefactoryCommandLine parms = new RefactoryCommandLine();
        if (args.length > 0 && parms.processArgs(args)) {
           
            // build set of schemas specified on command line (including via wildcards)
            InsertionOrderedSet fileset = new InsertionOrderedSet();
            URL base = parms.getSchemaRoot();
            File basedir = parms.getSchemaDir();
            SchemaNameFilter filter = new SchemaNameFilter();
            boolean err = false;
            for (Iterator iter = parms.getExtraArgs().iterator(); iter.hasNext();) {
                String name = (String)iter.next();
                if (name.indexOf('*') >= 0) {
                    if (basedir == null) {
                        System.err.println("File name pattern argument not allowed for non-file base: '" + name + '\'');
                    } else {
                        filter.setPattern(name);
                        s_logger.debug("Matching file names to command line pattern '" + name + '\'');
                        String[] matches = basedir.list(filter);
                        for (int i = 0; i < matches.length; i++) {
                            String match = matches[i];
                            fileset.add(new UrlResolver(match, new URL(base, match)));
                        }
                    }
                } else {
                    if (basedir == null) {
                        URL url = new URL(base, name);
                        s_logger.debug("Adding schema URL from command line: " + url.toExternalForm());
                        fileset.add(new UrlResolver(name, url));
                    } else {
                        File sfile = new File(basedir, name);
                        if (sfile.exists()) {
                            s_logger.debug("Adding schema file from command line: " + sfile.getCanonicalPath());
                            fileset.add(new UrlResolver(name, new URL(base, name)));
                        } else {
                            System.err.println("Schema file from command line not found: " + sfile.getAbsolutePath());
                            err = true;
                        }
                    }
                }
            }
            if (!err) {
               
                // add any schemas specified in customizations
                addCustomizedSchemas(base, basedir, parms.getCustomRoot(), fileset);
               
                // load the full set of schemas
                Refactory inst = new Refactory(parms);
                SchemaElement[] schemas = inst.load(fileset.asList());
                if (!reportProblems(inst.m_validationContext)) {
                    if (inst.customizeSchemas()) {
                        System.out.println("Loaded and validated " + fileset.size() + " schemas");
                       
                        // apply the customizations to the schema
                        inst.applyAndNormalize();
                        inst.pruneDefinitions();
                       
View Full Code Here

        m_trimWhitespace = trim;
        m_uriPrefixDefaults = new HashMap();
        m_keyObjects = new ArrayList();
        m_objectBindings = new HashMap();
        m_referenceUriBinding = new InsertionOrderedMap();
        m_nsRootUris = new InsertionOrderedSet();
        m_formats = new LazyList();
    }
View Full Code Here

     */
    public BindingHolder(String uri, boolean dflt, BindingOrganizer dir) {
        m_organizer = dir;
        m_namespace = uri;
        m_elementDefault = dflt;
        m_referencedNamespaces = new InsertionOrderedSet();
        m_usedNamespaces = new InsertionOrderedSet();
        m_binding = new BindingElement();
        m_mappings = new LazyList();
    }
View Full Code Here

                namemap.put(name, memb);
            }
        }
       
        // generate sets of names to be included or ignored, and optional/requires, elements/attributes
        InsertionOrderedSet nameset = new InsertionOrderedSet();
        Set exclset = null;
        Set inclset = null;
        Set elemset = Collections.EMPTY_SET;
        Set attrset = Collections.EMPTY_SET;
        Set optset = Collections.EMPTY_SET;
        Set reqset = Collections.EMPTY_SET;
        if (m_includes != null || m_optionals != null || m_requireds != null) {
           
            // initialize the ordered set of names to be included
            String[] optionals = stripNames(m_optionals);
            String[] requireds = stripNames(m_requireds);
            if (m_includes != null) {
                nameset.addAll(stripNames(m_includes));
            } else {
                if (requireds != null) {
                    nameset.addAll(requireds);
                }
                if (optionals != null) {
                    nameset.addAll(optionals);
                }
            }
           
            // build sets of includeds, optionals, and requireds
            inclset = CustomUtils.noCaseNameSet(stripNames(m_includes));
            if (optionals != null) {
                optset = CustomUtils.noCaseNameSet(optionals);
            }
            if (requireds != null) {
                reqset = CustomUtils.noCaseNameSet(requireds);
            }
           
            // classify names as elements or attributes
            elemset = new HashSet();
            attrset = new HashSet();
            classifyNames(m_requireds, elemset, attrset);
            classifyNames(m_optionals, elemset, attrset);
            classifyNames(m_includes, elemset, attrset);
           
        }
        if (m_excludes != null) {
            exclset = CustomUtils.noCaseNameSet(stripNames(m_excludes));
        }
       
        // first find members from property access methods
        Map getmap = null;
        Map setmap = null;
        IClassItem[] methods = m_classInformation.getMethods();
        GlobalCustom global = getGlobal();
        if (global.isOutput()) {
           
            // find properties using read access methods
            getmap = mapPropertyReadMethods(methods, inclset, exclset);
            if (global.isInput()) {
               
                // find properties using write access methods
                setmap = mapPropertyWriteMethods(methods, inclset, exclset);
               
                // discard any read-only properties
                for (Iterator iter = getmap.keySet().iterator(); iter.hasNext();) {
                    if (!setmap.containsKey(iter.next())) {
                        iter.remove();
                    }
                }
               
            }
        }
        if (global.isInput()) {
           
            // find properties using write access methods
            setmap = mapPropertyWriteMethods(methods, inclset, exclset);
           
        }
       
        // find members from fields
        IClassItem[] fields = m_classInformation.getFields();
        Map fieldmap = mapFields(fields, getStripPrefixes(), getStripSuffixes(), inclset, exclset);
       
        // get list of names selected for use by options
        if (m_includes == null) {
            if (isPropertyAccess()) {
                if (global.isOutput()) {
                    nameset.addAll(getmap.keySet());
                } else {
                    nameset.addAll(setmap.keySet());
                }
            } else {
                for (Iterator iter = fieldmap.keySet().iterator(); iter.hasNext();) {
                    String name = (String)iter.next();
                    IClassItem field = (IClassItem)fieldmap.get(name);
                    int access = field.getAccessFlags();
                    if (!Modifier.isStatic(access) && !Modifier.isTransient(access)) {
                        nameset.add(name);
                    }
                }
            }
        }
       
        // process all members found in class
        m_memberMap = new InsertionOrderedMap();
        boolean auto = !getName().startsWith("java.") && !getName().startsWith("javax.");
        List names = nameset.asList();
        for (Iterator iter = names.iterator(); iter.hasNext();) {
           
            // get basic member information
            String name = (String)iter.next();
            String lcname = name.toLowerCase();
View Full Code Here

        TreeWalker.setLogging(Level.ERROR);
        CodeGenCommandLine parms = new CodeGenCommandLine();
        if (args.length > 0 && parms.processArgs(args)) {
           
            // build set of schemas specified on command line (including via wildcards)
            final InsertionOrderedSet fileset = new InsertionOrderedSet();
            URL base = parms.getSchemaRoot();
            File basedir = parms.getSchemaDir();
            List errors = ResourceMatcher.matchPaths(basedir, base, parms.getExtraArgs(),
                new ResourceMatcher.ReportMatch() {
                    public void foundMatch(String path, URL url) {
                        fileset.add(new UrlResolver(path, url));
                    }
                });
            if (errors.size() > 0) {
                for (Iterator iter = errors.iterator(); iter.hasNext();) {
                    s_logger.error(iter.next());
                }
                System.exit(2);
            }
           
            // handle code generation from schemas
            ProblemMultiHandler handler = new ProblemMultiHandler();
            handler.addHandler(new ProblemConsoleLister());
            handler.addHandler(new ProblemLogLister(s_logger));
            CodeGen inst = new CodeGen(parms.getCustomRoot(), parms.getSchemaRoot(),
                parms.getGeneratePath());
            inst.generate(parms.isVerbose(), parms.getUsingNamespace(), parms.getNonamespacePackage(),
                parms.getBindingName(), fileset.asList(), parms.getIncludePaths(), parms.getModelFile(), handler);
           
        } else {
            if (args.length > 0) {
                s_logger.error("Terminating due to command line or customization errors");
            } else {
View Full Code Here

            return null;
        } else {
           
            // scan the item tree structure to find schema components needing special handling
            Map comptoclas = new HashMap();
            InsertionOrderedSet refcomps = new InsertionOrderedSet();
            AnnotatedBase grpcomp = group.getSchemaComponent();
            refcomps.add(grpcomp);
            Map uritoprefix = new HashMap();
            if (grpcomp instanceof INamed) {
                QName qname = ((INamed)grpcomp).getQName();
                if (qname == null && grpcomp instanceof IReference) {
                    qname = ((IReference)grpcomp).getRef();
                }
                if (qname != null && qname.getUri() != null) {
                    uritoprefix.put(qname.getUri(), qname.getPrefix());
                }
            }
            scanItemTree(group, comptoclas, refcomps, uritoprefix);
           
            // get full set of namespaces and corresponding prefixes needed for extracts
            UniqueNameSet prefset = new UniqueNameSet();
            prefset.add(m_schemaPrefix);
            for (Iterator iter = uritoprefix.keySet().iterator(); iter.hasNext();) {
                String uri = (String)iter.next();
                if (!SCHEMA_DEFINITIONS_NS.equals(uri)) {
                    String prefix = (String)uritoprefix.get(uri);
                    if (prefix == null) {
                        prefix = "ns";
                    }
                    prefix = prefset.add(prefix);
                    uritoprefix.put(uri, prefix);
                }
               
            }
           
            // set the writer to be used for output
            StringWriter strwriter = new StringWriter();
            m_context.setOutput(strwriter);
           
            // define namespaces as extension to those used in binding
            int count = uritoprefix.size();
            String[] uris = (String[])uritoprefix.keySet().toArray(new String[count]);
            IXMLWriter xmlwriter = m_context.getXmlWriter();
            int base = xmlwriter.getNamespaceCount();
            xmlwriter.pushExtensionNamespaces(uris);
           
            // build the arrays of namespace indexes and prefixes for use on marshalled root elements
            int length = count;
            if (!uritoprefix.containsKey(null)) {
                length++;
            }
            String[] prefixes = new String[length];
            int[] indexes = new int[length];
            int fill = 0;
            for (int i = 0; i < count; i++) {
                String uri = uris[i];
                if (uri != null) {
                    prefixes[fill] = (String)uritoprefix.get(uris[i]);
                    indexes[fill] = base+fill;
                    fill++;
                }
            }
            prefixes[fill] = m_schemaPrefix;
            indexes[fill] = m_schemaIndex;
           
            // build schema extracts from main component and all referenced components
            String clasname = group.getGenerateClass().getFullName();
            TreeWalker walker = new TreeWalker(null, new SchemaContextTracker());
            boolean ref = false;
            List list = refcomps.asList();
            for (Iterator iter = list.iterator(); iter.hasNext();) {
               
                // add a blank line separating components
                if (ref) {
                    strwriter.write(COMMENT_LEAD_TEXT);
View Full Code Here

TOP

Related Classes of org.jibx.util.InsertionOrderedSet

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.