protected void configure()

in server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/rfc8621/RFC8621MethodsModule.java [127:196]


    protected void configure() {
        bind(NamespaceFactory.class).to(DefaultNamespaceFactory.class);
        bind(ZoneIdProvider.class).to(SystemZoneIdProvider.class);

        bind(EmailSubmissionSetMethod.class).in(Scopes.SINGLETON);
        bind(MDNSendMethod.class).in(Scopes.SINGLETON);

        bind(DefaultWebPushClient.class).in(Scopes.SINGLETON);
        bind(WebPushClient.class).to(DefaultWebPushClient.class);

        Multibinder<Method> methods = Multibinder.newSetBinder(binder(), Method.class);
        methods.addBinding().to(CoreEchoMethod.class);
        methods.addBinding().to(EmailChangesMethod.class);
        methods.addBinding().to(EmailImportMethod.class);
        methods.addBinding().to(EmailGetMethod.class);
        methods.addBinding().to(EmailQueryMethod.class);
        methods.addBinding().to(EmailParseMethod.class);
        methods.addBinding().to(EmailSetMethod.class);
        methods.addBinding().to(EmailSubmissionSetMethod.class);
        methods.addBinding().to(IdentityGetMethod.class);
        methods.addBinding().to(IdentitySetMethod.class);
        methods.addBinding().to(IdentityChangesMethod.class);
        methods.addBinding().to(MailboxChangesMethod.class);
        methods.addBinding().to(MailboxGetMethod.class);
        methods.addBinding().to(MailboxQueryMethod.class);
        methods.addBinding().to(MailboxSetMethod.class);
        methods.addBinding().to(MDNParseMethod.class);
        methods.addBinding().to(MDNSendMethod.class);
        methods.addBinding().to(PushSubscriptionGetMethod.class);
        methods.addBinding().to(PushSubscriptionSetMethod.class);
        methods.addBinding().to(QuotaChangesMethod.class);
        methods.addBinding().to(QuotaGetMethod.class);
        methods.addBinding().to(QuotaQueryMethod.class);
        methods.addBinding().to(ThreadChangesMethod.class);
        methods.addBinding().to(ThreadGetMethod.class);
        methods.addBinding().to(VacationResponseGetMethod.class);
        methods.addBinding().to(VacationResponseSetMethod.class);
        methods.addBinding().to(DelegatedAccountGetMethod.class);
        methods.addBinding().to(DelegateGetMethod.class);
        methods.addBinding().to(DelegateSetMethod.class);
        methods.addBinding().to(DelegatedAccountSetMethod.class);
        methods.addBinding().to(MailboxQueryChangesMethod.class);

        Multibinder<JMAPRoutes> routes = Multibinder.newSetBinder(binder(), JMAPRoutes.class);
        routes.addBinding().to(SessionRoutes.class);
        routes.addBinding().to(JMAPApiRoutes.class);
        routes.addBinding().to(DownloadRoutes.class);
        routes.addBinding().to(UploadRoutes.class);
        routes.addBinding().to(WebSocketRoutes.class);
        routes.addBinding().to(EventSourceRoutes.class);

        Multibinder<AuthenticationStrategy> authenticationStrategies = Multibinder.newSetBinder(binder(), AuthenticationStrategy.class);
        authenticationStrategies.addBinding().to(BasicAuthenticationStrategy.class);
        authenticationStrategies.addBinding().to(JWTAuthenticationStrategy.class);

        Multibinder<TypeName> typeNameMultibinder = Multibinder.newSetBinder(binder(), TypeName.class);
        typeNameMultibinder.addBinding().toInstance(MailboxTypeName$.MODULE$);
        typeNameMultibinder.addBinding().toInstance(EmailTypeName$.MODULE$);
        typeNameMultibinder.addBinding().toInstance(ThreadTypeName$.MODULE$);
        typeNameMultibinder.addBinding().toInstance(IdentityTypeName$.MODULE$);
        typeNameMultibinder.addBinding().toInstance(EmailSubmissionTypeName$.MODULE$);
        typeNameMultibinder.addBinding().toInstance(EmailDeliveryTypeName$.MODULE$);
        typeNameMultibinder.addBinding().toInstance(VacationResponseTypeName$.MODULE$);

        Multibinder<BlobResolver> blobResolverMultibinder = Multibinder.newSetBinder(binder(), BlobResolver.class);
        blobResolverMultibinder.addBinding().to(MessageBlobResolver.class);
        blobResolverMultibinder.addBinding().to(UploadResolver.class);
        blobResolverMultibinder.addBinding().to(MessagePartBlobResolver.class);
        blobResolverMultibinder.addBinding().to(AttachmentBlobResolver.class);
    }