Alexander Wels has uploaded a new change for review.

Change subject: webadmin: Simply report redirect
......................................................................

webadmin: Simply report redirect

- Reports had several redirect servlet instances, one for each type
  of interaction with the reporting server. The difference was
  parameters defined in the configuration. This patch passes the
  parameters to the UI using the host page instead of new servlets
  in web.xml.

Change-Id: Ic4718bf7f734ea72d2494fc463a87cb7675df0c4
Signed-off-by: Alexander Wels <aw...@redhat.com>
---
M backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java
M 
frontend/webadmin/modules/frontend/src/main/resources/META-INF/resources/GwtHostPage.jsp
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportsUrls.java
6 files changed, 70 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/33550/1

diff --git a/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml 
b/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml
index 7eaeeb3..a8e5351 100644
--- a/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml
+++ b/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml
@@ -60,25 +60,12 @@
       
<servlet-class>org.ovirt.engine.core.utils.servlet.RedirectServlet</servlet-class>
       <init-param>
           <param-name>url</param-name>
-          <param-value>%{ENGINE_REPORTS_DASHBOARD_URL}</param-value>
+          <param-value>%{ENGINE_REPORTS_BASE_URL}</param-value>
       </init-param>
   </servlet>
   <servlet-mapping>
       <servlet-name>reports-redirect</servlet-name>
-      <url-pattern>/reports-redirect</url-pattern>
-  </servlet-mapping>
-
-  <servlet>
-      <servlet-name>reports-rightclick-redirect</servlet-name>
-      
<servlet-class>org.ovirt.engine.core.utils.servlet.RedirectServlet</servlet-class>
-      <init-param>
-          <param-name>url</param-name>
-          <param-value>%{ENGINE_REPORTS_RIGHTCLICK_URL}</param-value>
-      </init-param>
-  </servlet>
-  <servlet-mapping>
-      <servlet-name>reports-rightclick-redirect</servlet-name>
-      <url-pattern>/reports-rightclick-redirect</url-pattern>
+      <url-pattern>/reports-redirect/*</url-pattern>
   </servlet-mapping>
 
   <servlet>
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
index 3594f7c..0dd37d0 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
@@ -189,7 +189,7 @@
      * @param value The {@code String} value to use as the value of the object.
      * @return A String representation of the Javascript object.
      */
-    private String getValueObject(final String value) {
+    protected String getValueObject(final String value) {
         ObjectNode node = mapper.createObjectNode();
         node.put("value", value); //$NON-NLS-1$
         return node.toString();
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java
index 9259930..ba1a1be 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java
@@ -17,6 +17,7 @@
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.utils.EngineLocalConfig;
 import org.ovirt.engine.ui.frontend.server.gwt.plugin.PluginData;
 import org.ovirt.engine.ui.frontend.server.gwt.plugin.PluginDataManager;
 
@@ -33,6 +34,13 @@
     protected static final String ATTR_APPLICATION_MODE = "applicationMode"; 
//$NON-NLS-1$
     protected static final String ATTR_PLUGIN_DEFS = "pluginDefinitions"; 
//$NON-NLS-1$
     protected static final String ATTR_ENGINE_SESSION_TIMEOUT = 
"engineSessionTimeout"; //$NON-NLS-1$
+    protected static final String ATTR_ENGINE_REPORTS_DASHBOARD_URL = 
"ENGINE_REPORTS_DASHBOARD_URL"; //$NON-NLS-1$
+    protected static final String ATTR_ENGINE_REPORTS_RIGHTCLICK_URL = 
"ENGINE_REPORTS_RIGHTCLICK_URL"; //$NON-NLS-1$
+    protected static final String ATTR_ENGINE_REPORTS_BASE_URL = 
"ENGINE_REPORTS_BASE_URL"; //$NON-NLS-1$
+
+    protected String reportRedirectUrl;
+    protected String reportRightClickRedirectUrl;
+    protected String reportBaseUrl;
 
     @Override
     protected String getSelectorScriptName() {
@@ -42,6 +50,21 @@
     @Override
     protected boolean filterQueries() {
         return false;
+    }
+
+    @Override
+    public void init() {
+        super.init();
+
+        reportRedirectUrl =
+                EngineLocalConfig.getInstance().expandString("${" //$NON-NLS-1$
+                        + ATTR_ENGINE_REPORTS_DASHBOARD_URL + "}"); 
//$NON-NLS-1$
+        reportRightClickRedirectUrl =
+                EngineLocalConfig.getInstance().expandString("${" //$NON-NLS-1$
+                        + ATTR_ENGINE_REPORTS_RIGHTCLICK_URL + "}"); 
//$NON-NLS-1$
+        reportBaseUrl = EngineLocalConfig.getInstance().expandString("${" 
//$NON-NLS-1$
+                + ATTR_ENGINE_REPORTS_BASE_URL + "}"); //$NON-NLS-1$
+
     }
 
     @Override
@@ -59,7 +82,17 @@
         Integer engineSessionTimeout = 
getEngineSessionTimeout(getEngineSessionId(request));
         request.setAttribute(ATTR_ENGINE_SESSION_TIMEOUT, 
getEngineSessionTimeoutObject(engineSessionTimeout));
 
+        request.setAttribute(ATTR_ENGINE_REPORTS_BASE_URL, 
getReportInit(reportRedirectUrl.substring(reportBaseUrl.length()),
+                
reportRightClickRedirectUrl.substring(reportBaseUrl.length())));
+
         super.doGet(request, response);
+    }
+
+    private ObjectNode getReportInit(String reportUrl, String rightClickUrl) {
+        ObjectNode obj = createObjectNode();
+        obj.put("reportUrl", reportUrl); //$NON-NLS-1$
+        obj.put("rightClickUrl", rightClickUrl); //$NON-NLS-1$
+        return obj;
     }
 
     @Override
@@ -75,6 +108,8 @@
         // Update based on engineSessionTimeout object
         
digest.update(request.getAttribute(ATTR_ENGINE_SESSION_TIMEOUT).toString().getBytes());
 
+        // Update based on report parameters.
+        
digest.update(request.getAttribute(ATTR_ENGINE_REPORTS_BASE_URL).toString().getBytes());
         return digest;
     }
 
@@ -121,5 +156,4 @@
         obj.put("value", String.valueOf(engineSessionTimeout)); //$NON-NLS-1$
         return obj;
     }
-
 }
diff --git 
a/frontend/webadmin/modules/frontend/src/main/resources/META-INF/resources/GwtHostPage.jsp
 
b/frontend/webadmin/modules/frontend/src/main/resources/META-INF/resources/GwtHostPage.jsp
index f3728c3..10447f4 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/resources/META-INF/resources/GwtHostPage.jsp
+++ 
b/frontend/webadmin/modules/frontend/src/main/resources/META-INF/resources/GwtHostPage.jsp
@@ -32,6 +32,9 @@
         <c:if test="${requestScope['baseContextPath'] != null}">
             var baseContextPath = <c:out 
value="${requestScope['baseContextPath']}" escapeXml="false"/>;
         </c:if>
+        <c:if test="${requestScope['ENGINE_REPORTS_BASE_URL'] != null}">
+            var engineReportsUrls = <c:out 
value="${requestScope['ENGINE_REPORTS_BASE_URL']}" escapeXml="false"/>;
+        </c:if>
     </script>
 </head>
 <body>
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java
index 8900783..9604ba2 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java
@@ -3,7 +3,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import com.google.gwt.core.client.Scheduler;
 import org.ovirt.engine.ui.frontend.communication.SSOTokenChangeEvent;
 import 
org.ovirt.engine.ui.frontend.communication.SSOTokenChangeEvent.SSOTokenChangeHandler;
 import org.ovirt.engine.ui.frontend.utils.BaseContextPathData;
@@ -12,6 +11,7 @@
 import org.ovirt.engine.ui.uicompat.ReportParser.Dashboard;
 import org.ovirt.engine.ui.uicompat.ReportParser.Resource;
 
+import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.http.client.Request;
@@ -27,7 +27,6 @@
     private static final int MAX_RETRY_COUNTS = 20;
     private static final int RETRY_INTERVAL = 30000;
     public static final String REDIRECT_SERVICE = "services/reports-redirect"; 
//$NON-NLS-1$
-    public static final String RIGHT_CLICK_REDIRECT_SERVICE = 
"services/reports-rightclick-redirect"; //$NON-NLS-1$
     public static final String STATUS_SERVICE = 
"services/reports-interface-proxy?command=status"; //$NON-NLS-1$
     public static final String XML_SERVICE = 
"services/reports-interface-proxy?command=webadmin-ui-xml"; //$NON-NLS-1$
     private int retryCount;
@@ -59,8 +58,8 @@
         // the re-init can happen after logout/login.
         // As this class has it's state, it needs to be inited again
         initState();
-        setReportBaseUrl(buildUrl(REDIRECT_SERVICE));
-        setReportRightClickUrl(buildUrl(RIGHT_CLICK_REDIRECT_SERVICE));
+        setReportBaseUrl(buildUrl(REDIRECT_SERVICE, 
ReportsUrls.instance().getReportUrl()));
+        setReportRightClickUrl(buildUrl(REDIRECT_SERVICE, 
ReportsUrls.instance().getRightClickUrl()));
         parseReportsXML();
     }
 
@@ -99,9 +98,13 @@
     }
 
     private static String buildUrl(String service) {
+        return buildUrl(service, null);
+    }
+
+    private static String buildUrl(String service, String params) {
         return "/" //$NON-NLS-1$
                 + BaseContextPathData.getInstance().getRelativePath()
-                + service;
+                + service + (params != null ? params : ""); //$NON-NLS-1$
     }
 
     private void scheduleCheckStatus() {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportsUrls.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportsUrls.java
new file mode 100644
index 0000000..45712ce
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportsUrls.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.ui.uicommonweb;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+public final class ReportsUrls  extends JavaScriptObject {
+
+    protected ReportsUrls() {
+    }
+
+    public static native ReportsUrls instance() /*-{
+        return $wnd.engineReportsUrls;
+    }-*/;
+
+    public native String getReportUrl() /*-{
+        return this.reportUrl;
+    }-*/;
+
+    public native String getRightClickUrl() /*-{
+        return this.rightClickUrl;
+    }-*/;
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic4718bf7f734ea72d2494fc463a87cb7675df0c4
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <aw...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to