private JSONObject storeTaskFormInRepository(
      String formType, String taskName, String packageName, String formValue, Repository repository)
      throws Exception {

    repository.deleteAssetFromPath(
        packageName + "/" + taskName + TASKFORM_NAME_EXTENSION + "." + formType);

    AssetBuilder builder = AssetBuilderFactory.getAssetBuilder(Asset.AssetType.Byte);
    builder
        .location(packageName)
        .name(taskName + TASKFORM_NAME_EXTENSION)
        .type(formType)
        .content(formValue.getBytes("UTF-8"));

    repository.createAsset(builder.getAsset());

    Asset newFormAsset =
        repository.loadAssetFromPath(
            packageName + "/" + taskName + TASKFORM_NAME_EXTENSION + "." + formType);

    String uniqueId = newFormAsset.getUniqueId();
    if (Base64Backport.isBase64(uniqueId)) {
      byte[] decoded = Base64.decodeBase64(uniqueId);
      try {
        uniqueId = new String(decoded, "UTF-8");
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
    }

    JSONObject retObj = new JSONObject();
    retObj.put("formid", uniqueId);

    return retObj;
  }
  private String decodeUniqueId(String uniqueId) {
    if (Base64Backport.isBase64(uniqueId)) {
      byte[] decoded = Base64.decodeBase64(uniqueId);
      try {
        String uri = new String(decoded, "UTF-8");

        return UriUtils.encode(uri);
      } catch (UnsupportedEncodingException e) {

      }
    }

    return UriUtils.encode(uniqueId);
  }
  private String getTaskFormFromRepository(
      String formType, String taskName, String packageName, Repository repository) {
    try {
      Asset<String> formAsset =
          repository.loadAssetFromPath(
              packageName + "/" + taskName + TASKFORM_NAME_EXTENSION + "." + formType);

      if (formType.equals(FORMMODELER_FILE_EXTENSION)) {
        String uniqueId = formAsset.getUniqueId();
        if (Base64Backport.isBase64(uniqueId)) {
          byte[] decoded = Base64.decodeBase64(uniqueId);
          try {
            uniqueId = new String(decoded, "UTF-8");
          } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
          }
        }
        return formAsset.getName() + "." + formAsset.getAssetType() + "|" + uniqueId;
      } else {
        return formAsset.getAssetContent();
      }
    } catch (NoSuchFileException anfe) {
      try {
        String formValue = "";
        if (formType.equals(FORMMODELER_FILE_EXTENSION)) {
          formValue =
              formModelerService.buildEmptyFormXML(
                  taskName + TASKFORM_NAME_EXTENSION + "." + formType);
        }

        AssetBuilder builder = AssetBuilderFactory.getAssetBuilder(Asset.AssetType.Byte);
        builder
            .location(packageName)
            .name(taskName + TASKFORM_NAME_EXTENSION)
            .type(formType)
            .content(formValue.getBytes("UTF-8"));
        repository.createAsset(builder.getAsset());

        Asset<String> newFormAsset =
            repository.loadAssetFromPath(
                packageName + "/" + taskName + TASKFORM_NAME_EXTENSION + "." + formType);

        String uniqueId = newFormAsset.getUniqueId();
        if (Base64Backport.isBase64(uniqueId)) {
          byte[] decoded = Base64.decodeBase64(uniqueId);
          try {
            uniqueId = new String(decoded, "UTF-8");
          } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
          }
        }

        if (formType.equals(FORMMODELER_FILE_EXTENSION)) {
          return newFormAsset.getName() + "." + newFormAsset.getAssetType() + "|" + uniqueId;
        } else {
          return formValue;
        }
      } catch (Exception e) {
        e.printStackTrace();
        _logger.error(e.getMessage());
      }
    }
    return "false";
  }