@Override
  public CDMIResponse update(Object... params) throws Exception {
    if (params == null || params.length <= 3) {
      throw new CDMIOperationException(
          String.format("Missing mandatory parameters '%s'", Arrays.toString(params)));
    }

    String containerName = "";
    String dataObjectName = "";
    String mimetype = null;
    Hashtable<String, String> headers = null;
    Hashtable<String, String> body = null;

    if (params.length == 4) {
      containerName = params[0].toString();
      Object obj = params[1];
      if (obj instanceof String[]) {
        String[] array = (String[]) obj;
        mimetype = array[0];
        dataObjectName = array[1];
      } else {
        dataObjectName = obj.toString();
      }
      headers = (Hashtable<String, String>) params[2];
      body = (Hashtable<String, String>) params[3];

      if (mimetype != null) body.put("mimetype", mimetype);
    }

    validate(CDMIOperation.UPDATE, headers, body);
    String URL = cdmiEPR + containerName + "/" + dataObjectName;

    return RestfulUtils.put(URL, headers, body);
  }