The technologies used by Dragoman are described below. These technology choices are typically hidden behind facades which (should :) allow for later substitution with little or no changes to the rest of the code base. For example:
Dao
interfaces for which there are Mongo
specific implementationsHttpClient
interface for which there is a OkHttpClient
implementationTo implement parsers for user supplied predicate and projection expressions. The parsed forms are translated into commands which can be applied to a dataset. So …
find
call against a MongoClient
instance provided by MongoDB’s Java clientTo store local datasets.
Dragoman uses The Mongo Rx Java Driver to talk to MongoDB.
Dragoman uses flapdoodle to create an embedded instance of MongoDB. This is used when running in embedded
mode and for creating an in-process MongoDB instance in test cases.
To provide the application framework, including the web server.
To provide the UI framework.
For UI style goodies.
To provide templating for the user interface.
For dependency injection. All Guice integration is encapsulated in classes name XXXModule
.
To read remote datasets over HTTP.
To transform data between serialised and non serialised representations. Dragoman expects its data sources to provide data either in the JSON format or ina format which can be easily transformed into JSON.
To externalise application configuration to properties file. This file (application.properties
) is discovered from the classpath and supports type safe property values, property value transformers and environment specific property values.
Unit testing framework, mocking framework and test utilities.