Martin Betak has uploaded a new change for review. Change subject: frontend: Pass JSESSIONID in VV file ......................................................................
frontend: Pass JSESSIONID in VV file Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=975730 Change-Id: Id5c6d2c91b99240527760b57a6079b5f986aff5b Signed-off-by: Martin Betak <mbe...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java R frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/EngineSessionTimeoutData.java R frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionAcquired.java R frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionManager.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/system/BaseApplicationInit.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpiceNative.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVncNative.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/restapi/RestApiSessionIdAware.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/system/ApplicationInit.java M frontend/webadmin/modules/webadmin/exclude-filters.xml M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PluginModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/PluginEventHandler.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/system/ApplicationInit.java 18 files changed, 154 insertions(+), 82 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/33770/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java index 641aec3..dddefa2 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java @@ -6,6 +6,7 @@ import org.ovirt.engine.ui.common.CommonApplicationTemplates; import org.ovirt.engine.ui.common.auth.CurrentUser; import org.ovirt.engine.ui.common.auth.LoggedInGatekeeper; +import org.ovirt.engine.ui.common.restapi.RestApiSessionManager; import org.ovirt.engine.ui.common.system.ApplicationFocusManager; import org.ovirt.engine.ui.common.system.AsyncCallFailureHandler; import org.ovirt.engine.ui.common.system.ClientStorage; @@ -80,6 +81,7 @@ bind(VdcOperationManager.class).in(Singleton.class); bind(OperationProcessor.class).in(Singleton.class); bind(CommunicationProvider.class).to(GWTRPCCommunicationProvider.class).in(Singleton.class); + bind(RestApiSessionManager.class).in(Singleton.class); } protected void bindResourceConfiguration( diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/EngineSessionTimeoutData.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/EngineSessionTimeoutData.java similarity index 89% rename from frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/EngineSessionTimeoutData.java rename to frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/EngineSessionTimeoutData.java index 92a3f35..4ab00e0 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/EngineSessionTimeoutData.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/EngineSessionTimeoutData.java @@ -1,4 +1,4 @@ -package org.ovirt.engine.ui.webadmin.plugin.restapi; +package org.ovirt.engine.ui.common.restapi; import com.google.gwt.core.client.JavaScriptObject; diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionAcquired.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionAcquired.java similarity index 80% rename from frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionAcquired.java rename to frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionAcquired.java index 24cc929..6d254c8 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionAcquired.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionAcquired.java @@ -1,4 +1,4 @@ -package org.ovirt.engine.ui.webadmin.plugin.restapi; +package org.ovirt.engine.ui.common.restapi; import com.gwtplatform.dispatch.annotation.GenEvent; diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionManager.java similarity index 98% rename from frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java rename to frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionManager.java index 99603f6..120acc3 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/restapi/RestApiSessionManager.java @@ -1,4 +1,4 @@ -package org.ovirt.engine.ui.webadmin.plugin.restapi; +package org.ovirt.engine.ui.common.restapi; import java.util.logging.Level; import java.util.logging.Logger; 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 bef4a7d..01f5d3b 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 @@ -5,11 +5,14 @@ import org.ovirt.engine.ui.common.auth.CurrentUser; import org.ovirt.engine.ui.common.auth.CurrentUser.LogoutHandler; import org.ovirt.engine.ui.common.auth.SSOTokenData; +import org.ovirt.engine.ui.common.restapi.EngineSessionTimeoutData; +import org.ovirt.engine.ui.common.restapi.RestApiSessionManager; import org.ovirt.engine.ui.common.uicommon.FrontendEventsHandlerImpl; import org.ovirt.engine.ui.common.uicommon.FrontendFailureEventListener; import org.ovirt.engine.ui.common.uicommon.model.CommonModelManager; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.FrontendLoginHandler; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.frontend.communication.SSOTokenChangeEvent; import org.ovirt.engine.ui.uicommonweb.ITypeResolver; @@ -35,6 +38,7 @@ */ public abstract class BaseApplicationInit<T extends LoginModel> implements Bootstrapper, LogoutHandler { + protected final RestApiSessionManager restApiSessionManager; private final ITypeResolver typeResolver; private final FrontendEventsHandlerImpl frontendEventsHandler; protected final FrontendFailureEventListener frontendFailureEventListener; @@ -50,12 +54,13 @@ private final LockInteractionManager lockInteractionManager; public BaseApplicationInit(ITypeResolver typeResolver, - FrontendEventsHandlerImpl frontendEventsHandler, - FrontendFailureEventListener frontendFailureEventListener, - CurrentUser user, EventBus eventBus, - Provider<T> loginModelProvider, - LockInteractionManager lockInteractionManager, - Frontend frontend, CurrentUserRole currentUserRole) { + FrontendEventsHandlerImpl frontendEventsHandler, + FrontendFailureEventListener frontendFailureEventListener, + CurrentUser user, EventBus eventBus, + Provider<T> loginModelProvider, + LockInteractionManager lockInteractionManager, + Frontend frontend, CurrentUserRole currentUserRole, + RestApiSessionManager restApiSessionManager) { this.typeResolver = typeResolver; this.frontendEventsHandler = frontendEventsHandler; this.frontendFailureEventListener = frontendFailureEventListener; @@ -65,6 +70,7 @@ this.lockInteractionManager = lockInteractionManager; this.frontend = frontend; this.currentUserRole = currentUserRole; + this.restApiSessionManager = restApiSessionManager; } @Override @@ -81,6 +87,12 @@ AutoLoginData autoLoginData = AutoLoginData.instance(); if (autoLoginData != null) { handleAutoLogin(autoLoginData); + } + + // Check for Engine user session timeout configuration + EngineSessionTimeoutData engineSessionTimeoutData = EngineSessionTimeoutData.instance(); + if (engineSessionTimeoutData != null) { + restApiSessionManager.setSessionTimeout(engineSessionTimeoutData.getValue()); } } @@ -174,6 +186,27 @@ }); frontend.setFilterQueries(filterFrontendQueries()); + + // Configure REST API integration for availability of JSESSIONID + frontend.setLoginHandler(new FrontendLoginHandler() { + @Override + public void onLoginSuccess(final String userName, final String password, final String domain) { + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override + public void execute() { + final String domainToken = "@"; //$NON-NLS-1$ + restApiSessionManager.acquireSession( + userName.contains(domainToken) ? userName : userName + domainToken + domain, + password); + } + }); + } + + @Override + public void onLogout() { + restApiSessionManager.releaseSession(); + } + }); } /** @@ -203,6 +236,14 @@ SSOTokenChangeEvent.fire(eventBus, SSOTokenData.instance().getToken()); // Indicate that the user should be logged in automatically user.setAutoLogin(true); + + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override + public void execute() { + // Assume the REST API session has been acquired and is still active + restApiSessionManager.reuseSession(); + } + }); } } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java index 8d72378..4ba735e 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java @@ -6,6 +6,8 @@ public class SpiceNativeImpl extends AbstractSpice implements ISpiceNative { + private String sessionId; + public SpiceNativeImpl() { super(); } @@ -81,6 +83,10 @@ configBuilder.append("\nsecure-channels=").append(formatSecureChannels(getSslChanels())); //$NON-NLS-1$ } + if (!StringHelper.isNullOrEmpty(sessionId)) { + configBuilder.append("\njsessionid=").append(sessionId); //$NON-NLS-1$ + } + ConsoleModel.makeConsoleConfigRequest("console.vv", "application/x-virt-viewer; charset=UTF-8", configBuilder.toString()); //$NON-NLS-1$ $NON-NLS-2$ } @@ -93,4 +99,8 @@ : sslChanels.replace(',', ';'); } + @Override + public void setRestApiSessionId(String sessionId) { + this.sessionId = sessionId; + } } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java index 312ba10..fd57243 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java @@ -1,6 +1,8 @@ package org.ovirt.engine.ui.common.uicommon; +import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; +import org.ovirt.engine.ui.common.restapi.RestApiSessionAcquiredEvent; import org.ovirt.engine.ui.uicommonweb.Configurator; import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; import org.ovirt.engine.ui.uicommonweb.ConsoleUtils; @@ -16,6 +18,7 @@ import org.ovirt.engine.ui.uicommonweb.models.vms.ISpiceNative; import org.ovirt.engine.ui.uicommonweb.models.vms.ISpicePlugin; import org.ovirt.engine.ui.uicommonweb.models.vms.IVncNative; +import org.ovirt.engine.ui.uicommonweb.restapi.RestApiSessionIdAware; public class UiCommonDefaultTypeResolver implements ITypeResolver { @@ -26,18 +29,24 @@ private final ConsoleUtils consoleUtils; private final ErrorPopupManager errorPopupManager; private CurrentUserRole currentUserRole; + private final EventBus eventBus; + + private ISpiceNative spiceNative; + private IVncNative vncNative; @Inject public UiCommonDefaultTypeResolver(Configurator configurator, ILogger logger, ConsoleUtils consoleUtils, ErrorPopupManager errorPopupManager, ConsoleOptionsFrontendPersister consoleOptionsFrontendPersister, - CurrentUserRole currentUserRole) { + CurrentUserRole currentUserRole, + EventBus eventBus) { this.configurator = configurator; this.logger = logger; this.consoleOptionsFrontendPersister = consoleOptionsFrontendPersister; this.consoleUtils = consoleUtils; this.errorPopupManager = errorPopupManager; this.currentUserRole = currentUserRole; + this.eventBus = eventBus; } @SuppressWarnings("rawtypes") @@ -52,7 +61,7 @@ } else if (type == ISpicePlugin.class) { return new SpicePluginImpl(); } else if (type == ISpiceNative.class) { - return new SpiceNativeImpl(); + return getSpiceNative(); } else if (type == ISpiceHtml5.class) { return new SpiceHtml5Impl(); } else if (type == IRdpPlugin.class) { @@ -62,7 +71,7 @@ } else if (type == INoVnc.class) { return new NoVncImpl(); } else if (type == IVncNative.class) { - return new VncNativeImpl(); + return getVncNative(); } else if (type == ConsoleOptionsFrontendPersister.class) { return consoleOptionsFrontendPersister; } else if (type == ConsoleUtils.class) { @@ -76,4 +85,34 @@ throw new RuntimeException("UiCommon Resolver cannot resolve type: " + type); //$NON-NLS-1$ } + private ISpiceNative getSpiceNative() { + if (spiceNative != null) { + return spiceNative; + } + + spiceNative = new SpiceNativeImpl(); + attachRestApiSessionIdHandler(spiceNative); + + return spiceNative; + } + + private IVncNative getVncNative() { + if (vncNative != null) { + return vncNative; + } + + vncNative = new VncNativeImpl(); + attachRestApiSessionIdHandler(vncNative); + + return vncNative; + } + + private void attachRestApiSessionIdHandler(final RestApiSessionIdAware pluginImpl) { + eventBus.addHandler(RestApiSessionAcquiredEvent.getType(), new RestApiSessionAcquiredEvent.RestApiSessionAcquiredHandler() { + @Override + public void onRestApiSessionAcquired(RestApiSessionAcquiredEvent event) { + pluginImpl.setRestApiSessionId(event.getSessionId()); + } + }); + } } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java index 9d57e6e..4e67f0b 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java @@ -2,9 +2,11 @@ import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel; -import org.ovirt.engine.ui.uicommonweb.models.vms.IVnc; +import org.ovirt.engine.ui.uicommonweb.models.vms.IVncNative; -public class VncNativeImpl extends AbstractVnc implements IVnc { +public class VncNativeImpl extends AbstractVnc implements IVncNative { + + private String sessionId; @Override public void invokeClient() { @@ -29,7 +31,15 @@ configBuilder.append("\nsecure-attention=").append(getSecureAttentionMapping()); //$NON-NLS-1$ } + if (!StringHelper.isNullOrEmpty(sessionId)) { + configBuilder.append("\njsessionid=").append(sessionId); //$NON-NLS-1$ + } + ConsoleModel.makeConsoleConfigRequest("console.vv", "application/x-virt-viewer; charset=UTF-8", configBuilder.toString()); //$NON-NLS-1$ $NON-NLS-2$ } + @Override + public void setRestApiSessionId(String sessionId) { + this.sessionId = sessionId; + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java index f8626d9..20d400f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java @@ -105,7 +105,7 @@ @Override public VM getEntity() { - return (VM) super.getEntity(); + return super.getEntity(); } /** diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpiceNative.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpiceNative.java index 36ad136..ec007bc 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpiceNative.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpiceNative.java @@ -1,9 +1,11 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; +import org.ovirt.engine.ui.uicommonweb.restapi.RestApiSessionIdAware; + /** * Marking interface * */ -public interface ISpiceNative extends ISpice { +public interface ISpiceNative extends ISpice, RestApiSessionIdAware { } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVncNative.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVncNative.java index efe20d5..c2c8c18 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVncNative.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVncNative.java @@ -1,5 +1,7 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; -public interface IVncNative extends IVnc { +import org.ovirt.engine.ui.uicommonweb.restapi.RestApiSessionIdAware; + +public interface IVncNative extends IVnc, RestApiSessionIdAware { } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java index 7550b2d..b76d378 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java @@ -54,18 +54,21 @@ public class SpiceConsoleModel extends ConsoleModel implements IFrontendMultipleQueryAsyncCallback { - public enum ClientConsoleMode { Native, Plugin, Auto, Html5 } + + public enum ClientConsoleMode { Native, Plugin, Auto, Html5;} public static EventDefinition spiceDisconnectedEventDefinition; + public static EventDefinition spiceConnectedEventDefinition; public static EventDefinition spiceMenuItemSelectedEventDefinition; public static EventDefinition usbAutoShareChangedEventDefinition; public static EventDefinition wanColorDepthChangedEventDefinition; public static EventDefinition wanDisableEffectsChangeEventDefinition; - private SpiceMenu menu; + private ISpice privatespice; private ClientConsoleMode consoleMode; + private String restApiSessionId; private void setspice(ISpice value) { privatespice = value; @@ -330,7 +333,7 @@ } if (!success) { - boolean enableSpiceRootCertificateValidation = (Boolean) result.getReturnValues().get(3).getReturnValue(); + boolean enableSpiceRootCertificateValidation = result.getReturnValues().get(3).getReturnValue(); VdcQueryReturnValue caCertificateReturnValue = result.getReturnValues().get(5); // If only the caCertificate query failed - ignore failure (goto onSuccess) @@ -348,18 +351,18 @@ String cipherSuite = null; String spiceSecureChannels = null; - boolean isSSLEnabled = (Boolean) returnValues.get(0).getReturnValue(); + boolean isSSLEnabled = returnValues.get(0).getReturnValue(); if (isSSLEnabled) { - cipherSuite = (String) returnValues.get(1).getReturnValue(); - spiceSecureChannels = (String) returnValues.get(2).getReturnValue(); + cipherSuite = returnValues.get(1).getReturnValue(); + spiceSecureChannels = returnValues.get(2).getReturnValue(); } String certificateSubject = ""; //$NON-NLS-1$ String caCertificate = ""; //$NON-NLS-1$ - if ((Boolean) returnValues.get(3).getReturnValue()) { - certificateSubject = (String) returnValues.get(4).getReturnValue(); - caCertificate = (String) returnValues.get(5).getReturnValue(); + if (returnValues.get(3).getReturnValue()) { + certificateSubject = returnValues.get(4).getReturnValue(); + caCertificate = returnValues.get(5).getReturnValue(); } getspice().setHost(getEntity().getDisplayIp()); @@ -404,6 +407,10 @@ ConstantsManager.getInstance() .getConstants() .usbDevicesNoUsbdevicesClientSpiceUsbRedirectorNotInstalled() }); + + if (restApiSessionId != null) { + + } // Create menu. int id = 1; @@ -504,7 +511,7 @@ public void onSuccess(Object model, Object ReturnValue) { SpiceConsoleModel spiceConsoleModel = (SpiceConsoleModel) model; String address = - (String) ((VdcQueryReturnValue) ReturnValue).getReturnValue(); + ((VdcQueryReturnValue) ReturnValue).getReturnValue(); spiceConsoleModel.getspice().setHost(address); spiceConsoleModel.spiceConnect(); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/restapi/RestApiSessionIdAware.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/restapi/RestApiSessionIdAware.java new file mode 100644 index 0000000..fbdffa7 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/restapi/RestApiSessionIdAware.java @@ -0,0 +1,5 @@ +package org.ovirt.engine.ui.uicommonweb.restapi; + +public interface RestApiSessionIdAware { + void setRestApiSessionId(String sessionId); +} 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 77fc24f..4906427 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 @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.userportal.system; import org.ovirt.engine.ui.common.auth.CurrentUser; +import org.ovirt.engine.ui.common.restapi.RestApiSessionManager; import org.ovirt.engine.ui.common.system.BaseApplicationInit; import org.ovirt.engine.ui.common.system.LockInteractionManager; import org.ovirt.engine.ui.common.uicommon.ClientAgentType; @@ -45,9 +46,10 @@ UserPortalCurrentUserRole userRole, ConnectAutomaticallyManager connectAutomaticallyManager, ClientAgentType clientAgentType, - ApplicationDynamicMessages dynamicMessages) { + ApplicationDynamicMessages dynamicMessages, + RestApiSessionManager restApiSessionManager) { super(typeResolver, frontendEventsHandler, frontendFailureEventListener, - user, eventBus, loginModelProvider, lockInteractionManager, frontend, userRole); + user, eventBus, loginModelProvider, lockInteractionManager, frontend, userRole, restApiSessionManager); this.placeManager = placeManager; this.userRole = userRole; this.connectAutomaticallyManager = connectAutomaticallyManager; diff --git a/frontend/webadmin/modules/webadmin/exclude-filters.xml b/frontend/webadmin/modules/webadmin/exclude-filters.xml index 70c4645..2713624 100644 --- a/frontend/webadmin/modules/webadmin/exclude-filters.xml +++ b/frontend/webadmin/modules/webadmin/exclude-filters.xml @@ -18,7 +18,7 @@ UuF: Unused field (UUF_UNUSED_FIELD) --> <Match> - <Class name="org.ovirt.engine.ui.webadmin.plugin.restapi.RestApiSessionAcquired" /> + <Class name="org.ovirt.engine.ui.common.restapi.RestApiSessionAcquired" /> <Bug code="UuF"/> </Match> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PluginModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PluginModule.java index 3c8edc2..0c623dc 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PluginModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PluginModule.java @@ -3,7 +3,6 @@ import org.ovirt.engine.ui.webadmin.plugin.PluginEventHandler; import org.ovirt.engine.ui.webadmin.plugin.PluginManager; import org.ovirt.engine.ui.webadmin.plugin.api.PluginUiFunctions; -import org.ovirt.engine.ui.webadmin.plugin.restapi.RestApiSessionManager; import org.ovirt.engine.ui.webadmin.section.main.presenter.DynamicUrlContentTabPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.DynamicUrlContentTabProxyFactory; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.DynamicUrlContentPopupPresenterWidget; @@ -23,7 +22,6 @@ bind(PluginManager.class).asEagerSingleton(); bind(PluginEventHandler.class).asEagerSingleton(); bind(PluginUiFunctions.class).in(Singleton.class); - bind(RestApiSessionManager.class).in(Singleton.class); // Dynamic tab component bind(DynamicUrlContentTabPresenter.ViewDef.class).to(DynamicUrlContentTabView.class); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/PluginEventHandler.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/PluginEventHandler.java index c46e924..2aa5dd1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/PluginEventHandler.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/PluginEventHandler.java @@ -5,12 +5,12 @@ import org.ovirt.engine.ui.common.auth.CurrentUser; import org.ovirt.engine.ui.common.auth.UserLoginChangeEvent; import org.ovirt.engine.ui.common.auth.UserLoginChangeEvent.UserLoginChangeHandler; +import org.ovirt.engine.ui.common.restapi.RestApiSessionAcquiredEvent; import org.ovirt.engine.ui.webadmin.plugin.PluginManager.PluginInvocationCondition; import org.ovirt.engine.ui.webadmin.plugin.entity.EntityObject; import org.ovirt.engine.ui.webadmin.plugin.entity.SystemTreeItemObject; import org.ovirt.engine.ui.webadmin.plugin.jsni.JsArrayHelper; -import org.ovirt.engine.ui.webadmin.plugin.restapi.RestApiSessionAcquiredEvent; -import org.ovirt.engine.ui.webadmin.plugin.restapi.RestApiSessionAcquiredEvent.RestApiSessionAcquiredHandler; +import org.ovirt.engine.ui.common.restapi.RestApiSessionAcquiredEvent.RestApiSessionAcquiredHandler; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.ClusterSelectionChangeEvent; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.ClusterSelectionChangeEvent.ClusterSelectionChangeHandler; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.DataCenterSelectionChangeEvent; 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 af7c241..352fbeb 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 @@ -1,7 +1,6 @@ package org.ovirt.engine.ui.webadmin.system; import org.ovirt.engine.core.common.mode.ApplicationMode; -import org.ovirt.engine.ui.common.auth.AutoLoginData; import org.ovirt.engine.ui.common.auth.CurrentUser; import org.ovirt.engine.ui.common.system.BaseApplicationInit; import org.ovirt.engine.ui.common.system.LockInteractionManager; @@ -10,7 +9,6 @@ import org.ovirt.engine.ui.common.uicommon.model.CommonModelManager; import org.ovirt.engine.ui.common.uicommon.model.ModelInitializedEvent; import org.ovirt.engine.ui.frontend.Frontend; -import org.ovirt.engine.ui.frontend.FrontendLoginHandler; import org.ovirt.engine.ui.uicommonweb.ITypeResolver; import org.ovirt.engine.ui.uicommonweb.ReportInit; import org.ovirt.engine.ui.uicommonweb.auth.CurrentUserRole; @@ -20,12 +18,9 @@ import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages; -import org.ovirt.engine.ui.webadmin.plugin.restapi.EngineSessionTimeoutData; -import org.ovirt.engine.ui.webadmin.plugin.restapi.RestApiSessionManager; +import org.ovirt.engine.ui.common.restapi.RestApiSessionManager; import org.ovirt.engine.ui.webadmin.uimode.UiModeData; -import com.google.gwt.core.client.Scheduler; -import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.Window; import com.google.inject.Inject; @@ -35,7 +30,6 @@ public class ApplicationInit extends BaseApplicationInit<LoginModel> { private final PlaceManager placeManager; - private final RestApiSessionManager restApiSessionManager; private final ApplicationDynamicMessages dynamicMessages; @Inject @@ -52,9 +46,8 @@ ApplicationDynamicMessages dynamicMessages, CurrentUserRole currentUserRole) { super(typeResolver, frontendEventsHandler, frontendFailureEventListener, - user, eventBus, loginModelProvider, lockInteractionManager, frontend, currentUserRole); + user, eventBus, loginModelProvider, lockInteractionManager, frontend, currentUserRole, restApiSessionManager); this.placeManager = placeManager; - this.restApiSessionManager = restApiSessionManager; this.dynamicMessages = dynamicMessages; } @@ -68,12 +61,6 @@ UiModeData uiModeData = UiModeData.instance(); if (uiModeData != null) { handleUiMode(uiModeData); - } - - // Check for Engine user session timeout configuration - EngineSessionTimeoutData engineSessionTimeoutData = EngineSessionTimeoutData.instance(); - if (engineSessionTimeoutData != null) { - restApiSessionManager.setSessionTimeout(engineSessionTimeoutData.getValue()); } // Initiate transition to requested application place @@ -112,39 +99,6 @@ super.initFrontend(); ReportInit.getInstance().initHandlers(eventBus); - // Configure REST API integration for UI plugin infrastructure - frontend.setLoginHandler(new FrontendLoginHandler() { - @Override - public void onLoginSuccess(final String userName, final String password, final String domain) { - Scheduler.get().scheduleDeferred(new ScheduledCommand() { - @Override - public void execute() { - final String domainToken = "@"; //$NON-NLS-1$ - restApiSessionManager.acquireSession( - userName.contains(domainToken) ? userName : userName + domainToken + domain, - password); - } - }); - } - - @Override - public void onLogout() { - restApiSessionManager.releaseSession(); - } - }); - } - - @Override - protected void handleAutoLogin(AutoLoginData autoLoginData) { - super.handleAutoLogin(autoLoginData); - - Scheduler.get().scheduleDeferred(new ScheduledCommand() { - @Override - public void execute() { - // Assume the REST API session has been acquired and is still active - restApiSessionManager.reuseSession(); - } - }); } void handleUiMode(UiModeData uiModeData) { -- To view, visit http://gerrit.ovirt.org/33770 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id5c6d2c91b99240527760b57a6079b5f986aff5b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Betak <mbe...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches