diff --git a/pom.xml b/pom.xml
index 4473e63..f0828c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
ch.sbb.polarion.extensions
ch.sbb.polarion.extension.generic
- 6.7.0
+ 7.0.0
ch.sbb.polarion.extension.pdf-exporter
@@ -59,6 +59,7 @@
pdf-exporter
ch.sbb.polarion.extension.pdf_exporter
+ ch.sbb.polarion.extension.pdf.exporter
${maven-jar-plugin.Extension-Context}
@@ -109,11 +110,6 @@
byte-buddy
${byte-buddy.version}
-
- com.google.re2j
- re2j
- ${re2j.version}
-
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterAdminUiServlet.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterAdminUiServlet.java
index 3c23f02..28f2ee8 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterAdminUiServlet.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterAdminUiServlet.java
@@ -1,8 +1,6 @@
package ch.sbb.polarion.extension.pdf.exporter;
import ch.sbb.polarion.extension.generic.GenericUiServlet;
-import ch.sbb.polarion.extension.generic.properties.CurrentExtensionConfiguration;
-import ch.sbb.polarion.extension.pdf.exporter.properties.PdfExporterExtensionConfiguration;
import java.io.Serial;
@@ -13,6 +11,5 @@ public class PdfExporterAdminUiServlet extends GenericUiServlet {
public PdfExporterAdminUiServlet() {
super("pdf-exporter-admin");
- CurrentExtensionConfiguration.getInstance().setExtensionConfiguration(PdfExporterExtensionConfiguration.getInstance());
}
}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterFormExtension.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterFormExtension.java
index 71d61be..eae526e 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterFormExtension.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/PdfExporterFormExtension.java
@@ -155,7 +155,7 @@ private String adjustWebhooks(String scope, String form, StylePackageModel style
Collection webhooksNames = getSettingNames(WebhooksSettings.FEATURE_NAME, scope);
boolean noHooks = StringUtils.isEmpty(stylePackage.getWebhooks());
String webhooksOptions = generateSelectOptions(webhooksNames, noHooks ? NamedSettings.DEFAULT_NAME : stylePackage.getWebhooks());
- form = form.replace("{WEBHOOKS_DISPLAY}", PdfExporterExtensionConfiguration.getInstance().areWebhooksEnabled() ? "" : "hidden");
+ form = form.replace("{WEBHOOKS_DISPLAY}", PdfExporterExtensionConfiguration.getInstance().getWebhooksEnabled() ? "" : "hidden");
form = form.replace("{WEBHOOKS_OPTIONS}", webhooksOptions);
form = form.replace("{WEBHOOKS_SELECTOR_DISPLAY}", noHooks ? "none" : "inline-block");
return form.replace("{WEBHOOKS_SELECTED}", noHooks ? "" : "checked");
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/HtmlToPdfConverter.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/HtmlToPdfConverter.java
index ee4d11d..8ada440 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/HtmlToPdfConverter.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/HtmlToPdfConverter.java
@@ -9,7 +9,7 @@
import ch.sbb.polarion.extension.pdf.exporter.util.PdfExporterFileResourceProvider;
import ch.sbb.polarion.extension.pdf.exporter.util.PdfTemplateProcessor;
import ch.sbb.polarion.extension.pdf.exporter.util.html.HtmlLinksHelper;
-import ch.sbb.polarion.extension.pdf.exporter.util.regex.RegexMatcher;
+import ch.sbb.polarion.extension.generic.regex.RegexMatcher;
import ch.sbb.polarion.extension.pdf.exporter.weasyprint.WeasyPrintOptions;
import ch.sbb.polarion.extension.pdf.exporter.weasyprint.service.WeasyPrintServiceConnector;
import lombok.Getter;
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/PdfConverter.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/PdfConverter.java
index 587ca81..2eed861 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/PdfConverter.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/converter/PdfConverter.java
@@ -154,7 +154,7 @@ public byte[] convertToPdf(@NotNull ExportParams exportParams, @Nullable ExportM
private @NotNull String applyWebhooks(@NotNull ExportParams exportParams, @NotNull String htmlContent) {
// Skip webhooks processing among other if this functionality is not enabled by system administrator
- if (!PdfExporterExtensionConfiguration.getInstance().areWebhooksEnabled() || exportParams.getWebhooks() == null) {
+ if (!PdfExporterExtensionConfiguration.getInstance().getWebhooksEnabled() || exportParams.getWebhooks() == null) {
return htmlContent;
}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/properties/PdfExporterExtensionConfiguration.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/properties/PdfExporterExtensionConfiguration.java
index 6efd98a..e0c3df8 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/properties/PdfExporterExtensionConfiguration.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/properties/PdfExporterExtensionConfiguration.java
@@ -1,12 +1,15 @@
package ch.sbb.polarion.extension.pdf.exporter.properties;
+import ch.sbb.polarion.extension.generic.properties.CurrentExtensionConfiguration;
import ch.sbb.polarion.extension.generic.properties.ExtensionConfiguration;
+import ch.sbb.polarion.extension.generic.util.Discoverable;
import com.polarion.core.config.impl.SystemValueReader;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
+@Discoverable
public class PdfExporterExtensionConfiguration extends ExtensionConfiguration {
public static final String WEASYPRINT_SERVICE = "weasyprint.service";
@@ -28,7 +31,7 @@ public Boolean getInternalizeExternalCss() {
}
@NotNull
- public Boolean areWebhooksEnabled() {
+ public Boolean getWebhooksEnabled() {
return SystemValueReader.getInstance().readBoolean(getPropertyPrefix() + WEBHOOKS_ENABLED, false);
}
@@ -42,16 +45,7 @@ public Boolean areWebhooksEnabled() {
return supportedProperties;
}
- public PdfExporterExtensionConfiguration() {
- super();
- }
-
public static PdfExporterExtensionConfiguration getInstance() {
- return PdfExporterExtensionConfigurationHolder.INSTANCE;
+ return (PdfExporterExtensionConfiguration) CurrentExtensionConfiguration.getInstance().getExtensionConfiguration();
}
-
- private static class PdfExporterExtensionConfigurationHolder {
- private static final PdfExporterExtensionConfiguration INSTANCE = new PdfExporterExtensionConfiguration();
- }
-
}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationApiController.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationApiController.java
index 90b7478..5bc5078 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationApiController.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationApiController.java
@@ -1,8 +1,8 @@
package ch.sbb.polarion.extension.pdf.exporter.rest.controller;
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatus;
import ch.sbb.polarion.extension.generic.rest.filter.Secured;
import ch.sbb.polarion.extension.generic.service.PolarionService;
-import ch.sbb.polarion.extension.pdf.exporter.rest.model.configuration.ConfigurationStatus;
import org.jetbrains.annotations.NotNull;
import javax.ws.rs.Path;
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationInternalController.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationInternalController.java
index a3d8855..14d7d30 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationInternalController.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/ConfigurationInternalController.java
@@ -1,7 +1,13 @@
package ch.sbb.polarion.extension.pdf.exporter.rest.controller;
-import ch.sbb.polarion.extension.pdf.exporter.rest.model.configuration.ConfigurationStatus;
-import ch.sbb.polarion.extension.pdf.exporter.util.configuration.ConfigurationStatusUtils;
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatus;
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatusProvider;
+import ch.sbb.polarion.extension.pdf.exporter.util.configuration.CORSStatusProvider;
+import ch.sbb.polarion.extension.pdf.exporter.util.configuration.DefaultSettingsStatusProvider;
+import ch.sbb.polarion.extension.pdf.exporter.util.configuration.DleToolbarStatusProvider;
+import ch.sbb.polarion.extension.pdf.exporter.util.configuration.DocumentPropertiesPaneStatusProvider;
+import ch.sbb.polarion.extension.pdf.exporter.util.configuration.LiveReportMainHeadStatusProvider;
+import ch.sbb.polarion.extension.pdf.exporter.util.configuration.WeasyPrintStatusProvider;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import org.jetbrains.annotations.NotNull;
@@ -23,7 +29,7 @@ public class ConfigurationInternalController {
@Path("/configuration/default-settings")
@Operation(summary = "Checks default settings configuration")
public @NotNull ConfigurationStatus checkDefaultSettings(@QueryParam("scope") @DefaultValue("") String scope) {
- return ConfigurationStatusUtils.getSettingsStatus(scope);
+ return new DefaultSettingsStatusProvider().getStatus(ConfigurationStatusProvider.Context.builder().scope(scope).build());
}
@GET
@@ -31,7 +37,7 @@ public class ConfigurationInternalController {
@Path("/configuration/document-properties-pane-config")
@Operation(summary = "Checks document properties pane configuration")
public @NotNull ConfigurationStatus checkDocumentPropertiesPaneConfig(@QueryParam("scope") @DefaultValue("") String scope) {
- return ConfigurationStatusUtils.getDocumentPropertiesPaneStatus(scope);
+ return new DocumentPropertiesPaneStatusProvider().getStatus(ConfigurationStatusProvider.Context.builder().scope(scope).build());
}
@GET
@@ -39,7 +45,7 @@ public class ConfigurationInternalController {
@Path("/configuration/dle-toolbar-config")
@Operation(summary = "Checks DLE Toolbar configuration")
public @NotNull ConfigurationStatus checkDleToolbarConfig() {
- return ConfigurationStatusUtils.getDleToolbarStatus();
+ return new DleToolbarStatusProvider().getStatus(ConfigurationStatusProvider.Context.builder().build());
}
@GET
@@ -47,7 +53,7 @@ public class ConfigurationInternalController {
@Path("/configuration/live-report-config")
@Operation(summary = "Checks Live Report configuration")
public @NotNull ConfigurationStatus checkLiveReportConfig() {
- return ConfigurationStatusUtils.getLiveReportMainHeadStatus();
+ return new LiveReportMainHeadStatusProvider().getStatus(ConfigurationStatusProvider.Context.builder().build());
}
@GET
@@ -55,7 +61,7 @@ public class ConfigurationInternalController {
@Path("/configuration/cors-config")
@Operation(summary = "Checks CORS configuration")
public @NotNull ConfigurationStatus checkCORSConfig() {
- return ConfigurationStatusUtils.getCORSStatus();
+ return new CORSStatusProvider().getStatus(ConfigurationStatusProvider.Context.builder().build());
}
@GET
@@ -63,6 +69,6 @@ public class ConfigurationInternalController {
@Path("/configuration/weasyprint")
@Operation(summary = "Checks WeasyPrint configuration")
public @NotNull List checkWeasyPrint() {
- return ConfigurationStatusUtils.getWeasyPrintStatus();
+ return new WeasyPrintStatusProvider().getStatuses(ConfigurationStatusProvider.Context.builder().build());
}
}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/UtilityResourcesInternalController.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/UtilityResourcesInternalController.java
index 2d040d3..6bd622b 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/UtilityResourcesInternalController.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/controller/UtilityResourcesInternalController.java
@@ -90,6 +90,6 @@ public String getFileName(@QueryParam("locationPath") String locationPath, @Quer
@Tag(name = "Utility resources")
@Operation(summary = "Gets webhooks status - if they are enabled or not")
public WebhooksStatus getWebhooksStatus() {
- return WebhooksStatus.builder().enabled(PdfExporterExtensionConfiguration.getInstance().areWebhooksEnabled()).build();
+ return WebhooksStatus.builder().enabled(PdfExporterExtensionConfiguration.getInstance().getWebhooksEnabled()).build();
}
}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/WorkItemRefData.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/WorkItemRefData.java
index 63bc247..ed869a6 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/WorkItemRefData.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/WorkItemRefData.java
@@ -1,6 +1,6 @@
package ch.sbb.polarion.extension.pdf.exporter.rest.model;
-import ch.sbb.polarion.extension.pdf.exporter.util.regex.RegexMatcher;
+import ch.sbb.polarion.extension.generic.regex.RegexMatcher;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/configuration/ConfigurationStatus.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/configuration/ConfigurationStatus.java
deleted file mode 100644
index 2477099..0000000
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/configuration/ConfigurationStatus.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package ch.sbb.polarion.extension.pdf.exporter.rest.model.configuration;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.jetbrains.annotations.NotNull;
-
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ConfigurationStatus {
- private @NotNull String name;
- private @NotNull Status status;
- private @NotNull String details;
-
- public ConfigurationStatus(@NotNull String name, @NotNull Status status) {
- this(name, status, "");
- }
-}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/configuration/Status.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/configuration/Status.java
deleted file mode 100644
index b34d10d..0000000
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/rest/model/configuration/Status.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package ch.sbb.polarion.extension.pdf.exporter.rest.model.configuration;
-
-public enum Status {
- OK,
- WARNING,
- ERROR;
-
- public String toHtml() {
- String color = switch (this) {
- case OK -> "green";
- case WARNING -> "gray";
- case ERROR -> "red";
- };
- return String.format("%s", color, this.name());
- }
-}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/settings/CoverPageSettings.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/settings/CoverPageSettings.java
index 19b7415..5fb77d2 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/settings/CoverPageSettings.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/settings/CoverPageSettings.java
@@ -7,7 +7,7 @@
import ch.sbb.polarion.extension.pdf.exporter.rest.model.settings.coverpage.CoverPageModel;
import ch.sbb.polarion.extension.pdf.exporter.service.PdfExporterPolarionService;
import ch.sbb.polarion.extension.pdf.exporter.util.MediaUtils;
-import ch.sbb.polarion.extension.pdf.exporter.util.regex.RegexMatcher;
+import ch.sbb.polarion.extension.generic.regex.RegexMatcher;
import com.polarion.core.util.logging.Logger;
import com.polarion.platform.service.repository.IRepositoryReadOnlyConnection;
import com.polarion.subterra.base.location.ILocation;
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/HtmlProcessor.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/HtmlProcessor.java
index 5260783..04e8c02 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/HtmlProcessor.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/HtmlProcessor.java
@@ -10,8 +10,8 @@
import ch.sbb.polarion.extension.pdf.exporter.settings.LocalizationSettings;
import ch.sbb.polarion.extension.pdf.exporter.util.exporter.CustomPageBreakPart;
import ch.sbb.polarion.extension.pdf.exporter.util.html.HtmlLinksHelper;
-import ch.sbb.polarion.extension.pdf.exporter.util.regex.IRegexEngine;
-import ch.sbb.polarion.extension.pdf.exporter.util.regex.RegexMatcher;
+import ch.sbb.polarion.extension.generic.regex.IRegexEngine;
+import ch.sbb.polarion.extension.generic.regex.RegexMatcher;
import com.polarion.alm.shared.util.StringUtils;
import com.polarion.core.util.xml.CSSStyle;
import lombok.SneakyThrows;
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/LiveDocCommentsProcessor.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/LiveDocCommentsProcessor.java
index df2c76a..d9229bf 100644
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/LiveDocCommentsProcessor.java
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/LiveDocCommentsProcessor.java
@@ -1,7 +1,7 @@
package ch.sbb.polarion.extension.pdf.exporter.util;
import ch.sbb.polarion.extension.pdf.exporter.model.LiveDocComment;
-import ch.sbb.polarion.extension.pdf.exporter.util.regex.RegexMatcher;
+import ch.sbb.polarion.extension.generic.regex.RegexMatcher;
import com.polarion.alm.server.api.model.document.ProxyDocument;
import com.polarion.alm.shared.api.model.comment.CommentBase;
import com.polarion.alm.shared.api.model.comment.CommentBaseFields;
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/CORSStatusProvider.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/CORSStatusProvider.java
new file mode 100644
index 0000000..f2dc328
--- /dev/null
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/CORSStatusProvider.java
@@ -0,0 +1,31 @@
+package ch.sbb.polarion.extension.pdf.exporter.util.configuration;
+
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatus;
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatusProvider;
+import ch.sbb.polarion.extension.generic.configuration.Status;
+import ch.sbb.polarion.extension.generic.util.Discoverable;
+import com.polarion.core.config.Configuration;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Set;
+
+@Discoverable
+public class CORSStatusProvider extends ConfigurationStatusProvider {
+
+ public static final String CORS = "CORS (Cross-Origin Resource Sharing)";
+
+ @Override
+ public @NotNull ConfigurationStatus getStatus(@NotNull Context context) {
+ boolean restEnabled = Configuration.getInstance().rest().enabled();
+ if (restEnabled) {
+ Set corsAllowedOrigins = Configuration.getInstance().rest().corsAllowedOrigins();
+ if (corsAllowedOrigins.isEmpty()) {
+ return new ConfigurationStatus(CORS, Status.WARNING, "CORS allowed origins are not configured");
+ } else {
+ return new ConfigurationStatus(CORS, Status.OK, "CORS allowed origins: %s".formatted(corsAllowedOrigins.stream().toList()));
+ }
+ } else {
+ return new ConfigurationStatus(CORS, Status.WARNING, "Polarion REST API is not enabled, so CORS is not enabled");
+ }
+ }
+}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/ConfigurationStatusUtils.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/ConfigurationStatusUtils.java
deleted file mode 100644
index 831dffd..0000000
--- a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/ConfigurationStatusUtils.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package ch.sbb.polarion.extension.pdf.exporter.util.configuration;
-
-import ch.sbb.polarion.extension.generic.settings.GenericNamedSettings;
-import ch.sbb.polarion.extension.generic.settings.NamedSettingsRegistry;
-import ch.sbb.polarion.extension.generic.settings.SettingsService;
-import ch.sbb.polarion.extension.generic.util.ScopeUtils;
-import ch.sbb.polarion.extension.pdf.exporter.converter.HtmlToPdfConverter;
-import ch.sbb.polarion.extension.pdf.exporter.rest.model.configuration.ConfigurationStatus;
-import ch.sbb.polarion.extension.pdf.exporter.rest.model.configuration.Status;
-import ch.sbb.polarion.extension.pdf.exporter.rest.model.conversion.Orientation;
-import ch.sbb.polarion.extension.pdf.exporter.rest.model.conversion.PaperSize;
-import ch.sbb.polarion.extension.pdf.exporter.util.regex.RegexMatcher;
-import ch.sbb.polarion.extension.pdf.exporter.weasyprint.service.WeasyPrintServiceConnector;
-import ch.sbb.polarion.extension.pdf.exporter.weasyprint.service.model.WeasyPrintInfo;
-import com.polarion.core.config.Configuration;
-import com.polarion.subterra.base.location.ILocation;
-import lombok.experimental.UtilityClass;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-import java.util.Set;
-
-@UtilityClass
-public class ConfigurationStatusUtils {
- public static final String DEFAULT_SETTINGS = "Default Settings";
- public static final String DOCUMENT_PROPERTIES_PANE = "Document Properties Pane";
- public static final String DLE_TOOLBAR = "DLE Toolbar";
- public static final String LIVE_REPORT_BUTTON = "LiveReport Button";
- public static final String CORS = "CORS (Cross-Origin Resource Sharing)";
- public static final List WEASY_PRINT = List.of("WeasyPrint Python", "WeasyPrint", "WeasyPrint Service");
-
- @SuppressWarnings("java:S1166") //need by design
- public static @NotNull ConfigurationStatus getSettingsStatus(@NotNull String scope) {
- ConfigurationStatus configurationStatus = new ConfigurationStatus(DEFAULT_SETTINGS, Status.OK, "");
-
- NamedSettingsRegistry.INSTANCE.getAll().stream()
- .map(GenericNamedSettings::getFeatureName)
- .forEach(featureName -> {
- try {
- NamedSettingsRegistry.INSTANCE.getByFeatureName(featureName).readNames(scope);
- } catch (Exception e) {
- configurationStatus.setStatus(Status.ERROR);
- configurationStatus.setDetails(e.getMessage());
- }
- });
-
- return configurationStatus;
- }
-
- public static @NotNull ConfigurationStatus getDocumentPropertiesPaneStatus(@NotNull String scope) {
- ILocation location = ScopeUtils.getContextLocation(scope).append(".polarion/documents/sidebar/document.xml");
- String content = new SettingsService().read(location, null);
-
- if (content == null) {
- location = ScopeUtils.getDefaultLocation().append(".polarion/documents/sidebar/document.xml");
- content = new SettingsService().read(location, null);
- return getConfigurationStatus(DOCUMENT_PROPERTIES_PANE, content, "", new ConfigurationStatus(DOCUMENT_PROPERTIES_PANE, Status.WARNING, "Not configured neither for global scope nor for current project"));
- } else {
- return getConfigurationStatus(DOCUMENT_PROPERTIES_PANE, content, "", new ConfigurationStatus(DOCUMENT_PROPERTIES_PANE, Status.WARNING, "Not configured for current project"));
- }
- }
-
-
- public static @NotNull ConfigurationStatus getDleToolbarStatus() {
- final ILocation location = ScopeUtils.getDefaultLocation().append(".polarion/context.properties");
- final String content = new SettingsService().read(location, null);
-
- return getConfigurationStatus(DLE_TOOLBAR, content, "scriptInjection.dleEditorHead=.*");
- }
-
- public static @NotNull ConfigurationStatus getLiveReportMainHeadStatus() {
- final ILocation location = ScopeUtils.getDefaultLocation().append(".polarion/context.properties");
- final String content = new SettingsService().read(location, null);
-
- return getConfigurationStatus(LIVE_REPORT_BUTTON, content, "scriptInjection.mainHead=.*");
+ }
+}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/DocumentPropertiesPaneStatusProvider.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/DocumentPropertiesPaneStatusProvider.java
new file mode 100644
index 0000000..e043269
--- /dev/null
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/DocumentPropertiesPaneStatusProvider.java
@@ -0,0 +1,30 @@
+package ch.sbb.polarion.extension.pdf.exporter.util.configuration;
+
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatus;
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatusProvider;
+import ch.sbb.polarion.extension.generic.configuration.Status;
+import ch.sbb.polarion.extension.generic.settings.SettingsService;
+import ch.sbb.polarion.extension.generic.util.Discoverable;
+import ch.sbb.polarion.extension.generic.util.ScopeUtils;
+import com.polarion.subterra.base.location.ILocation;
+import org.jetbrains.annotations.NotNull;
+
+@Discoverable
+public class DocumentPropertiesPaneStatusProvider extends ConfigurationStatusProvider {
+
+ public static final String DOCUMENT_PROPERTIES_PANE = "Document Properties Pane";
+
+ @Override
+ public @NotNull ConfigurationStatus getStatus(@NotNull Context context) {
+ ILocation location = ScopeUtils.getContextLocation(context.getScope()).append(".polarion/documents/sidebar/document.xml");
+ String content = new SettingsService().read(location, null);
+
+ if (content == null) {
+ location = ScopeUtils.getDefaultLocation().append(".polarion/documents/sidebar/document.xml");
+ content = new SettingsService().read(location, null);
+ return getConfigurationStatus(DOCUMENT_PROPERTIES_PANE, content, "", new ConfigurationStatus(DOCUMENT_PROPERTIES_PANE, Status.WARNING, "Not configured neither for global scope nor for current project"));
+ } else {
+ return getConfigurationStatus(DOCUMENT_PROPERTIES_PANE, content, "", new ConfigurationStatus(DOCUMENT_PROPERTIES_PANE, Status.WARNING, "Not configured for current project"));
+ }
+ }
+}
diff --git a/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/LiveReportMainHeadStatusProvider.java b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/LiveReportMainHeadStatusProvider.java
new file mode 100644
index 0000000..82978f5
--- /dev/null
+++ b/src/main/java/ch/sbb/polarion/extension/pdf/exporter/util/configuration/LiveReportMainHeadStatusProvider.java
@@ -0,0 +1,23 @@
+package ch.sbb.polarion.extension.pdf.exporter.util.configuration;
+
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatus;
+import ch.sbb.polarion.extension.generic.configuration.ConfigurationStatusProvider;
+import ch.sbb.polarion.extension.generic.settings.SettingsService;
+import ch.sbb.polarion.extension.generic.util.Discoverable;
+import ch.sbb.polarion.extension.generic.util.ScopeUtils;
+import com.polarion.subterra.base.location.ILocation;
+import org.jetbrains.annotations.NotNull;
+
+@Discoverable
+public class LiveReportMainHeadStatusProvider extends ConfigurationStatusProvider {
+
+ public static final String LIVE_REPORT_BUTTON = "LiveReport Button";
+
+ @Override
+ public @NotNull ConfigurationStatus getStatus(@NotNull Context context) {
+ ILocation location = ScopeUtils.getDefaultLocation().append(".polarion/context.properties");
+ String content = new SettingsService().read(location, null);
+
+ return getConfigurationStatus(LIVE_REPORT_BUTTON, content, "scriptInjection.mainHead=