/**
   * @param restResponse
   * @param servletContextUrl
   * @return
   */
  private String getGradleProperties(RestResponse restResponse, String servletContextUrl) {
    AddonsManager addonsManager = ContextHelper.get().beanForType(AddonsManager.class);
    FilteredResourcesAddon filteredResourcesWebAddon =
        addonsManager.addonByType(FilteredResourcesAddon.class);

    java.util.Properties credentialProperties = new java.util.Properties();
    credentialProperties.setProperty(
        "auth.username", filteredResourcesWebAddon.getGeneratedSettingsUsernameTemplate());

    credentialProperties.setProperty(
        "auth.password",
        filteredResourcesWebAddon.getGeneratedSettingsUserCredentialsTemplate(false));

    credentialProperties.setProperty("auth.contextUrl", servletContextUrl);

    String content =
        replaceValuesAndGetTemplateValue(
            "/gradle.properties.template", credentialProperties, restResponse);
    try {
      String filtered =
          filteredResourcesWebAddon.filterResource(
              null,
              (org.artifactory.md.Properties) InfoFactoryHolder.get().createProperties(),
              new StringReader(content));
      return filtered;
    } catch (Exception e) {
      log.error("Unable to filter gradle build properties file: " + e.getMessage());
      restResponse.error(e.getMessage());
    }
    return content;
  }
  public EditableSettingsModalPanel(final DownloadModalSettings settings) {
    contentTextArea = new TextArea<String>("content", Model.<String>of(settings.getContent()));
    contentTextArea.setOutputMarkupId(true);

    FilteredResourcesWebAddon filteredResourcesWebAddon =
        addonsManager.addonByType(FilteredResourcesWebAddon.class);
    String saveToFileName = settings.getSaveToFileName();
    form.add(
        filteredResourcesWebAddon.getSettingsProvisioningBorder(
            "settingsProvisioning", form, contentTextArea, saveToFileName));

    final AjaxSettingsDownloadBehavior ajaxSettingsDownloadBehavior =
        new AjaxSettingsDownloadBehavior(saveToFileName) {

          @Override
          protected StringResourceStream getResourceStream() {
            FilteredResourcesWebAddon filteredResourcesWebAddon =
                addonsManager.addonByType(FilteredResourcesWebAddon.class);
            try {
              String filtered =
                  filteredResourcesWebAddon.filterResource(
                      null,
                      (Properties) InfoFactoryHolder.get().createProperties(),
                      new StringReader(contentTextArea.getModelObject()));
              return new StringResourceStream(filtered, settings.getSettingsMimeType());
            } catch (Exception e) {
              log.error("Unable to filter settings: " + e.getMessage());
              return new StringResourceStream(
                  contentTextArea.getModelObject(), settings.getSettingsMimeType());
            }
          }
        };

    form.add(ajaxSettingsDownloadBehavior);

    Component exportLink =
        new TitledAjaxSubmitLink("export", settings.getDownloadButtonTitle(), form) {
          @Override
          protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            ajaxSettingsDownloadBehavior.initiate(target);
          }
        };
    exportLink.add(new CssClass(new DefaultButtonStyleModel(exportLink)));
    add(exportLink);

    setWidth(700);
    add(new ModalCloseLink("cancel", "Cancel"));

    addContentToBorder();
  }
 /**
  * update remote Properties
  *
  * @param resource - repo resource
  * @param properties - properties
  */
 private void updateRemoteProperties(RepoResource resource, Properties properties) {
   AddonsManager addonsManager = ContextHelper.get().beanForType(AddonsManager.class);
   PropertiesAddon propertiesAddon = addonsManager.addonByType(PropertiesAddon.class);
   propertiesAddon.setProperties(resource.getRepoPath(), properties);
 }