Package org.apache.axis.wsdl.wsdl2ws.info

Examples of org.apache.axis.wsdl.wsdl2ws.info.Type


    protected void writeGlobalCodes() throws WrapperFault
    {
        Iterator types = wscontext.getTypemap().getTypes().iterator();
        HashSet typeSet = new HashSet();
        String typeName;
        Type type;
        try
        {
            while (types.hasNext())
            {
                type = (Type) types.next();
                if (type.isSimpleType())
                {
                    continue;
                }
                if (type.isArray())
                {
                    continue;
                }
                typeName = type.getLanguageSpecificName();
                if (typeName.startsWith(">"))
                {
                    continue;
                }
                typeSet.add(typeName);
View Full Code Here


     * @see org.apache.axis.wsdl.wsdl2ws.SourceWriter#writeSource()
     */
    public void writeSource() throws WrapperFault
    {
        Iterator enu = wscontext.getTypemap().getTypes().iterator();
        Type type = null;
        while (enu.hasNext())
        {
            try
            {
                type = (Type) enu.next();
                if (wscontext
                    .getWrapInfo()
                    .getImplStyle()
                    .equals(WrapperConstants.IMPL_STYLE_STRUCT))
                {
                    if (type.isArray())
                    {
                        if (WSDL2Ws.verbose)
                        {
                            System.out.println("Array writer called ......");
                        }
                        QName qname = type.getName();
                        if (CUtils.isSimpleType(qname)
                            && !CUtils.isDefinedSimpleType(qname))
                        {
                            throw new WrapperFault(
                                "No need to create an Array for simple type "
                                    + qname
                                    + "\n"
                                    + "It seems that some thing wrong with symbolTable population - Susantha");
                        }
                        ArrayParamWriter writer =
                            (new ArrayParamWriter(wscontext, type));
                        if (!writer.isSimpleTypeArray())
                        {
                            writer.writeSource();
                        }
                        else
                        {
                            // FJP If the object is a simple type array, then there is no need to create a
                            //     header file for it.  Unfortunately, a header file has already be
                            //     declared in the base class so when the project is built, the compiler
                            //     will complain because the <name>.h file will not be found.  There are
                            //     at least three solutions this problem:-
                            //     1. Rewrite the application to only create the class once all of the
                            //        associated objects have been resolved.
                            //     2. Go back and modify the class to remove the #include lines that
                            //        contain the unnecessary types.
                            //     3. Add empty files with the same filenames as the expected includes so
                            //        that the compiler will not complain.
                            if (qname.getLocalPart().indexOf(">") == -1)
                            {
                                System.out.println(
                                    "Creating an empty "
                                        + qname.getLocalPart()
                                        + CUtils.CPP_HEADER_SUFFIX
                                        + " file\n");

                                BufferedWriter bw = null;

                                try
                                {
                                    bw =
                                        new BufferedWriter(
                                            new FileWriter(
                                                getFilePath(
                                                    qname.getLocalPart()),
                                                false));
                                    bw.write(
                                        "// Header file for "
                                            + qname.getLocalPart()
                                            + CUtils.CPP_HEADER_SUFFIX
                                            + "\n");
                                    bw.flush();
                                    bw.close();
                                }
                                catch (IOException e)
                                {
                                    e.printStackTrace();
                                    throw new WrapperFault(e);
                                }
                            }
                        }
                    }
                    else
                    {
                        /* TODO check whether this type is referenced or not. Synthesize only if  reference
                         * But of cause that depends on the commandline option too  */
                        if (type.getLanguageSpecificName().startsWith(">"))
                        {
                            /* TODO do some processing to this type before synthesizing to remove ">" charactors.
                             * And then it should also be synthesized if commandline option says to */
                            System.out.println(
                                "ignoring anonymous type "
                                    + type.getLanguageSpecificName()
                                    + "\n");
                        }
                        else
                        {
                            if (WSDL2Ws.verbose)
                            {
                                System.out.println(
                                    "struct writer called ......");
                            }
                            (new BeanParamWriter(wscontext, type))
                                .writeSource();
                            (new ParmHeaderFileWriter(wscontext, type))
                                .writeSource();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                System.out.println(
                    "Error occured generating code for "
                        + type.getLanguageSpecificName()
                        + ". Yet we continue to genarate other classes ... You should check the error");
                e.printStackTrace();
            }
        }
    }
View Full Code Here

                isAllTreatedAsOutParams = true;
            }
        }
        Collection params = minfo.getInputParameterTypes();
        String methodName = minfo.getMethodname();
        Type retType = null;
        boolean returntypeissimple = false;
        boolean returntypeisarray = false;
        String outparamType = null;
        if (returntype != null)
        {
            retType =
                wscontext.getTypemap().getType(returntype.getSchemaName());
        }
        if (retType != null)
        {
            if (retType.isSimpleType())
            {
                outparamType = CUtils.getclass4qname(retType.getBaseType());
            }
            else
            {
                outparamType = retType.getLanguageSpecificName();
            }
            returntypeisarray = retType.isArray();
        }
        else
        {

            if (returntype != null)
            {
                outparamType = returntype.getLangName();
            }
        }
        if (returntype != null)
        {
            returntypeissimple = CUtils.isSimpleType(outparamType);
        }
        writer.write("\n/*\n");
        writer.write(
            " * This method wrap the service method" + methodName + "\n");
        writer.write(" */\n");
        //method signature
        String paraTypeName;
        boolean typeisarray = false;
        boolean typeissimple = false;
        Type type;
        if (returntype == null)
        {
            writer.write("void");
        }
        else
        {
            if (returntypeissimple || returntypeisarray)
            {
                writer.write(outparamType);
            }
            else
            { //for AnyType too
                writer.write(outparamType + "*");
            }
        }
        writer.write(" " + classname + "::" + methodName + "(");
        ArrayList paramsB = (ArrayList) params;
        if (0 < paramsB.size())
        {
            type =
                wscontext.getTypemap().getType(
                    ((ParameterInfo) paramsB.get(0)).getSchemaName());
            if (type != null)
            {
                if (type.isSimpleType())
                { //schema defined simpleType
                    paraTypeName = CUtils.getclass4qname(type.getBaseType());
                }
                else
                {
                    paraTypeName = type.getLanguageSpecificName();
                }
                typeisarray = type.isArray();
            }
            else
            {
                paraTypeName = ((ParameterInfo) paramsB.get(0)).getLangName();
                typeisarray = false;
            }
            typeissimple = CUtils.isSimpleType(paraTypeName);
            if (typeisarray || typeissimple)
            {
                writer.write(paraTypeName + " Value0");
            }
            else
            { //for AnyType too
                writer.write(paraTypeName + "* Value0");
            }
            for (int i = 1; i < paramsB.size(); i++)
            {
                type =
                    wscontext.getTypemap().getType(
                        ((ParameterInfo) paramsB.get(i)).getSchemaName());
                if (type != null)
                {
                    if (type.isSimpleType())
                    { //schema defined simpleType
                        paraTypeName =
                            CUtils.getclass4qname(type.getBaseType());
                    }
                    else
                    {
                        paraTypeName = type.getLanguageSpecificName();
                    }
                    typeisarray = type.isArray();
                }
                else
                {
                    paraTypeName =
                        ((ParameterInfo) paramsB.get(i)).getLangName();
                    typeisarray = false;
                }
                typeissimple = CUtils.isSimpleType(paraTypeName);
                if (typeisarray || typeissimple)
                {
                    writer.write(", " + paraTypeName + " Value" + i);
                }
                else
                { //for AnyType too
                    writer.write(", " + paraTypeName + "* Value" + i);
                }
            }
        }

        // Multiples parameters so fill the methods prototype
        ArrayList paramsC = (ArrayList) minfo.getOutputParameterTypes();
        if (isAllTreatedAsOutParams)
        {
            for (int i = 0; i < paramsC.size(); i++)
            {
                type =
                    wscontext.getTypemap().getType(
                        ((ParameterInfo) paramsC.get(i)).getSchemaName());
                writer.write(
                    ", AXIS_OUT_PARAM  "
                        + WrapperUtils
                            .getClassNameFromParamInfoConsideringArrays(
                            (ParameterInfo) paramsC.get(i),
                            wscontext)
                        + "* OutValue"
                        + i);
            }
        }

        writer.write(")\n{\n");
        if (returntype != null)
        {
            writer.write("\t");
            if (returntypeisarray)
            {
                //for arrays
                writer.write(outparamType + " RetArray = {NULL, 0};\n");
            }
            else
            {

                if (!returntypeissimple)
                { //for AnyType too
                    writer.write(outparamType + "* pReturn = NULL;\n");
                    //for complex types
                }
                else
                {
                    //for simple types
                    String initValue = CUtils.getInitValue(outparamType);
                    if (initValue != null)
                    {
                        writer.write(
                            outparamType + " Ret = " + initValue + ";\n");
                    }
                    else
                    {

                        if (outparamType.equals("xsd__base64Binary")
                            || outparamType.equals("xsd__hexBinary"))
                        {
                            writer.write(outparamType + " Ret;\n");
                            writer.write("\tRet.__ptr = NULL;\n");
                            writer.write("\tRet.__size = 0;\n");
                        }
                        else
                        {
                            writer.write(outparamType + " Ret;\n");
                        }
                    }
                }
                //TODO initialize return parameter appropriately.
            }
        }
        writer.write("\tconst char* pcCmplxFaultName;\n");
        writer.write("\ttry\n\t{");

        writer.write(
            "\tif (AXIS_SUCCESS != m_pCall->initialize(CPP_DOC_PROVIDER"
                + ")) return ");
        if (returntype != null)
        {
            writer.write(
                (returntypeisarray
                    ? "RetArray"
                    : returntypeissimple
                    ? "Ret"
                    : "pReturn")
                    + ";\n\t");
        }
        else
        {
            writer.write(";\n");
        }
        writer.write(
            "\tm_pCall->setTransportProperty(SOAPACTION_HEADER , \""
                + minfo.getSoapAction()
                + "\");\n");
        writer.write("\tm_pCall->setSOAPVersion(SOAP_VER_1_1);\n");
        //TODO check which version is it really.
        writer.write(
            "\tm_pCall->setOperation(\""
                + minfo.getInputMessage().getLocalPart()
                + "\", \""
                + minfo.getInputMessage().getNamespaceURI()
                + "\");\n");

        // Add attributes to soap method
        for (int i = 0; i < paramsB.size(); i++)
        {
            ParameterInfo param = (ParameterInfo) paramsB.get(i);
            if (param.isAttribute())
            {
                String elementType = param.getElementName().getLocalPart();

                if ("string".equals(elementType))
                {
                    writer.write(
                        "\tsetSOAPMethodAttribute(\""
                            + param.getParamName()
                            + "\", \"\", Value"
                            + i
                            + ");\n");
                }
                else
                {
                    if ("int".equals(elementType))
                    {
                        writer.write("\t{\n");
                        writer.write("\t\tchar buffer[20];\n");
                        writer.write(
                            "\t\tsprintf(buffer,\"%d\", Value" + i + ");\n");
                        writer.write(
                            "\t\tsetSOAPMethodAttribute(\""
                                + param.getParamName()
                                + "\", \"\", buffer);\n");
                        writer.write("\t}\n");
                    }
                }
            }
        }

        //new calls from stub base
        writer.write("\tincludeSecure();\n"); // FJP - SecureChannel
        writer.write("\tapplyUserPreferences();\n");

        for (int i = 0; i < paramsB.size(); i++)
        {
            ParameterInfo param = (ParameterInfo) paramsB.get(i);

            // Ignore attributes, while adding elements
            if (!param.isAttribute())
            {
                type = wscontext.getTypemap().getType(param.getSchemaName());
                if (type != null)
                {
                    if (type.isSimpleType())
                    { //schema defined simpleType possibly with restrictions
                        paraTypeName =
                            CUtils.getclass4qname(type.getBaseType());
                    }
                    else
                    {
                        paraTypeName = type.getLanguageSpecificName();
                    }
                    typeisarray = type.isArray();
                }
                else
                {
                    paraTypeName =
                        ((ParameterInfo) paramsB.get(i)).getLangName();
                    typeisarray = false;
                }

                if (param.isAnyType())
                {
                    //for anyType
                    writer.write("\tm_pCall->addAnyObject(Value" + i);
                }
                else
                {
                    //String parameterName = ((ParameterInfo)paramsB.get(i)).getElementName().getLocalPart();
                    //Samisa 22/08/2004
                    String parameterName =
                        ((ParameterInfo) paramsB.get(i))
                            .getElementNameAsString();
                    //Samisa
                    String namespace =
                        ((ParameterInfo) paramsB.get(i))
                            .getElementName()
                            .getNamespaceURI();

          if (namespace.length() == 0)
          {
            writer.write(
              "\tchar cPrefixAndParamName"
                + i
                + "["
                + "] = \""
                + parameterName
                + "\";\n");
          }
          else
          {
            int stringLength = 8 + 1 + parameterName.length() + 1;
            writer.write(
              "\tchar cPrefixAndParamName"
              + i
              + "["
              + stringLength
              + "];\n");
            writer.write(
              "\tsprintf( cPrefixAndParamName"
                + i
                + ", \"%s:"
                + parameterName
                + "\", getNamespacePrefix(\""
                + namespace
                + "\"));\n");
          }

                    if (typeisarray)
                    {
                        // Array
                        Type arrayType = WrapperUtils.getArrayType(type);
                        QName qname = arrayType.getName();
                        if (CUtils.isSimpleType(qname))
                        {
                            // Array of simple type
                            String containedType = CUtils.getclass4qname(qname);
                            writer.write("\tm_pCall->addBasicArrayParameter(");
                            writer.write(
                                "(Axis_Array*)(&Value"
                                    + i
                                    + "), "
                                    + CUtils.getXSDTypeForBasicType(
                                        containedType)
                                    + ", cPrefixAndParamName"
                                    + i);
                        }
                        else
                        {
                            if (arrayType.isSimpleType())
                            {
                                // Simple type in the schema
                                String containedType =
                                    CUtils.getclass4qname(
                                        arrayType.getBaseType());
                                writer.write(
                                    "\tm_pCall->addBasicArrayParameter(");
                                writer.write(
                                    "(Axis_Array*)(&Value"
                                        + i
                                        + "), "
                                        + CUtils.getXSDTypeForBasicType(
                                            containedType)
                                        + ", cPrefixAndParamName"
                                        + i);
                            }
                            else
                            {
                                // Array of complex type
                                String containedType = qname.getLocalPart();
                                writer.write(
                                    "\tm_pCall->addCmplxArrayParameter(");
                                writer.write(
                                    "(Axis_Array*)(&Value"
                                        + i
                                        + "), (void*)Axis_Serialize_"
                                        + containedType
                                        + ", (void*)Axis_Delete_"
                                        + containedType
                                        + ", (void*) Axis_GetSize_"
                                        + containedType
                                        + ", \""
                                        + parameterName
                                        + "\""
                                        + ", Axis_URI_"
                                        + containedType);
                            }
                        }
                    }
                    else
                    {
                        if (CUtils.isSimpleType(paraTypeName))
                        {
                            // Simple Type
                            writer.write("\tm_pCall->addParameter(");
                            writer.write(
                                "(void*)&Value"
                                    + i
                                    + ", cPrefixAndParamName"
                                    + i
                                    + ", "
                                    + CUtils.getXSDTypeForBasicType(
                                        paraTypeName));
                        }
                        else
                        {
                            // Complex Type
                            writer.write("\tm_pCall->addCmplxParameter(");
                            writer.write(
                                "Value"
                                    + i
                                    + ", (void*)Axis_Serialize_"
                                    + paraTypeName
                                    + ", (void*)Axis_Delete_"
                                    + paraTypeName
                                    + ", cPrefixAndParamName"
                                    + i
                                    + ", Axis_URI_"
                                    + paraTypeName);
                        }
                    }
                }
                // Adrian - end of namespace correction
                writer.write(");\n");
            }
        }
        writer.write("\tif (AXIS_SUCCESS == m_pCall->invoke())\n\t{\n");
        if (minfo.getOutputMessage() != null)
        {
            writer.write(
                "\t\tif(AXIS_SUCCESS == m_pCall->checkMessage(\""
                    + minfo.getOutputMessage().getLocalPart()
                    + "\", \""
                    + minfo.getOutputMessage().getNamespaceURI()
                    + "\"))\n\t\t{\n");
        }
        if (isAllTreatedAsOutParams)
        {
            String currentParamName;
            String currentParaType;
            for (int i = 0; i < paramsC.size(); i++)
            {
                ParameterInfo currentType = (ParameterInfo) paramsC.get(i);
                type =
                    wscontext.getTypemap().getType(currentType.getSchemaName());
                if (type != null)
                {
                    if (type.isSimpleType())
                    {
                        currentParaType =
                            CUtils.getclass4qname(type.getBaseType());
                    }
                    else
                    {
                        currentParaType = type.getLanguageSpecificName();
                    }
                    typeisarray = type.isArray();
                }
                else
                {
                    currentParaType =
                        ((ParameterInfo) paramsC.get(i)).getLangName();
                    typeisarray = false;
                }
                typeissimple = CUtils.isSimpleType(currentParaType);

                currentParamName = "*OutValue" + i;
                // Some code need to be merged as we have some duplicated in coding here.
                if (typeisarray)
                {
                    Type arrayType = WrapperUtils.getArrayType(type);
                    QName qname = arrayType.getName();
                    String containedType = null;
                    if (CUtils.isSimpleType(qname))
                    {
                        containedType = CUtils.getclass4qname(qname);
                        writer.write(
                            "\t\t\t"
                                + currentParamName
                                + " = ("
                                + currentParaType
                                + "&)m_pCall->getBasicArray("
                                + CUtils.getXSDTypeForBasicType(containedType)
                                + ", \""
                                + currentType.getElementName().getLocalPart()
                                + "\", 0);\n");
                    }
                    else
                    {

                        if (arrayType.isSimpleType())
                        { //SimpleType in the schema
                            containedType =
                                CUtils.getclass4qname(arrayType.getBaseType());
                            writer.write(
                                "\t\t\t"
                                    + currentParamName
                                    + " = ("
                                    + currentParaType
View Full Code Here

    protected void writeGlobalCodes() throws WrapperFault
    {
        Iterator types = wscontext.getTypemap().getTypes().iterator();
        HashSet typeSet = new HashSet();
        String typeName;
        Type type;
        try
        {
            while (types.hasNext())
            {
                type = (Type) types.next();
                if (type.isSimpleType())
                {
                    continue;
                }
                if (type.isArray())
                {
                    continue;
                }
                typeName = type.getLanguageSpecificName();
                if (typeName.startsWith(">"))
                {
                    continue;
                }
                typeSet.add(typeName);
View Full Code Here

     * @see org.apache.axis.wsdl.wsdl2ws.SourceWriter#writeSource()
     */
    public void writeSource() throws WrapperFault
    {
        Iterator types = wscontext.getTypemap().getTypes().iterator();
        Type type = null;
        while (types.hasNext())
        {
            try
            {
                type = (Type) types.next();
                if (wscontext
                    .getWrapInfo()
                    .getImplStyle()
                    .equals(WrapperConstants.IMPL_STYLE_STRUCT))
                {
                    if (type.isArray())
                    {
                        if (WSDL2Ws.verbose)
                        {
                            System.out.println("Array writer called ......");
                        }
                        QName qname = type.getName();
                        if (CUtils.isSimpleType(qname)
                            && !CUtils.isDefinedSimpleType(qname))
                        {
                            throw new WrapperFault(
                                "No need to create an Array for simple type "
                                    + qname
                                    + "\n"
                                    + "It seems that some thing wrong with symbolTable population - Susantha");
                        }
                        ArrayParamWriter writer =
                            (new ArrayParamWriter(wscontext, type));
                        if (!writer.isSimpleTypeArray())
                        {
                            writer.writeSource();
                        }
                    }
                    else
                    {
                        /* TODO check whether this type is referenced or not. Synthesize only if  reference
                         * But of cause that depends on the command line option too  */
                        if (type.getLanguageSpecificName().startsWith(">"))
                        {
                            /* TODO do some processing to this type before synthesizing to remove ">" charactors.
                             * And then it should also be synthesized if command line option says to */
                            System.out.println(
                                "ignoring anonymous type "
                                    + type.getLanguageSpecificName()
                                    + "\n");
                        }
                        else
                        {
                            if (WSDL2Ws.verbose)
                            {
                                System.out.println(
                                    "struct writer called ......");
                            }
                            (new BeanParamWriter(wscontext, type))
                                .writeSource();
                            (new ParmHeaderFileWriter(wscontext, type))
                                .writeSource();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                System.out.println(
                    "Error occured generating code for "
                        + type.getLanguageSpecificName()
                        + ". Yet we continue to generate other classes ... You should check the error");
                e.printStackTrace();
            }
        }
    }
View Full Code Here

     */
    protected void writePreprocessorStatements() throws WrapperFault
    {
        try
        {
            Type atype;
            Iterator types = this.wscontext.getTypemap().getTypes().iterator();
            HashSet typeSet = new HashSet();
            writer.write("#include <axis/AxisUserAPI.hpp>\n");
            writer.write("#include \"AxisServiceException.hpp\" \n\n");
            while (types.hasNext())
            {
                atype = (Type) types.next();
                if (atype.getLanguageSpecificName().startsWith(">"))
                {
                    continue;
                }
                typeSet.add(atype.getLanguageSpecificName());
            }
            Iterator itr = typeSet.iterator();
            while (itr.hasNext())
            {
                writer.write(
View Full Code Here

        ArrayList methods = new ArrayList();
        MethodInfo minfo;
    Element element;
    QName qname;
        ParameterInfo pinfo;
    Type type;
        org.apache.axis.wsdl.symbolTable.Type ptype;
        //for each operation
        while (oplist.hasNext()) {
            minfo = new MethodInfo();
            methods.add(minfo);
            //add operation to operation List
            Operation op = (Operation) oplist.next();
            minfo.setMethodname(op.getName());
            System.out.println(op.getName()+"operation name .......................&&&&&&&&&&&");
            //setting the faults
            Map faults = op.getFaults();
      addFaultInfo(faults,minfo);
           
           
           
            Iterator paramlist = null;
            //add each parameter to parameter list
            if ("document".equals(bindingEntry.getBindingStyle().getName())){
        paramlist = op.getInput().getMessage().getParts().values().iterator();
        Part part = (Part) paramlist.next();
        QName minfoqname;
        element = symbolTable.getElement(part.getElementName());
        if ( element == null ) {
          // the part reference a type.
          qname =  symbolTable.getType(part.getTypeName()).getQName();
          minfoqname = symbolTable.getType(part.getTypeName()).getQName();
        }
        else {
          qname = element.getRefType().getQName();
          minfoqname = element.getQName();
        }
        if (qname != null){
          minfo.setInputMessage(minfoqname);
          System.out.println(minfoqname.getLocalPart()+"setInputMessage.............?????????????");
          type = this.typeMap.getType(qname);
          boolean wrapped = true; //TODO take this from a commandline argument
          if (wrapped){
            if(type == null)
               throw new WrapperFault("unregisterd type "+qname+" refered");
            else{
              /* if(type.getLanguageSpecificName().startsWith(">")){*/ //anyway skip the wrapping element type even if it is a named type.
              //get inner attributes and elements and add them as parameters
              ArrayList elementlist = new ArrayList();
              Iterator names = type.getElementnames();
              while (names.hasNext()){
                elementlist.add(names.next());
              }
              Type innerType;
              for (int i = 0 ; i < elementlist.size(); i++) {
                String elementname = (String)elementlist.get(i);
                innerType = type.getElementForElementName(elementname).getType();
                pinfo = new ParameterInfo(innerType,elementname);
                pinfo.setElementName(type.getElementForElementName(elementname).getName());
                if (innerType.getName().equals(CUtils.anyTypeQname))
                  pinfo.setAnyType(true);
                minfo.addInputParameter(pinfo);   
              }
              //remove the type that represents the wrapping element so that such type is not created.
              this.typeMap.removeType(qname);
            }
          }
          else{
           
          }
        }
        }
          else{
        minfo.setInputMessage(op.getInput().getMessage().getQName());
             if (op.getParameterOrdering() != null){
               for (int ix=0; ix < op.getParameterOrdering().size(); ix++){
            Part p = (Part)(op.getInput().getMessage().getParts().get((String)op.getParameterOrdering().get(ix)));
            if (p == null) continue;
            pinfo = createParameterInfo(p);
            if (null != pinfo) minfo.addInputParameter(pinfo);
               }
             }
             else {
          paramlist = op.getInput().getMessage().getParts().values().iterator();
          while (paramlist.hasNext()) { //RPC style messages can have multiple parts
            Part p = (Part) paramlist.next();
            pinfo = createParameterInfo(p);
            if (null != pinfo) minfo.addInputParameter(pinfo);
          }              
             }
           }
            //get the return type
      if(op.getOutput()!=null){
              Iterator returnlist = op.getOutput().getMessage().getParts().values().iterator();
        if (returnlist.hasNext() && "document".equals(bindingEntry.getBindingStyle().getName())){
          Part part = (Part) returnlist.next();
          QName minfoqname;
          element = symbolTable.getElement(part.getElementName());
          if ( element == null ) {
            // the part reference a type.
            qname =  symbolTable.getType(part.getTypeName()).getQName();
            minfoqname = symbolTable.getType(part.getTypeName()).getQName();
          }
          else {
            qname = element.getRefType().getQName();
            minfoqname = element.getQName();
          }
          if (qname != null){
            minfo.setOutputMessage(minfoqname);
            type = this.typeMap.getType(qname);       
            boolean wrapped = true; //TODO take this from a commandline argument
            if (wrapped){
              if(type == null)
                 throw new WrapperFault("unregisterd type "+qname+" refered");
              else{
                /*if(type.getLanguageSpecificName().startsWith(">")){*///anyway skip the wrapping element type even if it is a named type.
                //get inner attributes and elements and add them as parameters
                ArrayList elementlist = new ArrayList();
                Iterator names = type.getElementnames();
                while (names.hasNext()){
                  elementlist.add(names.next());
                }
                Type innerType;
                for (int i = 0 ; i < elementlist.size(); i++) {
                  String elementname = (String)elementlist.get(i);
                  innerType = type.getElementForElementName(elementname).getType();
                  pinfo = new ParameterInfo(innerType,elementname);
                  pinfo.setElementName(type.getElementForElementName(elementname).getName());
                  if (innerType.getName().equals(CUtils.anyTypeQname))
                    pinfo.setAnyType(true);
                  minfo.addOutputParameter(pinfo);   
                }             
                //remove the type that represents the wrapping element so that such type is not created.             
                this.typeMap.removeType(qname);
View Full Code Here

     */
    private TypeMap getTypeInfo(String targetLanguage)throws WrapperFault {
        Iterator it = symbolTable.getTypeIndex().values().iterator();
        TypeEntry type;
        Iterator elements;
        Type typedata;

        boolean hasElements;
        while (it.hasNext()) {
            type = (TypeEntry) it.next();
            Node node = type.getNode();
View Full Code Here

      if (type.getRefType() != null){
        return createTypeInfo(type.getRefType(), targetLanguage);
      }
      return null;
    }
    Type typedata = typeMap.getType(type.getQName());   
    if(typedata!= null){
      //type is a inbild type or a already created type
      return typedata; 
    }
    System.out.println("############## the type found =" + type.getQName());
    if (-1 != type.getQName().getLocalPart().indexOf('[')) {/* it seems that this is an array */
      if (null == type.getRefType())throw new WrapperFault("Array type found without a Ref type");
      QName qn = type.getRefType().getQName();
      if (null == qn)throw new WrapperFault("Array type found without a Ref type");
      if (CUtils.isBasicType(qn)) return null;
      QName newqn = new QName(type.getQName().getNamespaceURI(), qn.getLocalPart()+"_Array");
      typedata = new Type(newqn, newqn.getLocalPart(), true, targetLanguage);
      typeMap.addType(newqn, typedata);
    }else {
      typedata = new Type(type.getQName(), type.getQName().getLocalPart(), true, targetLanguage);
      typeMap.addType(type.getQName(), typedata);
    }
     
    Node node = type.getNode();

    Vector restrictdata = null;
    if(type.isSimpleType()){
      restrictdata = CUtils.getRestrictionBaseAndValues(node,symbolTable);
      if(restrictdata != null)
        typedata.setRestrictiondata(restrictdata);
    }else if(type instanceof CollectionType){
      typedata.setTypeNameForElementName(new ElementInfo(type.getQName(),
          createTypeInfo(type.getRefType().getQName(),targetLanguage)));
      typedata.setArray(true);
    }else{
      //is this a SOAPEnc array type 
      QName arrayType =
        SchemaUtils.getArrayComponentQName(node, new IntHolder(0));
      if (arrayType != null) {
        typedata.setTypeNameForElementName(new ElementInfo(new QName("item"),
            createTypeInfo(arrayType,targetLanguage)));
        typedata.setArray(true);
      } else if (
        (arrayType = SchemaUtils.getCollectionComponentQName(node))
          != null) {
        typedata.setTypeNameForElementName(new ElementInfo(new QName("item"),
            createTypeInfo(arrayType,targetLanguage)));
        typedata.setArray(true);
      }
      //Note in a array the parameter type is stored as under the name item all the time 
      else {
        // get all extended types
        Vector extendList = new Vector();
        extendList.add(type);
        TypeEntry parent = SchemaUtils.getComplexElementExtensionBase(
                            type.getNode(),symbolTable);
        while(parent != null) {
          extendList.add(parent);
          parent = SchemaUtils.getComplexElementExtensionBase(
                        parent.getNode(),symbolTable);
        }
   
        // Now generate a list of names and types starting with
        // the oldest parent.  (Attrs are considered before elements).
        for (int i=extendList.size()-1; i >= 0; i--) {
          TypeEntry te = (TypeEntry) extendList.elementAt(i);
   
         
          //TODO the code require the attributes name at extension base types
          //different, the WSDL2Ws do not support it having same name at up and below.
         
          // The names of the inherited parms are mangled
          // in case they interfere with local parms.
          String mangle = "";
          //if (i > 0) {
          //  mangle = "_" +
          //    Utils.xmlNameToJava(te.getQName().getLocalPart()) +
          //    "_";
          //}
         
          // Process the attributes
          Vector attributes = SchemaUtils.getContainedAttributeTypes(
            te.getNode(), symbolTable);
          if (attributes != null) {
            for (int j=0; j<attributes.size(); j+=2) {
              typedata.setTypeForAttributeName(
                ((QName)attributes.get(j + 1)).getLocalPart(),
              createTypeInfo(((TypeEntry) attributes.get(j)).getQName(),targetLanguage));
            }
          }
          // Process the elements
          Vector elements = SchemaUtils.getContainedElementDeclarations(
                      te.getNode(), symbolTable);
          if (elements != null) {
            for (int j=0; j<elements.size(); j++) {
              ElementInfo eleinfo = null;
              ElementDecl elem = (ElementDecl)elements.get(j);
              if (elem.getAnyElement()){
                System.out.println("Any Type found inside "+ type.getQName().toString());
                Type anyType = new Type(CUtils.anyTypeQname, CUtils.anyTypeQname.getLocalPart(), true, targetLanguage);
                eleinfo = new ElementInfo(elem.getName(),anyType);             
              }
              else{
                QName typeName = elem.getType().getQName();
                if(typeName.getLocalPart().indexOf('[')>0){
View Full Code Here

    if(qname == null){
      Element element = symbolTable.getElement(part.getElementName());
      qname = element.getRefType().getQName();
    }
    TypeEntry tentry = symbolTable.getType(qname);   
    Type type = this.typeMap.getType(qname);
    if(type == null)
      throw new WrapperFault("unregisterd type "+qname+" refered");
    ParameterInfo parainfo =
      new ParameterInfo(type,part.getName());
    parainfo.setElementName(part.getElementName());   
View Full Code Here

TOP

Related Classes of org.apache.axis.wsdl.wsdl2ws.info.Type

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.