Search in sources :

Example 1 with ClientSessionLifecycleHandlerImpl

use of com.canoo.dp.impl.server.client.ClientSessionLifecycleHandlerImpl in project dolphin-platform by canoo.

the class DefaultDolphinEventBusTest method create.

private DefaultDolphinEventBus create(final DolphinContext context) {
    DefaultDolphinEventBus eventBus = new DefaultDolphinEventBus();
    eventBus.init(new DolphinContextProvider() {

        @Override
        public DolphinContext getContext(ClientSession clientSession) {
            return getContextById(clientSession.getId());
        }

        @Override
        public DolphinContext getContextById(String clientSessionId) {
            if (context != null && context.getId().equals(clientSessionId)) {
                return context;
            }
            return null;
        }

        @Override
        public DolphinContext getCurrentDolphinContext() {
            return context;
        }
    }, new ClientSessionLifecycleHandlerImpl());
    return eventBus;
}
Also used : DolphinContext(com.canoo.dp.impl.server.context.DolphinContext) ClientSessionLifecycleHandlerImpl(com.canoo.dp.impl.server.client.ClientSessionLifecycleHandlerImpl) DolphinContextProvider(com.canoo.dp.impl.server.context.DolphinContextProvider) ClientSession(com.canoo.platform.server.client.ClientSession)

Example 2 with ClientSessionLifecycleHandlerImpl

use of com.canoo.dp.impl.server.client.ClientSessionLifecycleHandlerImpl in project dolphin-platform by canoo.

the class DolphinPlatformSpringTestBootstrap method createEventBus.

/**
 * Method to create a spring managed {@link RemotingEventBus} instance in singleton scope.
 *
 * @return the instance
 */
@Bean(name = "dolphinEventBus")
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
protected RemotingEventBus createEventBus(final TestConfiguration testConfiguration) {
    Assert.requireNonNull(testConfiguration, "testConfiguration");
    final DolphinContextProvider contextProvider = new DolphinContextProvider() {

        @Override
        public DolphinContext getContext(ClientSession clientSession) {
            return getCurrentDolphinContext();
        }

        @Override
        public DolphinContext getContextById(String clientSessionId) {
            return getCurrentDolphinContext();
        }

        @Override
        public DolphinContext getCurrentDolphinContext() {
            return testConfiguration.getDolphinTestContext();
        }
    };
    final DefaultDolphinEventBus eventBus = new DefaultDolphinEventBus();
    eventBus.init(contextProvider, new ClientSessionLifecycleHandlerImpl());
    return eventBus;
}
Also used : ClientSessionLifecycleHandlerImpl(com.canoo.dp.impl.server.client.ClientSessionLifecycleHandlerImpl) DolphinContextProvider(com.canoo.dp.impl.server.context.DolphinContextProvider) DefaultDolphinEventBus(com.canoo.dp.impl.server.event.DefaultDolphinEventBus) ClientSession(com.canoo.platform.server.client.ClientSession) Scope(org.springframework.context.annotation.Scope) Bean(org.springframework.context.annotation.Bean)

Example 3 with ClientSessionLifecycleHandlerImpl

use of com.canoo.dp.impl.server.client.ClientSessionLifecycleHandlerImpl in project dolphin-platform by canoo.

the class ClientSessionModule method initialize.

@Override
public void initialize(final ServerCoreComponents coreComponents) throws ModuleInitializationException {
    Assert.requireNonNull(coreComponents, "coreComponents");
    final ServletContext servletContext = coreComponents.getInstance(ServletContext.class);
    final PlatformConfiguration configuration = coreComponents.getConfiguration();
    final ClasspathScanner classpathScanner = coreComponents.getInstance(ClasspathScanner.class);
    final ManagedBeanFactory beanFactory = coreComponents.getInstance(ManagedBeanFactory.class);
    final ClientSessionLifecycleHandlerImpl lifecycleHandler = new ClientSessionLifecycleHandlerImpl();
    coreComponents.provideInstance(ClientSessionLifecycleHandler.class, lifecycleHandler);
    coreComponents.provideInstance(ClientSessionProvider.class, new ClientSessionProvider() {

        @Override
        public ClientSession getCurrentClientSession() {
            return lifecycleHandler.getCurrentDolphinSession();
        }
    });
    final ClientSessionManager clientSessionManager = new ClientSessionManager(configuration, lifecycleHandler);
    final List<String> endpointList = configuration.getListProperty(ID_FILTER_URL_MAPPINGS, ID_FILTER_URL_MAPPINGS_DEFAULT_VALUE);
    final String[] endpoints = endpointList.toArray(new String[endpointList.size()]);
    final ClientSessionFilter filter = new ClientSessionFilter(clientSessionManager);
    final FilterRegistration.Dynamic createdFilter = servletContext.addFilter(DOLPHIN_CLIENT_ID_FILTER_NAME, filter);
    createdFilter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, endpoints);
    final HttpSessionCleanerListener sessionCleaner = new HttpSessionCleanerListener(clientSessionManager);
    servletContext.addListener(sessionCleaner);
    final Set<Class<?>> listeners = classpathScanner.getTypesAnnotatedWith(ServerListener.class);
    for (final Class<?> listenerClass : listeners) {
        if (ClientSessionListener.class.isAssignableFrom(listenerClass)) {
            final ClientSessionListener listener = (ClientSessionListener) beanFactory.createDependentInstance(listenerClass);
            lifecycleHandler.addSessionDestroyedListener(s -> listener.sessionDestroyed(s));
            lifecycleHandler.addSessionCreatedListener(s -> listener.sessionCreated(s));
        }
    }
    final ClientSessionMutextHolder mutextHolder = new ClientSessionMutextHolder();
    lifecycleHandler.addSessionDestroyedListener(s -> mutextHolder.sessionDestroyed(s));
    lifecycleHandler.addSessionCreatedListener(s -> mutextHolder.sessionCreated(s));
}
Also used : ClientSessionManager(com.canoo.dp.impl.server.client.ClientSessionManager) PlatformConfiguration(com.canoo.platform.core.PlatformConfiguration) ClientSessionLifecycleHandlerImpl(com.canoo.dp.impl.server.client.ClientSessionLifecycleHandlerImpl) HttpSessionCleanerListener(com.canoo.dp.impl.server.client.HttpSessionCleanerListener) ClasspathScanner(com.canoo.platform.server.spi.components.ClasspathScanner) ClientSessionProvider(com.canoo.dp.impl.server.client.ClientSessionProvider) ClientSession(com.canoo.platform.server.client.ClientSession) ManagedBeanFactory(com.canoo.platform.server.spi.components.ManagedBeanFactory) ServletContext(javax.servlet.ServletContext) ClientSessionListener(com.canoo.platform.server.client.ClientSessionListener) DispatcherType(javax.servlet.DispatcherType) ClientSessionFilter(com.canoo.dp.impl.server.client.ClientSessionFilter) FilterRegistration(javax.servlet.FilterRegistration) ClientSessionMutextHolder(com.canoo.dp.impl.server.client.ClientSessionMutextHolder)

Aggregations

ClientSessionLifecycleHandlerImpl (com.canoo.dp.impl.server.client.ClientSessionLifecycleHandlerImpl)3 ClientSession (com.canoo.platform.server.client.ClientSession)3 DolphinContextProvider (com.canoo.dp.impl.server.context.DolphinContextProvider)2 ClientSessionFilter (com.canoo.dp.impl.server.client.ClientSessionFilter)1 ClientSessionManager (com.canoo.dp.impl.server.client.ClientSessionManager)1 ClientSessionMutextHolder (com.canoo.dp.impl.server.client.ClientSessionMutextHolder)1 ClientSessionProvider (com.canoo.dp.impl.server.client.ClientSessionProvider)1 HttpSessionCleanerListener (com.canoo.dp.impl.server.client.HttpSessionCleanerListener)1 DolphinContext (com.canoo.dp.impl.server.context.DolphinContext)1 DefaultDolphinEventBus (com.canoo.dp.impl.server.event.DefaultDolphinEventBus)1 PlatformConfiguration (com.canoo.platform.core.PlatformConfiguration)1 ClientSessionListener (com.canoo.platform.server.client.ClientSessionListener)1 ClasspathScanner (com.canoo.platform.server.spi.components.ClasspathScanner)1 ManagedBeanFactory (com.canoo.platform.server.spi.components.ManagedBeanFactory)1 DispatcherType (javax.servlet.DispatcherType)1 FilterRegistration (javax.servlet.FilterRegistration)1 ServletContext (javax.servlet.ServletContext)1 Bean (org.springframework.context.annotation.Bean)1 Scope (org.springframework.context.annotation.Scope)1