in server/container/guice/mailbox-postgres/src/main/java/org/apache/james/modules/mailbox/PostgresMailboxModule.java [105:190]
protected void configure() {
install(new PostgresCommonModule());
Multibinder<PostgresDataDefinition> postgresDataDefinitions = Multibinder.newSetBinder(binder(), PostgresDataDefinition.class);
postgresDataDefinitions.addBinding().toInstance(PostgresMailboxAggregateDataDefinition.MODULE);
install(new PostgresQuotaGuiceModule());
install(new PostgresMailboxQuotaModule());
bind(PostgresMailboxSessionMapperFactory.class).in(Scopes.SINGLETON);
bind(PostgresMailboxManager.class).in(Scopes.SINGLETON);
bind(NoMailboxPathLocker.class).in(Scopes.SINGLETON);
bind(StoreSubscriptionManager.class).in(Scopes.SINGLETON);
bind(UserRepositoryAuthenticator.class).in(Scopes.SINGLETON);
bind(UserRepositoryAuthorizator.class).in(Scopes.SINGLETON);
bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON);
bind(PostgresMessageId.Factory.class).in(Scopes.SINGLETON);
bind(PostgresThreadIdGuessingAlgorithm.class).in(Scopes.SINGLETON);
bind(ReIndexerImpl.class).in(Scopes.SINGLETON);
bind(SessionProviderImpl.class).in(Scopes.SINGLETON);
bind(StoreMessageIdManager.class).in(Scopes.SINGLETON);
bind(StoreRightManager.class).in(Scopes.SINGLETON);
bind(SubscriptionMapperFactory.class).to(PostgresMailboxSessionMapperFactory.class);
bind(MessageMapperFactory.class).to(PostgresMailboxSessionMapperFactory.class);
bind(MailboxMapperFactory.class).to(PostgresMailboxSessionMapperFactory.class);
bind(MailboxSessionMapperFactory.class).to(PostgresMailboxSessionMapperFactory.class);
bind(MessageId.Factory.class).to(PostgresMessageId.Factory.class);
bind(ThreadIdGuessingAlgorithm.class).to(PostgresThreadIdGuessingAlgorithm.class);
bind(SubscriptionManager.class).to(StoreSubscriptionManager.class);
bind(MailboxPathLocker.class).to(NoMailboxPathLocker.class);
bind(Authenticator.class).to(UserRepositoryAuthenticator.class);
bind(MailboxManager.class).to(PostgresMailboxManager.class);
bind(StoreMailboxManager.class).to(PostgresMailboxManager.class);
bind(SessionProvider.class).to(SessionProviderImpl.class);
bind(Authorizator.class).to(DelegationStoreAuthorizator.class);
bind(MailboxId.Factory.class).to(PostgresMailboxId.Factory.class);
bind(MailboxACLResolver.class).to(UnionMailboxACLResolver.class);
bind(MessageIdManager.class).to(StoreMessageIdManager.class);
bind(RightManager.class).to(StoreRightManager.class);
bind(AttachmentIdFactory.class).to(StringBackedAttachmentIdFactory.class);
bind(AttachmentManager.class).to(StoreAttachmentManager.class);
bind(AttachmentContentLoader.class).to(AttachmentManager.class);
bind(AttachmentMapperFactory.class).to(PostgresMailboxSessionMapperFactory.class);
bind(MailboxCounterCorrector.class).toInstance(MailboxCounterCorrector.DEFAULT);
bind(MessageParser.class).toInstance(new MessageParserImpl());
bind(AttachmentIdAssignationStrategy.class).to(AttachmentIdAssignationStrategy.Default.class);
bind(ReIndexer.class).to(ReIndexerImpl.class);
bind(MessageIdReIndexer.class).to(MessageIdReIndexerImpl.class);
bind(PostgresMessageDAO.class).in(Scopes.SINGLETON);
Multibinder.newSetBinder(binder(), MailboxManagerDefinition.class).addBinding().to(PostgresMailboxManagerDefinition.class);
Multibinder.newSetBinder(binder(), EventListener.GroupEventListener.class)
.addBinding()
.to(MailboxAnnotationListener.class);
Multibinder.newSetBinder(binder(), EventListener.GroupEventListener.class)
.addBinding()
.to(MailboxSubscriptionListener.class);
Multibinder.newSetBinder(binder(), EventListener.ReactiveGroupEventListener.class)
.addBinding().to(DeleteMessageListener.class);
Multibinder.newSetBinder(binder(), DeleteMessageListener.DeletionCallback.class);
bind(MailboxManager.class).annotatedWith(Names.named(MAILBOXMANAGER_NAME)).to(MailboxManager.class);
bind(MailboxManagerConfiguration.class).toInstance(MailboxManagerConfiguration.DEFAULT);
Multibinder<UsernameChangeTaskStep> usernameChangeTaskStepMultibinder = Multibinder.newSetBinder(binder(), UsernameChangeTaskStep.class);
usernameChangeTaskStepMultibinder.addBinding().to(MailboxUsernameChangeTaskStep.class);
usernameChangeTaskStepMultibinder.addBinding().to(ACLUsernameChangeTaskStep.class);
usernameChangeTaskStepMultibinder.addBinding().to(QuotaUsernameChangeTaskStep.class);
Multibinder<DeleteUserDataTaskStep> deleteUserDataTaskStepMultibinder = Multibinder.newSetBinder(binder(), DeleteUserDataTaskStep.class);
deleteUserDataTaskStepMultibinder.addBinding().to(MailboxUserDeletionTaskStep.class);
Multibinder<BlobReferenceSource> blobReferenceSourceMultibinder = Multibinder.newSetBinder(binder(), BlobReferenceSource.class);
blobReferenceSourceMultibinder.addBinding().to(PostgresMessageBlobReferenceSource.class);
blobReferenceSourceMultibinder.addBinding().to(PostgresAttachmentBlobReferenceSource.class);
Multibinder.newSetBinder(binder(), new TypeLiteral<EventDTOModule<? extends Event, ? extends EventDTO>>() {})
.addBinding().toInstance(ACLModule.ACL_UPDATE);
}