public UniformityArchiveActivator() { add(activatorFor(UniformityArchiveActor.class).withPoolSize(1)); } }
@Override @Nonnull public UniformityArchive unmarshal (final @Nonnull InputStream is) throws IOException { final UniformityArchive archive = new UniformityArchive(); for (;;) { try { final UniformityMeasurements measurements = new UniformityMeasurements().as(Unmarshallable).unmarshal(is); archive.add(measurements); } catch (EOFException e) { break; // ok, finished } } return archive; } }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ private void loadArchive() throws IOException { log.info("loadArchive()"); archive.clear(); final @Cleanup InputStream is = persistenceFile.getInputStream(); archive = archive.as(Unmarshallable).unmarshal(is); is.close(); }
@Test(dataProvider="testCaseProvider") public void must_properly_unmarshall (final @Nonnegative int size, final long seed) throws FileNotFoundException, IOException { final UniformityArchiveUnmarshallable unmarshallable = new UniformityArchiveUnmarshallable(); final File file = new File("src/test/resources/expected-results/" + seed + ".txt"); final InputStream is = new FileInputStream(file); final UniformityArchive archive = unmarshallable.unmarshal(is); is.close(); final UniformityArchive expectedArchive = new UniformityArchive(); final Random r = new Random(seed); for (int i = 0; i < size; i++) { expectedArchive.add(FakeUniformityMeasurementsGenerator.createMeasurements("display1", r)); } assertThat(archive, is(expectedArchive)); }
@Test(dataProvider="testCaseProvider") public void must_properly_marshall (final @Nonnegative int size, final long seed) throws FileNotFoundException, IOException { final UniformityArchive archive = new UniformityArchive(); final Random r = new Random(seed); for (int i = 0; i < size; i++) { archive.add(FakeUniformityMeasurementsGenerator.createMeasurements("display1", r)); } final UniformityArchiveMarshallable marshallable = new UniformityArchiveMarshallable(archive); final File targetFolder = new File("target/test-artifacts"); final File actualFile = new File(targetFolder, "" + seed + ".txt"); final File expectedFile = new File("src/test/resources/expected-results/" + seed + ".txt"); targetFolder.mkdirs(); final OutputStream os = new FileOutputStream(actualFile); marshallable.marshal(os); os.close(); FileComparisonUtils.assertSameContents(expectedFile, actualFile); }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ public void onNewMeasurement (final @ListensTo @Nonnull UniformityMeasurementMessage message) throws IOException { log.info("onNewMeasurement({})", message); archive.add(message.getMeasurements()); storeArchive(); new UniformityArchiveUpdatedMessage(archive.findMeasurementsByDisplay(message.getMeasurements().getDisplay().getDisplay())).send(); }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ @PostConstruct public void initialize() // FIXME: private throws IOException { log.info("initialize()"); persistenceFile = FileUtil.createData(FileUtil.getConfigRoot(), "Archive/UniformityMeasurements.txt"); log.info(">>>> persistenceFile: {}", persistenceFile.getPath()); loadArchive(); }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ private void storeArchive() throws IOException { log.info("storeArchive()"); final @Cleanup OutputStream os = persistenceFile.getOutputStream(); archive.as(Marshallable).marshal(os); os.close(); } }
@Override public void marshal (final @Nonnull OutputStream os) throws IOException { for (final UniformityMeasurements measurements : archive.findMeasurements().sort(BY_DATE_TIME).results()) { measurements.as(Marshallable).marshal(os); } os.close(); } }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ public void onQuery (final @ListensTo @Nonnull UniformityArchiveQuery message) { log.info("onQuery({})", message); new UniformityArchiveContentMessage(archive.findMeasurementsByDisplay(message.getDisplay())).send(); }