package org.ovirt.engine.ui.common.uicommon;
import org.ovirt.engine.ui.uicommonweb.Configurator;
import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister;
import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
import org.ovirt.engine.ui.uicommonweb.DynamicMessages;
import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager;
import org.ovirt.engine.ui.uicommonweb.ILogger;
import org.ovirt.engine.ui.uicommonweb.ITimer;
import org.ovirt.engine.ui.uicommonweb.ITypeResolver;
import org.ovirt.engine.ui.uicommonweb.auth.CurrentUserRole;
import org.ovirt.engine.ui.uicommonweb.models.vms.INoVnc;
import org.ovirt.engine.ui.uicommonweb.models.vms.IRdpNative;
import org.ovirt.engine.ui.uicommonweb.models.vms.IRdpPlugin;
import org.ovirt.engine.ui.uicommonweb.models.vms.ISpiceHtml5;
import org.ovirt.engine.ui.uicommonweb.models.vms.ISpiceNative;
import org.ovirt.engine.ui.uicommonweb.models.vms.IVncNative;
import com.google.inject.Inject;
import com.google.inject.Provider;
public class UiCommonDefaultTypeResolver implements ITypeResolver {
private final Configurator configurator;
private final ILogger logger;
private final ConsoleOptionsFrontendPersister consoleOptionsFrontendPersister;
private final ConsoleUtils consoleUtils;
private final ErrorPopupManager errorPopupManager;
private final CurrentUserRole currentUserRole;
// we inject providers for the console impls since they
// contain state unique for each connect operation and thus
// new instance is required each time
private final Provider<ISpiceNative> spiceNativeProvider;
private final Provider<ISpiceHtml5> spiceHtml5Provider;
private final Provider<IRdpPlugin> rdpPluginProvider;
private final Provider<IRdpNative> rdpNativeProvider;
private final Provider<IVncNative> vncNativeProvider;
private final Provider<INoVnc> noVncProvider;
private final DynamicMessages dynamicMessages;
@Inject
public UiCommonDefaultTypeResolver(Configurator configurator, ILogger logger,
ConsoleUtils consoleUtils, ErrorPopupManager errorPopupManager,
ConsoleOptionsFrontendPersister consoleOptionsFrontendPersister,
CurrentUserRole currentUserRole,
Provider<ISpiceNative> spiceNativeProvider,
Provider<ISpiceHtml5> spiceHtml5Provider,
Provider<IRdpPlugin> rdpPluginProvider,
Provider<IRdpNative> rdpNativeProvider,
Provider<IVncNative> vncNativeProvider,
Provider<INoVnc> noVncProvider,
DynamicMessages dynamicMessages) {
this.configurator = configurator;
this.logger = logger;
this.consoleOptionsFrontendPersister = consoleOptionsFrontendPersister;
this.consoleUtils = consoleUtils;
this.errorPopupManager = errorPopupManager;
this.currentUserRole = currentUserRole;
this.spiceNativeProvider = spiceNativeProvider;
this.spiceHtml5Provider = spiceHtml5Provider;
this.rdpPluginProvider = rdpPluginProvider;
this.rdpNativeProvider = rdpNativeProvider;
this.vncNativeProvider = vncNativeProvider;
this.noVncProvider = noVncProvider;
this.dynamicMessages = dynamicMessages;
}
@SuppressWarnings("rawtypes")
@Override
public Object resolve(Class type) {
if (type == Configurator.class) {
return configurator;
} else if (type == ILogger.class) {
return logger;
} else if (type == ITimer.class) {
return new TimerImpl();
} else if (type == ISpiceNative.class) {
return spiceNativeProvider.get();
} else if (type == ISpiceHtml5.class) {
return spiceHtml5Provider.get();
} else if (type == IRdpPlugin.class) {
return rdpPluginProvider.get();
} else if (type == IRdpNative.class) {
return rdpNativeProvider.get();
} else if (type == INoVnc.class) {
return noVncProvider.get();
} else if (type == IVncNative.class) {
return vncNativeProvider.get();
} else if (type == ConsoleOptionsFrontendPersister.class) {
return consoleOptionsFrontendPersister;
} else if (type == ConsoleUtils.class) {
return consoleUtils;
} else if (type == ErrorPopupManager.class) {
return errorPopupManager;
} else if (type == CurrentUserRole.class) {
return currentUserRole;
} else if (type == DynamicMessages.class) {
return dynamicMessages;
}
throw new RuntimeException("UiCommon Resolver cannot resolve type: " + type); //$NON-NLS-1$
}
}