
com.hivemq.extensions.ioc.ExtensionModule Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hivemq-community-edition-embedded Show documentation
Show all versions of hivemq-community-edition-embedded Show documentation
HiveMQ CE is a Java-based open source MQTT broker that fully supports MQTT 3.x and MQTT 5
The newest version!
/*
* Copyright 2019-present HiveMQ GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hivemq.extensions.ioc;
import com.hivemq.bootstrap.ioc.SingletonModule;
import com.hivemq.bootstrap.ioc.lazysingleton.LazySingleton;
import com.hivemq.extension.sdk.api.client.parameter.ServerInformation;
import com.hivemq.extension.sdk.api.events.EventRegistry;
import com.hivemq.extension.sdk.api.services.admin.AdminService;
import com.hivemq.extension.sdk.api.services.auth.SecurityRegistry;
import com.hivemq.extension.sdk.api.services.builder.PublishBuilder;
import com.hivemq.extension.sdk.api.services.builder.RetainedPublishBuilder;
import com.hivemq.extension.sdk.api.services.builder.TopicPermissionBuilder;
import com.hivemq.extension.sdk.api.services.builder.TopicSubscriptionBuilder;
import com.hivemq.extension.sdk.api.services.builder.WillPublishBuilder;
import com.hivemq.extension.sdk.api.services.cluster.ClusterService;
import com.hivemq.extension.sdk.api.services.interceptor.GlobalInterceptorRegistry;
import com.hivemq.extension.sdk.api.services.intializer.InitializerRegistry;
import com.hivemq.extension.sdk.api.services.publish.PublishService;
import com.hivemq.extension.sdk.api.services.publish.RetainedMessageStore;
import com.hivemq.extension.sdk.api.services.session.ClientService;
import com.hivemq.extension.sdk.api.services.subscription.SubscriptionStore;
import com.hivemq.extensions.ExtensionBootstrap;
import com.hivemq.extensions.ExtensionBootstrapImpl;
import com.hivemq.extensions.client.parameter.ServerInformationImpl;
import com.hivemq.extensions.events.EventRegistryImpl;
import com.hivemq.extensions.events.LifecycleEventListeners;
import com.hivemq.extensions.events.LifecycleEventListenersImpl;
import com.hivemq.extensions.executor.PluginOutPutAsyncer;
import com.hivemq.extensions.executor.PluginOutputAsyncerImpl;
import com.hivemq.extensions.executor.PluginTaskExecutorService;
import com.hivemq.extensions.executor.PluginTaskExecutorServiceImpl;
import com.hivemq.extensions.handler.PluginAuthenticatorService;
import com.hivemq.extensions.handler.PluginAuthenticatorServiceImpl;
import com.hivemq.extensions.handler.PluginAuthorizerService;
import com.hivemq.extensions.handler.PluginAuthorizerServiceImpl;
import com.hivemq.extensions.ioc.annotation.PluginStartStop;
import com.hivemq.extensions.ioc.annotation.PluginTaskQueue;
import com.hivemq.extensions.loader.ExtensionBuilderDependencies;
import com.hivemq.extensions.loader.ExtensionBuilderDependenciesImpl;
import com.hivemq.extensions.loader.ExtensionLifecycleHandler;
import com.hivemq.extensions.loader.ExtensionLifecycleHandlerImpl;
import com.hivemq.extensions.loader.ExtensionLoader;
import com.hivemq.extensions.loader.ExtensionLoaderImpl;
import com.hivemq.extensions.loader.ExtensionServicesDependencies;
import com.hivemq.extensions.loader.ExtensionServicesDependenciesImpl;
import com.hivemq.extensions.loader.ExtensionStaticInitializer;
import com.hivemq.extensions.loader.ExtensionStaticInitializerImpl;
import com.hivemq.extensions.loader.HiveMQExtensionFactory;
import com.hivemq.extensions.loader.HiveMQExtensionFactoryImpl;
import com.hivemq.extensions.services.admin.AdminServiceImpl;
import com.hivemq.extensions.services.auth.Authenticators;
import com.hivemq.extensions.services.auth.AuthenticatorsImpl;
import com.hivemq.extensions.services.auth.Authorizers;
import com.hivemq.extensions.services.auth.AuthorizersImpl;
import com.hivemq.extensions.services.auth.SecurityRegistryImpl;
import com.hivemq.extensions.services.builder.PublishBuilderImpl;
import com.hivemq.extensions.services.builder.RetainedPublishBuilderImpl;
import com.hivemq.extensions.services.builder.TopicPermissionBuilderImpl;
import com.hivemq.extensions.services.builder.TopicSubscriptionBuilderImpl;
import com.hivemq.extensions.services.builder.WillPublishBuilderImpl;
import com.hivemq.extensions.services.cluster.ClusterServiceNoopImpl;
import com.hivemq.extensions.services.initializer.InitializerRegistryImpl;
import com.hivemq.extensions.services.initializer.Initializers;
import com.hivemq.extensions.services.initializer.InitializersImpl;
import com.hivemq.extensions.services.interceptor.GlobalInterceptorRegistryImpl;
import com.hivemq.extensions.services.interceptor.Interceptors;
import com.hivemq.extensions.services.interceptor.InterceptorsImpl;
import com.hivemq.extensions.services.publish.PublishServiceImpl;
import com.hivemq.extensions.services.publish.RetainedMessageStoreImpl;
import com.hivemq.extensions.services.session.ClientServiceImpl;
import com.hivemq.extensions.services.subscription.SubscriptionStoreImpl;
import javax.inject.Singleton;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicLong;
/**
* @author Georg Held
*/
public class ExtensionModule extends SingletonModule> {
public ExtensionModule() {
super(ExtensionModule.class);
}
@Override
protected void configure() {
bind(ExtensionBootstrap.class).to(ExtensionBootstrapImpl.class);
bind(ExtensionStaticInitializer.class).to(ExtensionStaticInitializerImpl.class);
bind(HiveMQExtensionFactory.class).to(HiveMQExtensionFactoryImpl.class);
bind(ExtensionLoader.class).to(ExtensionLoaderImpl.class);
bind(ExtensionServicesDependencies.class).to(ExtensionServicesDependenciesImpl.class);
bind(ExtensionLifecycleHandler.class).to(ExtensionLifecycleHandlerImpl.class);
bind(Authenticators.class).to(AuthenticatorsImpl.class);
bind(Authorizers.class).to(AuthorizersImpl.class);
bind(SecurityRegistry.class).to(SecurityRegistryImpl.class);
bind(ExecutorService.class).annotatedWith(PluginStartStop.class)
.toProvider(ExtensionStartStopExecutorProvider.class)
.in(LazySingleton.class);
bind(PluginTaskExecutorService.class).to(PluginTaskExecutorServiceImpl.class);
bind(PluginOutPutAsyncer.class).to(PluginOutputAsyncerImpl.class);
bind(InitializerRegistry.class).to(InitializerRegistryImpl.class);
bind(Initializers.class).to(InitializersImpl.class).in(LazySingleton.class);
bind(ServerInformation.class).to(ServerInformationImpl.class).in(LazySingleton.class);
bind(AtomicLong.class).annotatedWith(PluginTaskQueue.class).toInstance(new AtomicLong(0));
bind(RetainedMessageStore.class).to(RetainedMessageStoreImpl.class).in(LazySingleton.class);
bind(ClientService.class).to(ClientServiceImpl.class).in(LazySingleton.class);
bind(RetainedPublishBuilder.class).to(RetainedPublishBuilderImpl.class);
bind(SubscriptionStore.class).to(SubscriptionStoreImpl.class).in(LazySingleton.class);
bind(TopicSubscriptionBuilder.class).to(TopicSubscriptionBuilderImpl.class);
bind(TopicPermissionBuilder.class).to(TopicPermissionBuilderImpl.class);
bind(ExtensionBuilderDependencies.class).to(ExtensionBuilderDependenciesImpl.class);
bind(PublishService.class).to(PublishServiceImpl.class).in(LazySingleton.class);
bind(PublishBuilder.class).to(PublishBuilderImpl.class);
bind(WillPublishBuilder.class).to(WillPublishBuilderImpl.class);
bind(EventRegistry.class).to(EventRegistryImpl.class).in(Singleton.class);
bind(LifecycleEventListeners.class).to(LifecycleEventListenersImpl.class).in(LazySingleton.class);
bind(ClusterService.class).to(ClusterServiceNoopImpl.class).in(LazySingleton.class);
bind(PluginAuthorizerService.class).to(PluginAuthorizerServiceImpl.class);
bind(PluginAuthenticatorService.class).to(PluginAuthenticatorServiceImpl.class);
bind(GlobalInterceptorRegistry.class).to(GlobalInterceptorRegistryImpl.class).in(LazySingleton.class);
bind(Interceptors.class).to(InterceptorsImpl.class).in(LazySingleton.class);
bind(AdminService.class).to(AdminServiceImpl.class).in(LazySingleton.class);
}
}