public WpsOutputDefinition(
     String inWpsRequestId, DocumentOutputDefinitionType outputDefinitionType) {
   id = UUID.randomUUID().toString();
   wpsRequestId = inWpsRequestId;
   outputIdentifer = outputDefinitionType.getIdentifier().getStringValue();
   this.mimeType = outputDefinitionType.getMimeType();
 }
  private DocumentOutputDefinitionType getOutputDefinition(String outputName) {
    DocumentOutputDefinitionType[] outputs =
        execute.getExecute().getResponseForm().getResponseDocument().getOutputArray();
    for (DocumentOutputDefinitionType outputDef : outputs) {
      if (outputDef.getIdentifier().getStringValue().equals(outputName)) {
        return outputDef;
      }
    }

    return null;
  }
 /**
  * this sets store for the specific output.
  *
  * @param parentInput
  * @return
  */
 public boolean setStoreSupport(String outputName) {
   DocumentOutputDefinitionType outputDef = null;
   if (!execute.getExecute().isSetResponseForm()) {
     execute.getExecute().addNewResponseForm();
   }
   if (!execute.getExecute().getResponseForm().isSetResponseDocument()) {
     execute.getExecute().getResponseForm().addNewResponseDocument();
   }
   for (DocumentOutputDefinitionType outputDefTemp :
       execute.getExecute().getResponseForm().getResponseDocument().getOutputArray()) {
     if (outputDefTemp.getIdentifier().getStringValue().equals(outputName)) {
       outputDef = outputDefTemp;
       break;
     }
   }
   if (outputDef == null) {
     outputDef = execute.getExecute().getResponseForm().getResponseDocument().addNewOutput();
   }
   for (OutputDescriptionType outputDesc : processDesc.getProcessOutputs().getOutputArray()) {
     if (outputDesc.getIdentifier().getStringValue().equals(outputName)) {
       outputDef.setIdentifier(outputDesc.getIdentifier());
       ComplexDataDescriptionType format = outputDesc.getComplexOutput().getDefault().getFormat();
       if (format.getMimeType() != null) {
         outputDef.setMimeType(format.getMimeType());
       }
       if (format.getEncoding() != null) {
         outputDef.setEncoding(format.getEncoding());
       }
       if (format.getSchema() != null) {
         outputDef.setSchema(format.getSchema());
       }
       outputDef.setAsReference(true);
     }
   }
   return true;
 }
  /**
   * return a KVP representation for the created execute document.
   *
   * @return KVP request string
   */
  public String getExecuteAsGETString() {
    String request = "?service=wps&request=execute&version=1.0.0&identifier=";
    request = request + processDesc.getIdentifier().getStringValue();
    request = request + "&DataInputs=";
    InputType[] inputs = execute.getExecute().getDataInputs().getInputArray();
    int inputCounter = 0;
    for (InputType input : inputs) {

      request = request + input.getIdentifier().getStringValue();

      if (input.isSetReference()) {
        // reference
        InputReferenceType reference = input.getReference();
        request = request + "=" + "@xlink:href=" + URLEncoder.encode(reference.getHref());
        if (reference.isSetEncoding()) {
          request = request + "@encoding=" + reference.getEncoding();
        }
        if (reference.isSetMimeType()) {
          request = request + "@format=" + reference.getMimeType();
        }
        if (reference.isSetEncoding()) {
          request = request + "@schema=" + reference.getSchema();
        }
      }
      if (input.isSetData()) {
        if (input.getData().isSetComplexData()) {
          // complex
          ComplexDataType complexData = input.getData().getComplexData();
          request = request + "=" + URLEncoder.encode(input.getData().getComplexData().xmlText());
          if (complexData.isSetEncoding()) {
            request = request + "@encoding=" + complexData.getEncoding();
          }
          if (complexData.isSetMimeType()) {
            request = request + "@format=" + complexData.getMimeType();
          }
          if (complexData.isSetEncoding()) {
            request = request + "@schema=" + complexData.getSchema();
          }
        }
        if (input.getData().isSetLiteralData()) {
          // literal
          LiteralDataType literalData = input.getData().getLiteralData();
          request = request + "=" + literalData.getStringValue();
          if (literalData.isSetDataType()) {
            request = request + "@datatype=" + literalData.getDataType();
          }
          if (literalData.isSetUom()) {
            request = request + "@datatype=" + literalData.getUom();
          }
        }
      }
      // concatenation for next input element
      inputCounter = inputCounter + 1;
      if (inputCounter < inputs.length) {
        request = request + ";";
      }
    }
    if (execute.getExecute().getResponseForm().getResponseDocument() == null) {
      throw new RuntimeException("Responresponsedocument=se Form missing");
    }
    DocumentOutputDefinitionType[] outputs =
        execute.getExecute().getResponseForm().getResponseDocument().getOutputArray();
    int outputCounter = 0;
    if (execute.getExecute().getResponseForm().isSetRawDataOutput()) {
      request = request + "&rawdataoutput=";
    } else {
      request = request + "&responsedocument=";
    }
    for (DocumentOutputDefinitionType output : outputs) {
      request = request + output.getIdentifier().getStringValue();
      if (output.isSetEncoding()) {
        request = request + "@encoding=" + output.getEncoding();
      }
      if (output.isSetMimeType()) {
        request = request + "@format=" + output.getMimeType();
      }
      if (output.isSetEncoding()) {
        request = request + "@schema=" + output.getSchema();
      }
      if (output.isSetUom()) {
        request = request + "@datatype=" + output.getUom();
      }
      // concatenation for next output element
      outputCounter = outputCounter + 1;
      if (outputCounter < outputs.length) {
        request = request + ";";
      }
    }

    if (execute.getExecute().getResponseForm().getResponseDocument().isSetStoreExecuteResponse()) {
      request = request + "&storeExecuteResponse=true";
    }
    if (execute.getExecute().getResponseForm().getResponseDocument().isSetStatus()) {
      request = request + "&status=true";
    }
    if (execute.getExecute().getResponseForm().getResponseDocument().isSetLineage()) {
      request = request + "&lineage=true";
    }

    return request;
  }