You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2019/08/12 20:08:23 UTC

[deltaspike] 03/03: DELTASPIKE-1385 added support for init under high load

This is an automated email from the ASF dual-hosted git repository.

gpetracek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/deltaspike.git

commit 8936f921f39d270ecd5cc762d92c0b66f579b61d
Author: gpetracek <gp...@apache.org>
AuthorDate: Mon Aug 12 21:45:31 2019 +0200

    DELTASPIKE-1385 added support for init under high load
---
 .../deltaspike/jsf/impl/component/window/WindowIdHtmlRenderer.java | 3 ++-
 .../config/view/DefaultErrorViewAwareExceptionHandlerWrapper.java  | 2 +-
 .../config/view/navigation/ViewConfigAwareNavigationHandler.java   | 5 +++--
 .../jsf/impl/listener/phase/DeltaSpikePhaseListener.java           | 7 ++++++-
 .../jsf/impl/navigation/NavigationHandlerAwareApplication.java     | 4 ++--
 .../deltaspike/jsf/impl/security/SecurityAwareViewHandler.java     | 7 ++++++-
 6 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/component/window/WindowIdHtmlRenderer.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/component/window/WindowIdHtmlRenderer.java
index b0f3175..92c1d89 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/component/window/WindowIdHtmlRenderer.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/component/window/WindowIdHtmlRenderer.java
@@ -127,8 +127,9 @@ public class WindowIdHtmlRenderer extends Renderer
                 if (clientWindow == null)
                 {
                     clientWindowConfig = BeanProvider.getContextualReference(ClientWindowConfig.class);
-                    clientWindow = BeanProvider.getContextualReference(ClientWindow.class);
                     maxWindowIdLength = ClientWindowHelper.getMaxWindowIdLength();
+
+                    clientWindow = BeanProvider.getContextualReference(ClientWindow.class);
                 }
             }
         }
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultErrorViewAwareExceptionHandlerWrapper.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultErrorViewAwareExceptionHandlerWrapper.java
index 33af77f..f6f97fb 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultErrorViewAwareExceptionHandlerWrapper.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultErrorViewAwareExceptionHandlerWrapper.java
@@ -43,7 +43,7 @@ public class DefaultErrorViewAwareExceptionHandlerWrapper extends ExceptionHandl
 {
     private ExceptionHandler wrapped;
 
-    private ViewNavigationHandler viewNavigationHandler;
+    private volatile ViewNavigationHandler viewNavigationHandler;
 
     /**
      * Constructor used by proxy libs
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/navigation/ViewConfigAwareNavigationHandler.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/navigation/ViewConfigAwareNavigationHandler.java
index a3171f8..0bc189f 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/navigation/ViewConfigAwareNavigationHandler.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/navigation/ViewConfigAwareNavigationHandler.java
@@ -48,7 +48,7 @@ public class ViewConfigAwareNavigationHandler extends NavigationHandler
 
     private final NavigationHandler navigationHandler;
 
-    private BeanManager beanManager;
+    private volatile BeanManager beanManager;
 
     private NavigationParameterContext navigationParameterContext;
 
@@ -259,11 +259,12 @@ public class ViewConfigAwareNavigationHandler extends NavigationHandler
     {
         if (this.beanManager == null)
         {
-            this.beanManager = BeanManagerProvider.getInstance().getBeanManager();
             this.navigationParameterContext =
                     BeanProvider.getContextualReference(NavigationParameterContext.class);
             this.viewConfigResolver =
                     BeanProvider.getContextualReference(ViewConfigResolver.class);
+
+            this.beanManager = BeanManagerProvider.getInstance().getBeanManager();
         }
     }
 }
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/phase/DeltaSpikePhaseListener.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/phase/DeltaSpikePhaseListener.java
index adda43a..7f1c062 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/phase/DeltaSpikePhaseListener.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/phase/DeltaSpikePhaseListener.java
@@ -52,7 +52,7 @@ public class DeltaSpikePhaseListener implements PhaseListener, Deactivatable
 
     private final PhaseListener jsfRequestLifecyclePhaseListener = new JsfRequestLifecyclePhaseListener();
 
-    private ViewConfigResolver viewConfigResolver;
+    private volatile ViewConfigResolver viewConfigResolver;
 
     public DeltaSpikePhaseListener()
     {
@@ -154,6 +154,11 @@ public class DeltaSpikePhaseListener implements PhaseListener, Deactivatable
 
     private synchronized void lazyInit()
     {
+        if (this.viewConfigResolver != null)
+        {
+            return;
+        }
+
         this.securityModuleActivated =
             BeanProvider.getContextualReference(EditableAccessDecisionVoterContext.class, true) != null;
 
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/NavigationHandlerAwareApplication.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/NavigationHandlerAwareApplication.java
index 6393914..b622703 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/NavigationHandlerAwareApplication.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/NavigationHandlerAwareApplication.java
@@ -31,7 +31,7 @@ import java.lang.reflect.Constructor;
 
 public class NavigationHandlerAwareApplication extends ApplicationWrapper implements Deactivatable
 {
-    private static Boolean manualNavigationHandlerWrapperMode;
+    private static volatile Boolean manualNavigationHandlerWrapperMode;
     private static Class navigationHandlerWrapperClass;
     private final Application wrapped;
 
@@ -108,7 +108,7 @@ public class NavigationHandlerAwareApplication extends ApplicationWrapper implem
             try
             {
                 Constructor deltaSpikeNavigationHandlerWrapperConstructor =
-                    this.navigationHandlerWrapperClass.getConstructor(ConfigurableNavigationHandler.class);
+                    navigationHandlerWrapperClass.getConstructor(ConfigurableNavigationHandler.class);
 
                 NavigationHandler navigationHandlerWrapper =
                     (NavigationHandler)deltaSpikeNavigationHandlerWrapperConstructor.newInstance(handler);
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/security/SecurityAwareViewHandler.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/security/SecurityAwareViewHandler.java
index 7d5115f..6fb44ee 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/security/SecurityAwareViewHandler.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/security/SecurityAwareViewHandler.java
@@ -46,7 +46,7 @@ public class SecurityAwareViewHandler extends ViewHandlerWrapper implements Deac
     protected final ViewHandler wrapped;
 
     private final boolean activated;
-    private Boolean securityModuleActivated;
+    private volatile Boolean securityModuleActivated;
 
     /**
      * Constructor for wrapping the given {@link ViewHandler}
@@ -184,6 +184,11 @@ public class SecurityAwareViewHandler extends ViewHandlerWrapper implements Deac
 
     private synchronized void lazyInit()
     {
+        if (this.securityModuleActivated != null)
+        {
+            return;
+        }
+
         this.securityModuleActivated =
             BeanProvider.getContextualReference(EditableAccessDecisionVoterContext.class, true) != null;