Skip to content
stemey edited this page Jun 30, 2012 · 6 revisions

Projects

the Atem API is made up of several maven projects. The main project is the api. Then there are projects for the different implementations (json, hibernate etc.) of the api. At last there is a project for utilities for cloning, comparing and observing. The latter only depends on the API not a specific implementation.

Dependency Injection

Most components are created by a dependency injection container. They are declared as components by using annotations from javax.inject. Currently only the Spring container is supported, but there is only minimal dependencies to spring. To use a different container a container specific implementation of BeanLocator needs to be created.

Subprojects

Some features are aggregated in a maven project. A subproject in a maven project is defined by a spring configuration file that defines components for the subproject directly by xml configuration or by enabling the classpath scanning for the subprojects' java packages. This way single features can be enabled. In the utilities project there is the transformation, comparison and other subprojects. These can depend on each other. The transformation components are defined in the configuration file /meta/utilities/transformation.xml. That configuration imports the configuration file for views /meta/utilities/view.xml to resolve dependencies.

Main components

The main components are singletons :

  • EntityTypeRepository This is the main class to access EntityTypes. By convention its id is "meta-impl-entitytype-repository".
  • BeanLocator
    This component is used to create new components or get access to components in a programmatic way. It is the facade to the Dependency Injection Container. This component depends on the dependency injection container.