Пример #1
0
  // -----------------------------------------------------------------------
  // internal ops
  // -----------------------------------------------------------------------
  protected void doUpdateOperation(
      ServiceOperation so,
      Service service,
      ServiceDefinition sd,
      IPwsServiceModifier serviceModifier) {

    List<Operation> ops = service.getOperation();

    Operation op = null;
    for (Operation opTemp : ops) {
      if (opTemp.getName().equals(so.getName())) {
        op = opTemp;
        break;
      }
    }
    if (op == null) {
      op = new Operation();
      op.setName(so.getName());
      ops.add(op);
    }

    List<Operation.Parameter> params = op.getParameter();

    if (params.size() > 0) {
      params.clear();
    }

    for (FieldDefinition input : so.getParameterTypes()) {
      Operation.Parameter param = new Operation.Parameter();
      param.setIsList(input.getDimensions() > 0);
      param.setName(input.getName());
      if (input.getTypeDefinition() != null) {
        param.setTypeRef(input.getTypeDefinition().getTypeName());
      }
      params.add(param);
    }

    if (so.getReturnType() != null) {
      Operation.Return ret = new Operation.Return();
      FieldDefinition retType;
      if (serviceModifier == null) {
        retType = so.getReturnType();
      } else {
        retType = serviceModifier.getOperationReturnType(so);
      }

      ret.setIsList(retType.getDimensions() > 0);
      if (retType.getTypeDefinition() != null) {
        ret.setTypeRef(retType.getTypeDefinition().getTypeName());
      }
      op.setReturn(ret);

      op.setOperationType(so.getOperationType());
    }
  }