/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.login.internal; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import de.rcenvironment.core.authentication.AuthenticationService; import de.rcenvironment.core.configuration.ConfigurationService; import de.rcenvironment.core.login.AbstractLogin; import de.rcenvironment.core.notification.DistributedNotificationService; import de.rcenvironment.core.notification.NotificationService; import de.rcenvironment.core.utils.common.ServiceUtils; /** * Class handling services used this {@link Bundle}. The services are injected then provided by getters. This kind of workaround is needed * because the class {@link AbstractLogin} can not get the service injected directly because it is abstract and thus can not be * instantiated. But this is a prerequisite for declarative service components. * * @author Doreen Seider * @author Tobias Menden */ public class ServiceHandler { private static String bundleSymbolicName; private static AuthenticationService nullAuthenticationService = ServiceUtils.createFailingServiceProxy(AuthenticationService.class); private static DistributedNotificationService nullNotificationService = ServiceUtils.createFailingServiceProxy(DistributedNotificationService.class); private static ConfigurationService nullConfigurationService = ServiceUtils.createFailingServiceProxy(ConfigurationService.class); private static AuthenticationService authenticationService = nullAuthenticationService; private static DistributedNotificationService notificationService = nullNotificationService; private static ConfigurationService configurationService = nullConfigurationService; private static final Log LOGGER = LogFactory.getLog(ServiceHandler.class); /** * Activation method called by OSGi. Sets the bundle symbolic name. * * @param context of the Bundle */ public void activate(BundleContext context) { bundleSymbolicName = context.getBundle().getSymbolicName(); // LoginConfiguration loginConfiguration = // configurationService.getConfiguration(bundleSymbolicName, LoginConfiguration.class); // tries to automatically log in new SingleUserAutoLogin().login(); notificationService.send(AbstractLogin.LOGIN_NOTIFICATION_ID, "Anonymouslogin"); //$NON-NLS-1$ LOGGER.debug("Using anonymous/default login"); } /** * Deactivation method called by OSGi. Unregisters the publisher. * * @param context of the Bundle */ public void deactivate(BundleContext context) { notificationService.removePublisher(AbstractLogin.LOGIN_NOTIFICATION_ID); } /** * Bind the ConfigurationService of the LoginConfiguration to configurationService. * * @param newConfigurationService The {@link ConfigurationService} to bind. */ public void bindConfigurationService(ConfigurationService newConfigurationService) { configurationService = newConfigurationService; } /** * * Bind the AuthenticationService to authenticationService. * * @param newAuthenticationService The {@link AuthenticationService} to bind. */ public void bindAuthenticationService(AuthenticationService newAuthenticationService) { authenticationService = newAuthenticationService; } /** * Bind the AuthenticationService to authenticationService. * * @param newNotificationService The {@link NotificationService} to bind. */ public void bindNotificationService(DistributedNotificationService newNotificationService) { notificationService = newNotificationService; } /** * Unbind the {@link NotificationService}. * * @param oldConfigurationService The {@link ConfigurationService} to unbind. */ public void unbindConfigurationService(ConfigurationService oldConfigurationService) { configurationService = nullConfigurationService; } /** * Unbind the {@link AuthenticationService}. * * @param oldAuthenticationService The {@link AuthenticationService} to unbind. */ public void unbindAuthenticationService(AuthenticationService oldAuthenticationService) { authenticationService = nullAuthenticationService; } /** * Unbind the {@link NotificationService}. * * @param oldNotificationService The {@link NotificationService} to unbind. */ protected void unbindNotificationService(DistributedNotificationService oldNotificationService) { notificationService = nullNotificationService; } public static String getBundleSymbolicName() { return bundleSymbolicName; } public static ConfigurationService getConfigurationService() { return configurationService; } public static AuthenticationService getAuthenticationService() { return authenticationService; } public static DistributedNotificationService getNotificationService() { return notificationService; } }