Vojtech Szocs has uploaded a new change for review.

Change subject: webadmin,userportal: Use GWTP Bootstrapper for ApplicationInit
......................................................................

webadmin,userportal: Use GWTP Bootstrapper for ApplicationInit

Before this patch, ApplicationInit classes were bound in
GIN SystemModule as eager singletons. This was to ensure
that these classes are instantiated right after Ginjector
is created, i.e. before GWTP place transition kicks in.

After this patch, ApplicationInit classes implement GWTP
Bootstrapper interface, effectively replacing the use of
DefaultBootstrapper (built-in GWTP fallback). The role of
GWTP Bootstrapper is to perform any application-specific
initialization before initiating transition to requested
application place, as defined by history token within the
URL.

By utilizing GWTP Bootstrapper feature, we no longer have
to rely on eager singletons to perform initialization at
application startup.

Change-Id: I31472c718678ef2ccd45fbf1d988f3faa49bb54d
Signed-off-by: Vojtech Szocs <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/system/BaseApplicationInit.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/userportal/UserPortal.gwt.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
7 files changed, 50 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/25209/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/system/BaseApplicationInit.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/system/BaseApplicationInit.java
index b37faaf..e3e71bc 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/system/BaseApplicationInit.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/system/BaseApplicationInit.java
@@ -21,6 +21,7 @@
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.event.shared.EventBus;
 import com.google.inject.Provider;
+import com.gwtplatform.mvp.client.Bootstrapper;
 
 /**
  * Contains initialization logic that gets executed at application startup.
@@ -28,7 +29,7 @@
  * @param <T>
  *            Login model type.
  */
-public abstract class BaseApplicationInit<T extends LoginModel> implements 
LogoutHandler {
+public abstract class BaseApplicationInit<T extends LoginModel> implements 
Bootstrapper, LogoutHandler {
 
     private final ITypeResolver typeResolver;
     private final FrontendEventsHandlerImpl frontendEventsHandler;
@@ -58,7 +59,10 @@
         this.loginModelProvider = loginModelProvider;
         this.lockInteractionManager = lockInteractionManager;
         this.frontend = frontend;
+    }
 
+    @Override
+    public void onBootstrap() {
         // Handle UI logout requests
         user.setLogoutHandler(this);
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
index 97154a0..b960f9c 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
@@ -14,7 +14,6 @@
 import org.ovirt.engine.ui.userportal.place.ApplicationPlaces;
 import org.ovirt.engine.ui.userportal.place.UserPortalPlaceManager;
 import org.ovirt.engine.ui.userportal.section.DefaultMainSectionExtendedPlace;
-import org.ovirt.engine.ui.userportal.system.ApplicationInit;
 
 import com.google.inject.Singleton;
 
@@ -34,7 +33,6 @@
     void bindInfrastructure() {
         bindCommonInfrastructure(UserPortalPlaceManager.class);
         bind(LoggedInExtendedPlaceGatekeeper.class).in(Singleton.class);
-        bind(ApplicationInit.class).asEagerSingleton();
         bind(CurrentUserRole.class).in(Singleton.class);
     }
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
index 4ac379a..a9bdb92 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java
@@ -23,30 +23,46 @@
 import com.google.gwt.user.client.Window;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.gwtplatform.mvp.client.proxy.PlaceManager;
 
 public class ApplicationInit extends BaseApplicationInit<UserPortalLoginModel> 
{
 
+    private final PlaceManager placeManager;
     private final CurrentUserRole userRole;
     private final ConnectAutomaticallyManager connectAutomaticallyManager;
     private final ClientAgentType clientAgentType;
+    private final ApplicationDynamicMessages dynamicMessages;
 
     @Inject
     public ApplicationInit(ITypeResolver typeResolver,
             FrontendEventsHandlerImpl frontendEventsHandler,
             FrontendFailureEventListener frontendFailureEventListener,
-            CurrentUser user, EventBus eventBus,
+            CurrentUser user,
+            EventBus eventBus,
             Provider<UserPortalLoginModel> loginModelProvider,
             LockInteractionManager lockInteractionManager,
-            ConnectAutomaticallyManager connectAutomaticallyManager,
+            Frontend frontend,
+            PlaceManager placeManager,
             CurrentUserRole userRole,
-            ApplicationDynamicMessages dynamicMessages,
-            ClientAgentType clientAgentType, Frontend frontend) {
+            ConnectAutomaticallyManager connectAutomaticallyManager,
+            ClientAgentType clientAgentType,
+            ApplicationDynamicMessages dynamicMessages) {
         super(typeResolver, frontendEventsHandler, 
frontendFailureEventListener,
                 user, eventBus, loginModelProvider, lockInteractionManager, 
frontend);
+        this.placeManager = placeManager;
         this.userRole = userRole;
         this.connectAutomaticallyManager = connectAutomaticallyManager;
         this.clientAgentType = clientAgentType;
+        this.dynamicMessages = dynamicMessages;
+    }
+
+    @Override
+    public void onBootstrap() {
+        super.onBootstrap();
         Window.setTitle(dynamicMessages.applicationTitle());
+
+        // Initiate transition to requested application place
+        placeManager.revealCurrentPlace();
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/userportal/UserPortal.gwt.xml
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/userportal/UserPortal.gwt.xml
index 72df76a..f13a67b 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/userportal/UserPortal.gwt.xml
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/userportal/UserPortal.gwt.xml
@@ -22,6 +22,9 @@
        <set-configuration-property name="gin.ginjector.modules" 
value="org.ovirt.engine.ui.userportal.gin.ClientModule" />
        <set-configuration-property name="gin.ginjector.extensions" 
value="org.ovirt.engine.ui.userportal.gin.ClientGinjectorExtension" />
 
+       <!-- GWTP Bootstrapper configuration -->
+       <set-configuration-property name="gwtp.bootstrapper" 
value="org.ovirt.engine.ui.userportal.system.ApplicationInit" />
+
        <!-- All source code within this module is translatable -->
        <source path="">
                <!-- Except deferred binding classes -->
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
index c437b1b..22c0647 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
@@ -10,7 +10,6 @@
 import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
 import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces;
 import org.ovirt.engine.ui.webadmin.place.WebAdminPlaceManager;
-import org.ovirt.engine.ui.webadmin.system.ApplicationInit;
 import org.ovirt.engine.ui.webadmin.system.InternalConfiguration;
 import org.ovirt.engine.ui.webadmin.system.PostMessageDispatcher;
 
@@ -29,7 +28,6 @@
 
     void bindInfrastructure() {
         bindCommonInfrastructure(WebAdminPlaceManager.class);
-        bind(ApplicationInit.class).asEagerSingleton();
         bind(InternalConfiguration.class).asEagerSingleton();
         bind(PostMessageDispatcher.class).asEagerSingleton();
     }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
index 6659101..882e053 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java
@@ -28,24 +28,37 @@
 import com.google.gwt.user.client.Window;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.gwtplatform.mvp.client.proxy.PlaceManager;
 
 public class ApplicationInit extends BaseApplicationInit<LoginModel> {
 
+    private final PlaceManager placeManager;
     private final RestApiSessionManager restApiSessionManager;
+    private final ApplicationDynamicMessages dynamicMessages;
 
     @Inject
     public ApplicationInit(ITypeResolver typeResolver,
             FrontendEventsHandlerImpl frontendEventsHandler,
             FrontendFailureEventListener frontendFailureEventListener,
-            CurrentUser user, EventBus eventBus,
+            CurrentUser user,
+            EventBus eventBus,
             Provider<LoginModel> loginModelProvider,
             LockInteractionManager lockInteractionManager,
-            ApplicationDynamicMessages dynamicMessages,
+            Frontend frontend,
+            PlaceManager placeManager,
             RestApiSessionManager restApiSessionManager,
-            Frontend frontend) {
+            ApplicationDynamicMessages dynamicMessages) {
         super(typeResolver, frontendEventsHandler, 
frontendFailureEventListener,
                 user, eventBus, loginModelProvider, lockInteractionManager, 
frontend);
+        this.placeManager = placeManager;
         this.restApiSessionManager = restApiSessionManager;
+        this.dynamicMessages = dynamicMessages;
+
+    }
+
+    @Override
+    public void onBootstrap() {
+        super.onBootstrap();
         Window.setTitle(dynamicMessages.applicationTitle());
 
         // Check for ApplicationMode configuration
@@ -59,6 +72,9 @@
         if (engineSessionTimeoutData != null) {
             
restApiSessionManager.setSessionTimeout(engineSessionTimeoutData.getValue());
         }
+
+        // Initiate transition to requested application place
+        placeManager.revealCurrentPlace();
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
index 8b265c2..c93556f 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
@@ -22,6 +22,9 @@
        <set-configuration-property name="gin.ginjector.modules" 
value="org.ovirt.engine.ui.webadmin.gin.ClientModule" />
        <set-configuration-property name="gin.ginjector.extensions" 
value="org.ovirt.engine.ui.webadmin.gin.ClientGinjectorExtension" />
 
+       <!-- GWTP Bootstrapper configuration -->
+       <set-configuration-property name="gwtp.bootstrapper" 
value="org.ovirt.engine.ui.webadmin.system.ApplicationInit" />
+
        <!-- All source code within this module is translatable -->
        <source path="">
                <!-- Except deferred binding classes -->


-- 
To view, visit http://gerrit.ovirt.org/25209
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I31472c718678ef2ccd45fbf1d988f3faa49bb54d
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Vojtech Szocs <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to