in protocols/imap/src/main/java/org/apache/james/imap/processor/DefaultProcessor.java [49:132]
public static ImapProcessor createDefaultProcessor(ImapProcessor chainEndProcessor,
MailboxManager mailboxManager,
EventBus eventBus,
SubscriptionManager subscriptionManager,
StatusResponseFactory statusResponseFactory,
MailboxTyper mailboxTyper,
QuotaManager quotaManager,
QuotaRootResolver quotaRootResolver,
MetricFactory metricFactory) {
ImmutableList.Builder<AbstractProcessor> builder = ImmutableList.builder();
CapabilityProcessor capabilityProcessor = new CapabilityProcessor(mailboxManager, statusResponseFactory, metricFactory);
builder.add(new SystemMessageProcessor(mailboxManager));
builder.add(new LogoutProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(capabilityProcessor);
builder.add(new IdProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new CheckProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new LoginProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new RenameProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new DeleteProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new CreateProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new CloseProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new UnsubscribeProcessor(mailboxManager, subscriptionManager, statusResponseFactory, metricFactory));
builder.add(new SubscribeProcessor(mailboxManager, subscriptionManager, statusResponseFactory, metricFactory));
builder.add(new CopyProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new AuthenticateProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new ExpungeProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new ReplaceProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new ExamineProcessor(mailboxManager, eventBus, statusResponseFactory, metricFactory));
builder.add(new AppendProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new StoreProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new NoopProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new IdleProcessor(mailboxManager, statusResponseFactory, metricFactory));
StatusProcessor statusProcessor = new StatusProcessor(mailboxManager, statusResponseFactory, metricFactory);
builder.add(statusProcessor);
builder.add(new LSubProcessor(mailboxManager, subscriptionManager, statusResponseFactory, metricFactory));
builder.add(new XListProcessor(mailboxManager, statusResponseFactory, mailboxTyper, metricFactory, subscriptionManager));
builder.add(new ListProcessor<>(mailboxManager, statusResponseFactory, metricFactory, subscriptionManager, statusProcessor, mailboxTyper));
builder.add(new SearchProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new SelectProcessor(mailboxManager, eventBus, statusResponseFactory, metricFactory));
builder.add(new NamespaceProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new FetchProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new StartTLSProcessor(statusResponseFactory));
builder.add(new UnselectProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new CompressProcessor(statusResponseFactory));
builder.add(new GetACLProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new SetACLProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new DeleteACLProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new ListRightsProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new MyRightsProcessor(mailboxManager, statusResponseFactory, metricFactory));
EnableProcessor enableProcessor = new EnableProcessor(mailboxManager, statusResponseFactory, metricFactory, capabilityProcessor);
builder.add(enableProcessor);
builder.add(new GetQuotaProcessor(mailboxManager, statusResponseFactory, quotaManager, quotaRootResolver, metricFactory));
builder.add(new SetQuotaProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new GetQuotaRootProcessor(mailboxManager, statusResponseFactory, quotaRootResolver, quotaManager, metricFactory));
builder.add(new ImapResponseMessageProcessor());
if (mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.Move)) {
builder.add(new MoveProcessor(mailboxManager, statusResponseFactory, metricFactory));
}
if (mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.Annotation)) {
builder.add(new SetMetadataProcessor(mailboxManager, statusResponseFactory, metricFactory));
builder.add(new GetMetadataProcessor(mailboxManager, statusResponseFactory, metricFactory));
}
ImmutableList<AbstractProcessor> processors = builder.build();
processors.stream()
.filter(CapabilityImplementingProcessor.class::isInstance)
.map(CapabilityImplementingProcessor.class::cast)
.forEach(capabilityProcessor::addProcessor);
processors.stream()
.filter(PermitEnableCapabilityProcessor.class::isInstance)
.map(PermitEnableCapabilityProcessor.class::cast)
.forEach(enableProcessor::addProcessor);
ImmutableMap<Class, ImapProcessor> processorMap = processors.stream()
.map(AbstractProcessor.class::cast)
.flatMap(DefaultProcessor::asPairStream)
.collect(ImmutableMap.toImmutableMap(
Pair::getLeft,
Pair::getRight));
return new DefaultProcessor(processorMap, chainEndProcessor);
}