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