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

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


        writer.write(minfo.getMethodname()+"(");
           
        //write parameter names
        Iterator params = minfo.getParameterTypes().iterator();
        if(params.hasNext()){
            ParameterInfo fparam = (ParameterInfo)params.next();
          isSimpleType = CUtils.isSimpleType(fparam.getLangName());
          writer.write(WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
        }
        for(int j =1; params.hasNext();j++){
          ParameterInfo nparam = (ParameterInfo)params.next();
          isSimpleType = CUtils.isSimpleType(nparam.getLangName());
          writer.write(","+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
        }
        writer.write(");\n");
      }
    }catch (Exception e) {
View Full Code Here


        writer.write(" "+classname+"::"+minfo.getMethodname()+"(");
        //write parameter names
      //write parameter names
      Iterator params = minfo.getParameterTypes().iterator();
      if(params.hasNext()){
        ParameterInfo fparam = (ParameterInfo)params.next();
        writer.write(WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
      }
      for(int j =1; params.hasNext();j++){
        ParameterInfo nparam = (ParameterInfo)params.next();
        writer.write(", "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
      }
      writer.write(")\n{\n}\n");
      }
    }catch (Exception e) {
View Full Code Here

        writer.write(minfo.getMethodname()+"(");
           
        //write parameter names
        Iterator params = minfo.getParameterTypes().iterator();
        if(params.hasNext()){
            ParameterInfo fparam = (ParameterInfo)params.next();
          isSimpleType = CPPUtils.isSimpleType(fparam.getLangName());
          writer.write(WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
        }
        for(int j =1; params.hasNext();j++){
          ParameterInfo nparam = (ParameterInfo)params.next();
          isSimpleType = CPPUtils.isSimpleType(nparam.getLangName());
          writer.write(","+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
        }
        writer.write(");\n");
      }
    }catch (Exception e) {
View Full Code Here

   * @throws IOException
   */

  public void writeMethodInWrapper(MethodInfo minfo) throws WrapperFault,IOException {
    boolean isAllTreatedAsOutParams = false;
    ParameterInfo returntype = null;
    int noOfOutParams = minfo.getOutputParameterTypes().size();
    if (0==noOfOutParams){
      returntype = null;
    }
    else if (1==noOfOutParams){
      returntype = (ParameterInfo)minfo.getOutputParameterTypes().iterator().next();
    }
    else{
      isAllTreatedAsOutParams = true;
    }
    Collection params = minfo.getInputParameterTypes();
    String methodName = minfo.getMethodname();
    Type retType = null;
    String outparamType = null;   
    String outparamTypeName = null;
    boolean returntypeissimple = false;
    boolean returntypeisarray = false;
    boolean aretherearrayparams = false;
    if (returntype != null){
      outparamTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype, wscontext);
      retType = wscontext.getTypemap().getType(returntype.getSchemaName());
      if (retType != null){
        returntypeisarray = retType.isArray();
        if (CUtils.isSimpleType(retType.getLanguageSpecificName())){
          returntypeissimple = true;
        }
      }
    }
    String paramTypeName;
    String returnParamName;
    ArrayList paramsB = new ArrayList(params);
    Type type;

    writer.write("\n/*forward declaration for the c method "+methodName+" */\n");
    if (returntype == null){
      writer.write("extern void "+methodName+"(");
    }
    else{
      writer.write("extern "+outparamTypeName+" "+methodName+"(");
    }

    for (int i = 0; i < paramsB.size(); i++) {
      if (i>0) writer.write(",");
      paramTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsB.get(i), wscontext);
      writer.write(paramTypeName);
      if((type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
        aretherearrayparams = true;
      }
    }
    if ( isAllTreatedAsOutParams ) {
      ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
      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)+"*");
      }
    }
    writer.write(");\n");
    writer.write("\n/*\n");
    writer.write(" * This method wrap the service method \n");
    writer.write(" */\n");
    //method signature
    writer.write("int "+ methodName + CUtils.WRAPPER_METHOD_APPENDER+ "(IWrapperSoapDeSerializer DZ, IWrapperSoapSerializer SZ)\n{\n");
    writer.write("\tint nStatus;\n");
    for (int i = 0; i < paramsB.size(); i++) {
      paramTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsB.get(i), wscontext);
        writer.write("\t"+paramTypeName+" v"+i+";\n");
    }
    if(returntype != null){
      writer.write("\t"+outparamTypeName+ " ret;\n");
    }
    if (aretherearrayparams){
      writer.write("\tAxis_Array array;\n");
    }
    // Multiples parameters so fill the methods prototype
    if ( isAllTreatedAsOutParams ) {
      ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
      for (int i = 0; i < paramsC.size(); i++) {
        type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
        writer.write("\t"+WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsC.get(i),wscontext)+" out"+i+";\n");
      }
    } 
    writer.write("\tif (AXIS_SUCCESS != DZ._functions->checkMessageBody(DZ._object, \""+methodName+"\", \""+wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()+"\")) return AXIS_FAIL;\n");
    writer.write("\tSZ._functions->createSoapMethod(SZ._object, \""+methodName+"Response\", \""+wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()+"\");\n");
    //create and populate variables for each parameter
    for (int i = 0; i < paramsB.size(); i++) {
      paramTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
      if((CUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
        //for simple types 
        writer.write("\tv"+i+" = DZ._functions->"+CUtils.getParameterGetValueMethodName(paramTypeName, false)+"(DZ._object, 0, 0);\n");
      }else if((type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
        QName qname = WrapperUtils.getArrayType(type).getName();
        String containedType = null;
        if (CUtils.isSimpleType(qname)){
          containedType = CUtils.getclass4qname(qname);
          writer.write("\tarray = DZ._functions->getBasicArray(DZ._object, "+CUtils.getXSDTypeForBasicType(containedType)+", 0, 0);\n");
          writer.write("\tmemcpy(&v"+i+", &array, sizeof(Axis_Array));\n");
        }
        else{
          containedType = qname.getLocalPart();
          writer.write("\tarray = DZ._functions->getCmplxArray(DZ._object, (void*)Axis_DeSerialize_"+containedType+
            "\n\t\t, (void*)Axis_Create_"+containedType+", (void*)Axis_Delete_"+containedType+
            "\n\t\t, (void*)Axis_GetSize_"+containedType+", Axis_TypeName_"+containedType+", Axis_URI_"+containedType+");\n");
          writer.write("\tmemcpy(&v"+i+", &array, sizeof(Axis_Array));\n");
        }
      }else{
        //for complex types
        writer.write("\tv"+i+" = ("+paramTypeName+"*)DZ._functions->getCmplxObject(DZ._object, (void*)Axis_DeSerialize_"+paramTypeName+
          "\n\t\t, (void*)Axis_Create_"+paramTypeName+", (void*)Axis_Delete_"+paramTypeName+
          "\n\t\t, Axis_TypeName_"+paramTypeName+", Axis_URI_"+paramTypeName+");\n");
      }
    }
    writer.write("\tif (AXIS_SUCCESS != (nStatus = DZ._functions->getStatus(DZ._object))) return nStatus;\n");   
    if(returntype != null){
      /* Invoke the service when return type not void */
      writer.write("\tret = "+methodName+"(");
      if (0<paramsB.size()){
        for (int i = 0; i <  paramsB.size() - 1; i++) {
          writer.write("v" + i + ",");
        }
        writer.write("v" + ( paramsB.size() - 1));
      }
      writer.write(");\n");
      /* set the result */
      if (returntypeissimple){
        writer.write("\treturn SZ._functions->addOutputParam(SZ._object, \""+methodName+"Return\", (void*)&ret, "+CUtils.getXSDTypeForBasicType(outparamTypeName)+");\n");
      }else if(returntypeisarray){
        QName qname = WrapperUtils.getArrayType(retType).getName();
        String containedType = null;
        if (CUtils.isSimpleType(qname)){
          containedType = CUtils.getclass4qname(qname);
          writer.write("\treturn SZ._functions->addOutputBasicArrayParam(SZ._object, (Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+methodName+"Return\");\n");
        }
        else{
          containedType = qname.getLocalPart();
          writer.write("\treturn SZ._functions->addOutputCmplxArrayParam(SZ._object, (Axis_Array*)(&ret),"+
          "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+methodName+"Return\", Axis_URI_"+containedType+");\n");
        }
      }
      else{
        //complex type
        outparamTypeName = returntype.getLangName();//need to have complex type name without *
        writer.write("\treturn SZ._functions->addOutputCmplxParam(SZ._object, ret, (void*)Axis_Serialize_"+outparamTypeName+", (void*)Axis_Delete_"+outparamTypeName+", \""+methodName+"Return\", Axis_URI_"+outparamTypeName+");\n");
      }
    }else if (isAllTreatedAsOutParams){
      writer.write("\t" + methodName + "(");
      if (0<paramsB.size()){
        for (int i = 0; i <  paramsB.size(); i++) {
          writer.write("v" + i + ",");
        }
      }
      ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
      for (int i = 0; i < paramsC.size()-1; i++) {
        writer.write("&out" + i +",");
      }
      writer.write("&out" + ( paramsC.size()-1));
      writer.write(");\n");
      paramsC = (ArrayList)minfo.getOutputParameterTypes();
      for (int i = 0; i < paramsC.size(); i++) {
        retType = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
        if (retType != null){
          outparamType = retType.getLanguageSpecificName();
          returntypeisarray = retType.isArray();
        }
        else{
          outparamType = returntype.getLangName();
        }
        returntypeissimple = CUtils.isSimpleType(outparamType);
        returnParamName = ((ParameterInfo)paramsC.get(i)).getParamName();
        if (returntypeissimple){
          writer.write("\tSZ._functions->addOutputParam(SZ._object, \""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
View Full Code Here

        Iterator oplist = porttype.getOperations().iterator();
        ArrayList methods = new ArrayList();
        MethodInfo minfo;
    Element element;
    QName qname;
        ParameterInfo pinfo;
    ElementInfo eleinfo;
    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());
           
            //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);
         
          type = this.typeMap.getType(qname);
          //boolean wrapped = true; //TODO take this from a commandline argument
          //boolean wrapped = false; //just for testing the non-wrapped style wsdl
          boolean wrapped = wsdlWrappingStyle;

          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);
                eleinfo = type.getElementForElementName(elementname);
                innerType = eleinfo.getType();
                pinfo = new ParameterInfo(innerType,elementname);
                if (eleinfo.getMaxOccurs() > 1){
                  pinfo.setArray(true);                 
                }
                pinfo.setElementName(type.getElementForElementName(elementname).getName());
                if (innerType.getName().equals(CUtils.anyTypeQname))
                  pinfo.setAnyType(true);
                minfo.addInputParameter(pinfo);   
              }

              ArrayList attributeList = new ArrayList();
              names = type.getAttributeNames();
              while (names.hasNext()){
                attributeList.add(names.next());
              }
              for (int i = 0; i < attributeList.size();i++){
                String attributeName = (String) attributeList.get(i);
                innerType = type.getTypForAttribName(attributeName);
                pinfo= new ParameterInfo(innerType, attributeName);
                pinfo.setElementName(type.getTypForAttribName(attributeName).getName());
                pinfo.setAttribute(true);
                minfo.addInputParameter(pinfo);
              }
              //remove the type that represents the wrapping element so that such type is not created.
              //following is commented for the moment because the same element can be refered by more
              //than one message. Also this complex type may be used as a type while it is the wrapping
              //element here
              //this.typeMap.removeType(qname);
            }
          }
          else{ // for non-wrapped style wsdl's
            if(type == null)
               throw new WrapperFault("unregisterd type "+qname+" refered");
            else{
              // String elementName = (String)type.getName().toString();
              String elementName = (String)element.getQName().getLocalPart();
              pinfo = new ParameterInfo(type,elementName);
              pinfo.setElementName(type.getName());
              if (type.getName().equals(CUtils.anyTypeQname))
                pinfo.setAnyType(true);
              minfo.addInputParameter(pinfo);
            }
          }
        }
        }
          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
            boolean wrapped = wsdlWrappingStyle;
            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);
                  eleinfo = type.getElementForElementName(elementname);
                  innerType = eleinfo.getType();
                  pinfo = new ParameterInfo(innerType,elementname);
                  if (eleinfo.getMaxOccurs() > 1){
                    pinfo.setArray(true);                 
                  }
                  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.             
                //following is commented for the moment because the same element can be refered by more
                //than one message. Also this complex type may be used as a type while it is the wrapping
                //element here
                //this.typeMap.removeType(qname);
              }
            }
            else{ // for non-wrapped style wsdl's
              if(type == null)
                 throw new WrapperFault("unregisterd type "+qname+" refered");
              else{
                // String elementName = (String)type.getName().toString();
                String elementName = (String)element.getQName().getLocalPart();
                symbolTable.dump ( System.out);
                pinfo = new ParameterInfo(type,elementName);
                pinfo.setElementName(type.getName());
                if (type.getName().equals(CUtils.anyTypeQname))
                  pinfo.setAnyType(true);
                minfo.addOutputParameter(pinfo);
              }
            }
          }
        }
View Full Code Here

    }
    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());   
    return parainfo;
  }
View Full Code Here

    try{
        writer.write("\n")
        for(int i = 0; i < methods.size(); i++){
          minfo = (MethodInfo)this.methods.get(i);
        boolean isAllTreatedAsOutParams = false;
        ParameterInfo returntype = null;
        int noOfOutParams = minfo.getOutputParameterTypes().size();
        if (0==noOfOutParams){
          returntype = null;
          writer.write("void ");
        }
        else if (1==noOfOutParams){
          returntype = (ParameterInfo)minfo.getOutputParameterTypes().iterator().next();
          String outparam = returntype.getLangName();
          writer.write(WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype,wscontext)+" ");
        }
        else{
          isAllTreatedAsOutParams = true;
          writer.write("void ");
        }
          writer.write(minfo.getMethodname()+"(");
          //write parameter names
        Iterator params = minfo.getInputParameterTypes().iterator();
        if(params.hasNext()){
          ParameterInfo fparam = (ParameterInfo)params.next();
          writer.write(WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
        }
        for(int j =1; params.hasNext();j++){
          ParameterInfo nparam = (ParameterInfo)params.next();
          writer.write(","+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
        }
        if (isAllTreatedAsOutParams){
          params = minfo.getOutputParameterTypes().iterator();
          for(int j =0; params.hasNext();j++){
            ParameterInfo nparam = (ParameterInfo)params.next();
            writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
          }         
        }
        writer.write(")\n{\n}\n");
        }
View Full Code Here

   * @throws IOException
   */

  public void writeMethodInWrapper(MethodInfo minfo) throws WrapperFault,IOException {
    boolean isAllTreatedAsOutParams = false;
    ParameterInfo returntype = null;
    int noOfOutParams = minfo.getOutputParameterTypes().size();
    if (0==noOfOutParams){
      returntype = null;
    }
    else if (1==noOfOutParams){
      returntype = (ParameterInfo)minfo.getOutputParameterTypes().iterator().next();
    }
    else{
      isAllTreatedAsOutParams = true;
    }
    Collection params = minfo.getInputParameterTypes();
    String methodName = minfo.getMethodname();
    Type retType = null;
    boolean returntypeissimple = false;
    boolean returntypeisarray = false;
    boolean aretherearrayparams = false;
    String outparamTypeName = null;
    if (returntype != null){
      outparamTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype, wscontext);
      retType = wscontext.getTypemap().getType(returntype.getSchemaName());
      if (retType != null){
        returntypeisarray = retType.isArray();
        if (CUtils.isSimpleType(retType.getLanguageSpecificName())){
          returntypeissimple = true;
        }
      }
    }
    writer.write("\n/*\n");
    writer.write(" * This method wrap the service method"+ methodName +"\n");
    writer.write(" */\n");
    //method signature
    String paramTypeName;
    boolean typeisarray = false;
    boolean typeissimple = false;
    Type type;
    if (returntype == null){
      writer.write("void");
    }
    else {
      writer.write(outparamTypeName)
    }
    writer.write(" "+ methodName + "(void* pStub");
    ArrayList paramsB = (ArrayList)params;
    for (int i = 0; i < paramsB.size(); i++) {
      paramTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsB.get(i), wscontext);
      writer.write(", "+paramTypeName+" Value"+i);
      if((type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
        aretherearrayparams = true;
      }
    }
    // Multiples parameters so fill the methods prototype
    ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
    if ( isAllTreatedAsOutParams ) {
      String currentParaTypeName;
      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);
        if((type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName())) != null && type.isArray()){
          aretherearrayparams = true;
        }
      }
    }
    writer.write(")\n{\n");
    writer.write("\tCall* pCall = (Call*)pStub;\n");
    if (returntype != null){
      writer.write("\t");
      if(returntypeisarray){
        //for arrays
        writer.write(outparamTypeName+" RetArray = {NULL, 0};\n");
      }else if(!returntypeissimple){
        writer.write(outparamTypeName+" pReturn = NULL;\n");
        //for complex types
      }else{
        //for simple types
        writer.write(outparamTypeName+" Ret;\n");
        //TODO initialize return parameter appropriately.
      }
    }
    if (aretherearrayparams || returntypeisarray){
      writer.write("\tAxis_Array array;\n");
    }
    String channelSecurityType = (WrapperConstants.CHANNEL_SECURITY_SSL.equals(wscontext.getWrapInfo().getChannelSecurity()))?
                    "SSL_CHANNEL" : "NORMAL_CHANNEL";
    String provider =  minfo.getInputUse().equals("literal") ?"C_RPC_LITERAL_PROVIDER":"C_RPC_PROVIDER";
    writer.write("\t/* Following will establish the connections with the server too */\n");
    writer.write("\tif (AXIS_SUCCESS != pCall->_functions->initialize(pCall->_object,"+ provider+", "+channelSecurityType+")) return ");
    if (returntype != null){
      writer.write((returntypeisarray?"RetArray":returntypeissimple?"Ret":"pReturn")+";\n");
    }
    else{
      writer.write(";\n");
    }
    writer.write("\tpCall->_functions->setTransportProperty(pCall->_object,SOAPACTION_HEADER , \""+minfo.getSoapAction()+"\");\n");   
    writer.write("\tpCall->_functions->setSOAPVersion(pCall->_object, SOAP_VER_1_1);\n"); //TODO check which version is it really.
    writer.write("\tpCall->_functions->setOperation(pCall->_object, \""+methodName+"\", \""+ wscontext.getWrapInfo().getTargetNameSpaceOfWSDL() +"\");\n");
    for (int i = 0; i < paramsB.size(); i++) {
      type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
      if (type != null){
        paramTypeName = type.getLanguageSpecificName();
        typeisarray = type.isArray();
      }
      else {
        paramTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
        typeisarray = false;
      }
      typeissimple = CUtils.isSimpleType(paramTypeName);
      if(typeisarray){
        //arrays
        QName qname = WrapperUtils.getArrayType(type).getName();
        String containedType = null;
        if (CUtils.isSimpleType(qname)){
          containedType = CUtils.getclass4qname(qname);
          writer.write("\tpCall->_functions->addBasicArrayParameter(pCall->_object, ");     
          writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
        }
        else{
          containedType = qname.getLocalPart();
          writer.write("\tpCall->_functions->addCmplxArrayParameter(pCall->_object, ");
          writer.write("(Axis_Array*)(&Value"+i+"), (void*)Axis_Serialize_"+containedType+", (void*)Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", Axis_TypeName_"+containedType+", Axis_URI_"+containedType);
        }
      }else if(typeissimple){
        //for simple types 
        writer.write("\tpCall->_functions->addParameter(pCall->_object, ");     
        writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CUtils.getXSDTypeForBasicType(paramTypeName));
      }else{
        //for complex types
        writer.write("\tpCall->_functions->addCmplxParameter(pCall->_object, ");     
        writer.write("Value"+i+", (void*)Axis_Serialize_"+paramTypeName+", (void*)Axis_Delete_"+paramTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", 0");
      }
      writer.write(");\n");
    }
    writer.write("\tif (AXIS_SUCCESS == pCall->_functions->invoke(pCall->_object))\n\t{\n");
    writer.write("\t\tif(AXIS_SUCCESS == pCall->_functions->checkMessage(pCall->_object, \""+methodName+"Response\", \"\"))\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){
          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){
          QName qname = WrapperUtils.getArrayType(type).getName();
          String containedType = null;
          if (CUtils.isSimpleType(qname)){
            containedType = CUtils.getclass4qname(qname);
            writer.write("\t\t\tarray = pCall->_functions->getBasicArray(pCall->_object, "+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getParamName()+"\", 0);\n");
            writer.write("\t\t\tmemcpy(OutValue"+ i +", &array, sizeof(Axis_Array));\n");

          }
          else{
            containedType = qname.getLocalPart();
            writer.write("\t\t\tarray = pCall->_functions->getCmplxArray(pCall->_object, (void*) Axis_DeSerialize_"+containedType);
            writer.write(", (void*) Axis_Create_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+currentType.getParamName()+"\", Axis_URI_"+containedType+");\n");
            writer.write("\t\t\tmemcpy(OutValue"+ i +", &array, sizeof(Axis_Array));\n");
          }
        }
        else if(typeissimple){
           writer.write("\t\t\t" + currentParamName + " = pCall->_functions->"+ CUtils.getParameterGetValueMethodName(currentParaType, false)+"(pCall->_object, \""+currentType.getParamName()+"\", 0);\n");
        }
        else{
           writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"*)pCall->_functions->getCmplxObject(pCall->_object, (void*) Axis_DeSerialize_"+currentParaType+", (void*) Axis_Create_"+currentParaType+", (void*) Axis_Delete_"+currentParaType+",\""+currentType.getParamName()+"\", 0);\n");
        }       
      } 
      writer.write("\t\t}\n");
      writer.write("\t}\n\tpCall->_functions->unInitialize(pCall->_object);\n");
    }
View Full Code Here

      writer.write("extern int get_" + classname + "_Status(void* pStub);\n");

        for(int i = 0; i < methods.size(); i++){
          minfo = (MethodInfo)this.methods.get(i);
        boolean isAllTreatedAsOutParams = false;
        ParameterInfo returntype = null;
        int noOfOutParams = minfo.getOutputParameterTypes().size();
        if (0==noOfOutParams){
          returntype = null;
          writer.write("extern void ");
        }
        else if (1==noOfOutParams){
          returntype = (ParameterInfo)minfo.getOutputParameterTypes().iterator().next();
          String outparam = returntype.getLangName();
          writer.write("extern "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype,wscontext)+" ");
        }
        else{
          isAllTreatedAsOutParams = true;
          writer.write("extern void ");
        }
          writer.write(minfo.getMethodname()+"(void* pStub");
           
          //write parameter names
          Iterator params = minfo.getInputParameterTypes().iterator();
          if(params.hasNext()){
              ParameterInfo fparam = (ParameterInfo)params.next();
            writer.write(", "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
          }
          for(int j =1; params.hasNext();j++){
            ParameterInfo nparam = (ParameterInfo)params.next();
            writer.write(", "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
          }
          if(isAllTreatedAsOutParams){
          params = minfo.getOutputParameterTypes().iterator();
          for(int j =0; params.hasNext();j++){
            ParameterInfo nparam = (ParameterInfo)params.next();
            writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
          }
          }
          writer.write(");\n");
        }
View Full Code Here

   * @throws IOException
   */

  public void writeMethodInWrapper(MethodInfo minfo) throws WrapperFault,IOException {
    boolean isAllTreatedAsOutParams = false;
    ParameterInfo returntype = null;
    ParameterInfo returntype1 = null;
    int noOfOutParams = minfo.getOutputParameterTypes().size();
    if (0==noOfOutParams){
      returntype = null;
    }
    else if (1==noOfOutParams){
      returntype = (ParameterInfo)minfo.getOutputParameterTypes().iterator().next();
    }
    else{
      isAllTreatedAsOutParams = true;
    }
    Collection params = minfo.getInputParameterTypes();
 
    String methodName = minfo.getMethodname();
    Type retType = null;
    boolean returntypeissimple = false;
    boolean returntypeisarray = false;
    String outparamTypeName = null;
    if (returntype != null){
      outparamTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype, wscontext);
      retType = wscontext.getTypemap().getType(returntype.getSchemaName());
        if (retType != null){
        returntypeisarray = retType.isArray();
        if (WSDL2Ws.verbose)
            System.out.println(retType.getLanguageSpecificName()+"LanguageName  .................... ");
        if (CUtils.isSimpleType(retType.getLanguageSpecificName())){
          returntypeissimple = true;
        }
      }
    }
    writer.write("\n/*\n");
    writer.write(" * This method wrap the service method "+ methodName +"\n");
    writer.write(" */\n");
    //method signature
    String paramTypeName;
    boolean typeisarray = false;
    boolean typeissimple = false;
    Type type;
    if (returntype == null){
      writer.write("void");
    }else{
      writer.write(outparamTypeName);
      if (WSDL2Ws.verbose)
          System.out.println("Output Parameter type Name :"+outparamTypeName);
    }
    writer.write(" "+classname+"::" + methodName + "(");
    ArrayList paramsB = (ArrayList)params;
    for (int i = 0; i < paramsB.size(); i++) {
      paramTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsB.get(i), wscontext);
      if (i>0) writer.write(", ");
      writer.write(paramTypeName+" Value"+i);
    }
    // Multiples parameters so fill the methods prototype
    ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
    if ( isAllTreatedAsOutParams ) {
      String currentParaTypeName;
      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(outparamTypeName+" RetArray = {NULL, 0};\n");
      }else if(!returntypeissimple){
        writer.write(outparamTypeName+" pReturn = NULL;\n");
        //for complex types
      }else{
        //for simple types
                                String initValue = CUtils.getInitValue(outparamTypeName);
                                if (initValue != null)
            writer.write(outparamTypeName+" Ret = " + initValue + ";\n");
        else if (outparamTypeName.equals("xsd__base64Binary") || outparamTypeName.equals("xsd__hexBinary"))
                                {
                                    writer.write(outparamTypeName+" Ret;\n");
                                    writer.write("\tRet.__ptr = NULL;\n");
                                    writer.write("\tRet.__size = 0;\n");
                                }

        else
            writer.write(outparamTypeName+" Ret;\n");
           
        //TODO initialize return parameter appropriately.
      }
    }
    String channelSecurityType = (WrapperConstants.CHANNEL_SECURITY_SSL.equals(wscontext.getWrapInfo().getChannelSecurity()))?
                    "SSL_CHANNEL" : "NORMAL_CHANNEL";

    //writer.write("\tchar* cFaultcode;\n");
    //writer.write("\tchar* cFaultstring;\n");
    //writer.write("\tchar* cFaultactor;\n");
    writer.write("\tconst char* pcCmplxFaultName;\n");
    writer.write("\ttry\n\t{");       
    writer.write("\n\t\tif (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, "+channelSecurityType +")) \n\t\t\treturn ");//damitha
    if (returntype != null){
      writer.write((returntypeisarray?"RetArray":returntypeissimple?"Ret":"pReturn")+";\n");
    }
    else{
      writer.write(";\n");
    }
    writer.write("\t\tm_pCall->setTransportProperty(SOAPACTION_HEADER , \""+minfo.getSoapAction()+"\");\n");
    writer.write("\t\tm_pCall->setSOAPVersion(SOAP_VER_1_1);\n"); //TODO check which version is it really.
    writer.write("\t\tm_pCall->setOperation(\""+minfo.getMethodname()+"\", \""+wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()+"\");\n");
    writer.write("\t\tapplyUserPreferences();\n");
    for (int i = 0; i < paramsB.size(); i++) {
      type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
      if (type != null){
        paramTypeName = type.getLanguageSpecificName();
        typeisarray = type.isArray();
      }
      else {
        paramTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
        typeisarray = false;
      }
      typeissimple = CUtils.isSimpleType(paramTypeName);
      if(typeisarray){
        //arrays
        QName qname = WrapperUtils.getArrayType(type).getName();
        String containedType = null;
        if (CUtils.isSimpleType(qname)){
          containedType = CUtils.getclass4qname(qname);
          writer.write("\tm_pCall->addBasicArrayParameter(");     
          writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\"");         
        }
        else{
          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+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\", Axis_URI_"+containedType);
        }
      }else if(typeissimple){
        //for simple types 
        writer.write("\t\tm_pCall->addParameter(");     
        writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CUtils.getXSDTypeForBasicType(paramTypeName));
      }else{
        //for complex types
        writer.write("\tm_pCall->addCmplxParameter(");     
        writer.write("Value"+i+", (void*)Axis_Serialize_"+paramTypeName+", (void*)Axis_Delete_"+paramTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", Axis_URI_"+paramTypeName);
      }
      writer.write(");\n");
    }
    writer.write("\t\tif (AXIS_SUCCESS == m_pCall->invoke())\n\t\t{\n");
    writer.write("\t\t\tif(AXIS_SUCCESS == m_pCall->checkMessage(\""+minfo.getOutputMessage().getLocalPart()+"\", \""+wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()+"\"))\n\t\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){
          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){
          QName qname = WrapperUtils.getArrayType(type).getName();
          String containedType = null;
          if (CUtils.isSimpleType(qname)){
            containedType = CUtils.getclass4qname(qname);
            writer.write("\t\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->getBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getParamName()+"\", 0);\n");
          }
          else{
            containedType = qname.getLocalPart();
            writer.write("\t\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->getCmplxArray((void*) Axis_DeSerialize_"+containedType);
            writer.write("\t\t\t\t, (void*) Axis_Create_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+currentType.getParamName()+"\", Axis_URI_"+containedType+");\n");
          }
        }
        else if(typeissimple){
           writer.write("\t\t\t\t" + currentParamName + " = m_pCall->"+ CUtils.getParameterGetValueMethodName(currentParaType, false)+"(\""+currentType.getParamName()+"\", 0);\n");
        }
        else{
           writer.write("\t\t\t\t" + currentParamName + " = ("+currentParaType+"*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_"+currentParaType+", (void*) Axis_Create_"+currentParaType+", (void*) Axis_Delete_"+currentParaType+",\""+currentType.getParamName()+"\", 0);\n");
        }       
      } 
      writer.write("\t\t\t}\n");
      writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
    }
    else if (returntype == null){
      writer.write("\t\t\t/*not successful*/\n\t\t}\n");
      writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
    }
    else if (returntypeisarray){
      QName qname = WrapperUtils.getArrayType(retType).getName();
      String containedType = null;
      if (CUtils.isSimpleType(qname)){
        containedType = CUtils.getclass4qname(qname);
        writer.write("\t\t\t\tRetArray = ("+outparamTypeName+"&)m_pCall->getBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+", \""+returntype.getParamName()+"\", 0);\n\t\t\t}\n");
      }
      else{
        containedType = qname.getLocalPart();
        writer.write("\t\t\t\tRetArray = ("+outparamTypeName+"&)m_pCall->getCmplxArray((void*) Axis_DeSerialize_"+containedType);//damitha
        writer.write(", (void*) Axis_Create_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+returntype.getParamName()+"\", Axis_URI_"+containedType+");\n\t\t\t}\n");
      }
      writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
      writer.write("\t\treturn RetArray;\n");
    }
    else if(returntypeissimple){
      writer.write("\t\t\t\tRet = m_pCall->"+ CUtils.getParameterGetValueMethodName(outparamTypeName, false)+"(\""+returntype.getParamName()+"\", 0);\n\t\t\t}\n");
      writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
      writer.write("\t\treturn Ret;\n");
    }
    else{
      outparamTypeName = returntype.getLangName();//need to have complex type name without *
      writer.write("\t\t\t\tpReturn = ("+outparamTypeName+"*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_"+outparamTypeName+", (void*) Axis_Create_"+outparamTypeName+", (void*) Axis_Delete_"+outparamTypeName+",\""+returntype.getParamName()+"\", 0);\n\t\t}\n");
      writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
      writer.write("\t\treturn pReturn;\n");

    }
    //added by nithya   
    writer.write("\t}\n");
    writer.write("\tcatch(AxisException& e)\n\t{\n");
    writer.write("\t\tint iExceptionCode = e.getExceptionCode();\n");
    writer.write("\t\tif(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)\n");
        writer.write("\t\t{\n");
        writer.write("\t\t\tm_pCall->unInitialize();\n");
        writer.write("\t\t\tthrow " + wscontext.getSerInfo().getServicename() + "_AxisClientException(e.what());\n");
        writer.write("\t\t}\n");
//ISoapFault* pSoapFault = (ISoapFault*) m_pCall->checkFault("Fault", "http://localhost/axis/MathOps");


    writer.write("\t\tISoapFault* pSoapFault = (ISoapFault*) m_pCall->checkFault(\"Fault\",\""+wscontext.getWrapInfo().getTargetEndpointURI()+"\" );\n");
    writer.write("\t\tif(pSoapFault)\n");
                writer.write("\t\t{\n");
                //writer.write("\t\t\tpcCmplxFaultName = pSoapFault->getCmplxFaultObjectName().c_str();\n");
       //to get fault info         
    Iterator paramsFault = minfo.getFaultType().iterator();
    String faultInfoName =null;
    String faultType =null;  
    String langName =null;
    String paramName =null
    boolean flag =false;
    int j =0;
      if (!paramsFault.hasNext())
      {
      writer.write("\t\t\tm_pCall->unInitialize();\n");
      writer.write("\t\t\tthrow " + wscontext.getSerInfo().getServicename() + "_AxisClientException(pSoapFault);\n");   
      }
    else
    {
      flag =true;     
                        writer.write("\t\t\tpcCmplxFaultName = pSoapFault->getCmplxFaultObjectName().c_str();\n");
    }     
    while (paramsFault.hasNext()){
      j =j+1;
      FaultInfo info = (FaultInfo)paramsFault.next();
      faultInfoName =info.getFaultInfo();      
      ArrayList paramInfo =info.getParams();
      for (int i= 0; i < paramInfo.size(); i++)
      {       
         ParameterInfo par =(ParameterInfo)paramInfo.get(i);                                                                                                                                                          
         paramName  = par.getParamName();
         langName =par.getLangName();
         faultType = WrapperUtils.getClassNameFromParamInfoConsideringArrays(par,wscontext);
          if ( j > 1){            
                writer.write("\t\t\telse if");
            writeExceptions(faultType,faultInfoName,paramName,langName);
          }          
View Full Code Here

TOP

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

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.