@Override public void init(Configuration config) throws ConfigurationException { queue = queueFactory.createQueue(MailQueueFactory.SPOOL); }
@PostConstruct public void init() { queue = queueFactory.getQueue(MailQueueFactory.SPOOL); }
@GET @ApiOperation( value = "Listing existing MailQueues" ) @ApiResponses(value = { @ApiResponse(code = HttpStatus.OK_200, message = "OK", response = List.class), @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "Internal server error - Something went bad on the server side.") }) public void defineListQueues(Service service) { service.get(BASE_URL, (request, response) -> mailQueueFactory .listCreatedMailQueues() .stream() .map(ManageableMailQueue::getName) .collect(Guavate.toImmutableList()), jsonTransformer); }
@Inject public void retrieveRootMailQueue(MailQueueFactory<?> mailQueueFactory) { this.rootMailQueue = mailQueueFactory.createQueue(MailQueueFactory.SPOOL); }
private MailQueue getMailQueue(String targetQueue) { return mailQueueFactory.getQueue(targetQueue) .orElseThrow(() -> new RuntimeException("Can not find queue " + targetQueue)); } }
@Inject @VisibleForTesting MailSpool(MailQueueFactory<?> queueFactory) { queue = queueFactory.createQueue(MailQueueFactory.SPOOL); }
/** * Initialises the spool manager. */ @PostConstruct public void init() throws Exception { logger.info("JamesSpoolManager init..."); queue = queueFactory.getQueue(MailQueueFactory.SPOOL); if (logger.isInfoEnabled()) { StringBuffer infoBuffer = new StringBuffer(64) .append("Spooler Manager uses ") .append(numThreads) .append(" Thread(s)"); logger.info(infoBuffer.toString()); } active.set(true); spoolThreads = new java.util.ArrayList<Thread>(numThreads); for ( int i = 0 ; i < numThreads ; i++ ) { Thread reader = new Thread(this, "Spool Thread #" + i); spoolThreads.add(reader); reader.start(); } }
/** * Initializes the spool manager. */ @PostConstruct public void init() { LOGGER.info("{} init...", getClass().getName()); queue = queueFactory.createQueue(MailQueueFactory.SPOOL); LOGGER.info("{} uses {} Thread(s)", getClass().getName(), numThreads); active.set(true); workerService = JMXEnabledThreadPoolExecutor.newFixedThreadPool("org.apache.james:type=component,component=mailetcontainer,name=mailspooler,sub-type=threadpool", "spooler", numThreads); dequeueService = JMXEnabledThreadPoolExecutor.newFixedThreadPool("org.apache.james:type=component,component=mailetcontainer,name=mailspooler,sub-type=threadpool", "dequeuer", numDequeueThreads); for (int i = 0; i < numDequeueThreads; i++) { Thread reader = new Thread(this, "Dequeue Thread #" + i); dequeueService.execute(reader); } }
private MailQueueDTO getMailQueue(Request request) { String mailQueueName = request.params(MAIL_QUEUE_NAME); return mailQueueFactory.getQueue(mailQueueName).map(this::toDTO) .orElseThrow( () -> ErrorResponder.builder() .message(String.format("%s can not be found", mailQueueName)) .statusCode(HttpStatus.NOT_FOUND_404) .type(ErrorResponder.ErrorType.NOT_FOUND) .haltError()); }
@Before @SuppressWarnings("unchecked") public void setUp() throws Exception { countDownLatch = new CountDownLatch(1); MailQueueFactory<MailQueue> mailQueueFactory = mock(MailQueueFactory.class); remoteDelivery = new RemoteDelivery(mock(DNSService.class), mock(DomainList.class), mailQueueFactory, mock(MetricFactory.class), RemoteDelivery.ThreadState.START_THREADS); mailQueue = mock(MailQueue.class); when(mailQueueFactory.createQueue(QUEUE_NAME)).thenReturn(mailQueue); }
private ManageableMailQueue assertMailQueueExists(Request request) { String mailQueueName = request.params(MAIL_QUEUE_NAME); return mailQueueFactory.getQueue(mailQueueName) .orElseThrow(() -> ErrorResponder.builder() .message(String.format("%s can not be found", mailQueueName)) .statusCode(HttpStatus.NOT_FOUND_404) .type(ErrorType.NOT_FOUND) .haltError()); }
@Override public void init() throws MessagingException { configuration = new RemoteDeliveryConfiguration(getMailetConfig(), domainList); queue = queueFactory.createQueue(configuration.getOutGoingQueueName()); try { if (configuration.isBindUsed()) { RemoteDeliverySocketFactory.setBindAdress(configuration.getBindAddress()); } } catch (UnknownHostException e) { LOGGER.error("Invalid bind setting ({}): ", configuration.getBindAddress(), e); } if (startThreads == ThreadState.START_THREADS) { initDeliveryThreads(); } }
private List<MailQueueItemDTO> listMails(Request request) { String mailQueueName = request.params(MAIL_QUEUE_NAME); return mailQueueFactory.getQueue(mailQueueName) .map(name -> listMails(name, isDelayed(request.queryParams(DELAYED_QUERY_PARAM)), ParametersExtractor.extractLimit(request))) .orElseThrow( () -> ErrorResponder.builder() .message(String.format("%s can not be found", mailQueueName)) .statusCode(HttpStatus.NOT_FOUND_404) .type(ErrorResponder.ErrorType.NOT_FOUND) .haltError()); }
@Before public void setUp() { MailQueueFactory<ManageableMailQueue> queueFactory = new MemoryMailQueueFactory(new RawMailQueueItemDecoratorFactory()); mailQueue = queueFactory.createQueue(RemoteDeliveryConfiguration.OUTGOING); remoteDelivery = new RemoteDelivery(mock(DNSService.class), mock(DomainList.class), queueFactory, new NoopMetricFactory(), RemoteDelivery.ThreadState.DO_NOT_START_THREADS); }
private Object deleteMails(Request request, Response response) { String mailQueueName = request.params(MAIL_QUEUE_NAME); Task task = mailQueueFactory.getQueue(mailQueueName) .map(name -> deleteMailsTask(name, sender(request.queryParams(SENDER_QUERY_PARAM)), name(request.queryParams(NAME_QUERY_PARAM)), recipient(request.queryParams(RECIPIENT_QUERY_PARAM)))) .orElseThrow( () -> ErrorResponder.builder() .message(String.format("%s can not be found", mailQueueName)) .statusCode(HttpStatus.NOT_FOUND_404) .type(ErrorResponder.ErrorType.NOT_FOUND) .haltError()); TaskId taskId = taskManager.submit(task); return TaskIdDto.respond(response, taskId); }
@Before @SuppressWarnings("unchecked") public void setUp() throws Exception { domainList = new MemoryDomainList(DNS_SERVICE); domainList.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .build()); usersRepository = MemoryUsersRepository.withVirtualHosting(); usersRepository.setDomainList(domainList); testee = new JamesMailetContext(); MailQueueFactory<MailQueue> mailQueueFactory = mock(MailQueueFactory.class); spoolMailQueue = mock(MailQueue.class); when(mailQueueFactory.createQueue(MailQueueFactory.SPOOL)).thenReturn(spoolMailQueue); testee.retrieveRootMailQueue(mailQueueFactory); testee.setDomainList(domainList); testee.setUsersRepository(usersRepository); mailAddress = new MailAddress(USERMAIL); }
@Test public void reprocessingShouldNotFailOnConcurrentDeletion() throws Exception { MailRepository repository = mailRepositoryStore.select(MailRepositoryUrl.fromPathAndProtocol(PATH, MEMORY_PROTOCOL)); repository.store(mail1); repository.store(mail2); repository.store(mail3); AtomicBoolean shouldPerformRemove = new AtomicBoolean(true); ConsumerChainer<MailKey> concurrentRemoveConsumer = Throwing.consumer(key -> { if (shouldPerformRemove.get()) { shouldPerformRemove.set(false); MailKey toRemove = ImmutableList.of(NAME_1, NAME_2, NAME_3) .stream() .map(MailKey::new) .filter(candidateForRemoval -> !candidateForRemoval.equals(key)) .findFirst() .get(); repository.remove(toRemove); } }); reprocessingService.reprocessAll(PATH, NO_TARGET_PROCESSOR, SPOOL, concurrentRemoveConsumer); assertThat(queueFactory.getQueue(SPOOL).get() .browse()) .hasSize(2); }
@Before public void setUp() throws Exception { createMailRepositoryStore(); MemoryTaskManager taskManager = new MemoryTaskManager(); JsonTransformer jsonTransformer = new JsonTransformer(); MailQueueFactory<ManageableMailQueue> queueFactory = new MemoryMailQueueFactory(new RawMailQueueItemDecoratorFactory()); spoolQueue = queueFactory.createQueue(MailQueueFactory.SPOOL); customQueue = queueFactory.createQueue(CUSTOM_QUEUE); MailRepositoryStoreService repositoryStoreService = new MailRepositoryStoreService(mailRepositoryStore); ReprocessingService reprocessingService = new ReprocessingService(queueFactory, repositoryStoreService); webAdminServer = WebAdminUtils.createWebAdminServer( new NoopMetricFactory(), new MailRepositoriesRoutes(repositoryStoreService, jsonTransformer, reprocessingService, taskManager), new TasksRoutes(taskManager, jsonTransformer)); webAdminServer.configure(NO_CONFIGURATION); webAdminServer.await(); RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer) .setBasePath(MailRepositoriesRoutes.MAIL_REPOSITORIES) .build(); RestAssured.enableLoggingOfRequestAndResponseIfValidationFails(); }
@Test public void reprocessingOneShouldEnqueueMail() throws Exception { MailRepository repository = mailRepositoryStore.select(MailRepositoryUrl.fromPathAndProtocol(PATH, MEMORY_PROTOCOL)); repository.store(mail1); repository.store(mail2); repository.store(mail3); reprocessingService.reprocess(PATH, KEY_2, NO_TARGET_PROCESSOR, SPOOL); assertThat(queueFactory.getQueue(SPOOL).get() .browse()) .extracting(item -> item.getMail().getName()) .containsOnly(NAME_2); }
@Before public void setUp() throws Exception { mailRepositoryStore = createMemoryMailRepositoryStore(); queueFactory = new MemoryMailQueueFactory(new RawMailQueueItemDecoratorFactory()); reprocessingService = new ReprocessingService( queueFactory, new MailRepositoryStoreService(mailRepositoryStore)); queueFactory.createQueue(SPOOL); mail1 = FakeMail.builder() .name(NAME_1) .build(); mail2 = FakeMail.builder() .name(NAME_2) .build(); mail3 = FakeMail.builder() .name(NAME_3) .build(); }