From 6c07715635ab12cb1bbfa6b0699016a2eaff143c Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Thu, 13 Sep 2018 16:47:03 +0200 Subject: [PATCH] deployment info cached in midpoint application (web) + update notifications --- .../web/security/MidPointApplication.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java index 63e1a3f1ed0..3af1d280226 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java @@ -29,6 +29,8 @@ import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.match.MatchingRuleRegistry; import com.evolveum.midpoint.repo.api.RepositoryService; +import com.evolveum.midpoint.repo.api.SystemConfigurationChangeDispatcher; +import com.evolveum.midpoint.repo.api.SystemConfigurationChangeListener; import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; import com.evolveum.midpoint.schema.RelationRegistry; import com.evolveum.midpoint.schema.result.OperationResult; @@ -56,6 +58,7 @@ import com.evolveum.midpoint.web.util.MidPointStringResourceLoader; import com.evolveum.midpoint.web.util.SchrodingerComponentInitListener; import com.evolveum.midpoint.wf.api.WorkflowManager; +import com.evolveum.midpoint.xml.ns._public.common.common_3.DeploymentInformationType; import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType; import org.apache.commons.configuration.Configuration; @@ -84,6 +87,7 @@ import org.apache.wicket.settings.ResourceSettings; import org.apache.wicket.spring.injection.annot.SpringComponentInjector; import org.apache.wicket.util.lang.Bytes; +import org.jetbrains.annotations.Nullable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; @@ -194,8 +198,12 @@ public class MidPointApplication extends AuthenticatedWebApplication { transient AsyncWebProcessManager asyncWebProcessManager; @Autowired transient ApplicationContext applicationContext; + @Autowired + transient SystemConfigurationChangeDispatcher systemConfigurationChangeDispatcher; private WebApplicationConfiguration webApplicationConfiguration; + + private DeploymentInformationType deploymentInfo; public static final String MOUNT_INTERNAL_SERVER_ERROR = "/error"; public static final String MOUNT_UNAUTHORIZED_ERROR = "/error/401"; @@ -227,6 +235,12 @@ public void init() { getComponentInstantiationListeners().add(new SpringComponentInjector(this)); + systemConfigurationChangeDispatcher.registerListener(new DeploymentInformationChangeListener(this)); + SystemConfigurationType config = getSystemConfigurationIfAvailable(); + if (config != null) { + deploymentInfo = config.getDeploymentInformation(); + } + ResourceSettings resourceSettings = getResourceSettings(); resourceSettings.setParentFolderPlaceholder("$-$"); resourceSettings.setHeaderItemComparator(new PriorityFirstComparator(true)); @@ -305,6 +319,10 @@ public void updateAjaxAttributes(AbstractDefaultAjaxBehavior behavior, AjaxReque initializeSchrodinger(); } + public DeploymentInformationType getDeploymentInfo() { + return deploymentInfo; + } + private void initializeSchrodinger() { if (applicationContext == null) { return; @@ -635,4 +653,20 @@ public ResourceBundle newBundle(String baseName, Locale locale, String format, C } } } + + private static class DeploymentInformationChangeListener implements SystemConfigurationChangeListener { + + private MidPointApplication application; + + public DeploymentInformationChangeListener(MidPointApplication application) { + this.application = application; + } + + @Override + public boolean update(@Nullable SystemConfigurationType value) { + application.deploymentInfo = value != null ? value.getDeploymentInformation() : null; + + return true; + } + } }