Foundation Data Model

Project Website | Maven | Bamboo Automated Build Results

The foundation for enterprise data adapters is in the Foundation Data Model.

The Foundation Data Model delivers the following:

  • A Maven Bill of Materials with baseline dependencies required for this and other projects.
  • A component framework expressed as Spring beans that is used to query a data source via a builder pattern.
  • A domain model based on the Java Persistence API (JPA).
  • An API that works with either RESTful or SOAP-based web services.
  • Predetermined dependencies for transforming XML, JSON, and CSV data; other formats can be easily handled as well.
  • A cache-neutral interface so that repeat queries for the same data are not performing expensive operations, such as making remote calls for data.

This framework is used by the FRED Client, the USA Spending Client, the World Bank Client, and the Coherent Datafeed: Thomson Reuters Edition.

The AbstractQueryBuilder assists developers in delivering a domain-specific language which looks almost identical to the URI they’re trying to invoke — for example:

the following URI:

http://api.stlouisfed.org/fred/series/observations?series_id=EXJPUS&api_key=redacted

is expressed in Java as:

queryBuilder
    .series ()
    .observations ()
    .setSeriesId("EXJPUS")
    .doGet(Observations.class)

the following URI:

http://api.worldbank.org/countries/all/indicators/SP.POP.TOTL?date=1998:2012

is expressed in Java as:

queryBuilder
    .countries("all")
    .indicators("SP.POP.TOTL")
    .setDate("1998:2012")
    .doGet(DataPoints.class)

Since URIs are simple strings the AbstractQueryBuilder can be instantiated with a cache provider to prevent remote calls from being made by checking if the URI is already associated with an object in memory. This can increase application performance substantially.