@Override public void retrieveRange(FineTime from, FineTime until, ObjectTypeList objectTypes, Identifier compression, RetrieveRangeInteraction interaction) throws MALInteractionException, MALException { final Dispatcher dispatcher = new Dispatcher(interaction); long interactionTicket = interaction.getInteraction().getMessageHeader().getTransactionId(); dispatchers.put(interactionTicket, dispatcher); lastSync.set(HelperTime.getTimestamp().getValue()); interaction.sendAcknowledgement(interactionTicket); Runnable processQueriedObjs = dispatcher.getProcessingRunnable(); Runnable flushProcessedObjs = dispatcher.getFlushingRunnable(); executor.execute(processQueriedObjs); executor.execute(flushProcessedObjs); ArrayList<COMObjectEntity> perObjs; for (int i = 0; i < objectTypes.size(); i++) { ArchiveQuery archiveQuery = new ArchiveQuery(); archiveQuery.setStartTime(from); archiveQuery.setEndTime(until); archiveQuery.setDomain(null); archiveQuery.setNetwork(null); archiveQuery.setProvider(null); archiveQuery.setRelated(new Long(0)); archiveQuery.setSource(null); archiveQuery.setSortFieldName(null); perObjs = manager.queryCOMObjectEntity(objectTypes.get(i), archiveQuery, null); dispatcher.addObjects(perObjs); } dispatcher.setQueriesAreDone(true); Logger.getLogger(ArchiveSyncProviderServiceImpl.class.getName()).log(Level.INFO, "Stage 1: The objects were queried and are now being sent back to the consumer!"); }