Details
-
New Feature
-
Resolution: Fixed
-
Major
-
0.16.0
-
None
-
None
-
All
-
0.16.0
-
GreenHopper Ranking:0|i0w3gb:
-
9223372036854775807
-
Small
Description
There are currently two types of "registered" definitions provided by the component framework: components and wizards.
Each class of this type is annotated with aQute.bnd.annotation.component.Component and collected in one of the two catalogs, either using a Spring or OSGi mechanism to discover all of the annotated types available in the classpath.
Today, a family that provides a jar with five components and two top-level wizards will have seven annotated classes of two types.
In the near future, we expect there to be more types (datastore and dataset, and probably file formats + file systems with component properties).
Instead of annotating these classes separately, each component family should have a single central point of registration that adds all of its available components, wizards, datastore, datasets (and future types).
For example, for components-cassandra, we would expect there to be a class:
@Component(name = "installer#cassandra", provide = ComponentInstaller.class) public class CassandraInstaller implements ComponentInstaller { public void install(TCompRegistry registry) { // much better to set instances of these definitions instead of their class in the registry... registry.addDatastoreDef(CassandraDatastoreDef.class); registry.addDatasetDef(CassandraDatasetDef.class); registry.addComponentDef(CassandraInputDef.class); registry.addComponentDef(CassandraOutputDef.class); // ... all definitions that cassandra provides // after installation, all of these definitions are available in their respective catalogs. } }