From: Erik Brakkee Date: Thu, 3 Apr 2008 21:36:04 +0000 (+0000) Subject: (no commit message) X-Git-Tag: wamblee-utils-0.7~806 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=c46775f3e159ba9db714cfa9636881f2c6d4e873;p=utils --- diff --git a/system/TODO.txt b/system/TODO.txt new file mode 100644 index 00000000..ff111104 --- /dev/null +++ b/system/TODO.txt @@ -0,0 +1,78 @@ +Component infrastructure +* support simple component + - requires through constructor + - provides through getters +* support pre-instantiated components +* optional start and stop methods +* directly implementing the Component interface +* explicit wiring must be possible +* giving names to a component must be optional +* support for cached components and non-cached components. + + +- rename System -> Component +- rename CompositeComponent -> Container +- qualified name zetten in de start methode +- testen op multiple start methodes. +- geneste service registry maken, testen dat een component alleen maar + die componenten in de registry ziet die hij daadwerkelijk mag gebruiken +- validate() in start() methode aanroepen. +- validate() moet public zijn +- Container abstraheren in API + addComponent(Component) methode toevoegen voor component + addComponent(name, component) methode toevoegen voor component. + +- Toevoegen van Constraint interface + Constraint.isAllowed(provider, ProvidedInterface, client, RequiredInterface) + Eenvoudige constraint implementeren voor expliciete binding van provided + en required interfaces. + + CompositeConstraint implementeren. + + CompositeConstraint checken voor elke potentiele match. + +- Annotaties definieren + + @Component + class MyComponent { + + public MyComponent(Def aArg, Ghi aArg2) { + } + + @Provided(name = "name") + public Xyz getXyz(); + + @Start + public void myStart(); // Unlike the component +} + +- constraint definieren om constructor te selecteren. + + // Select the constructor or setter to use. + ArgumentConstraints(Class[] argTypes) + // indicate which provided interface from what other component must be + // used for the i-th parameter. + constraint.require(int i, new ProvidedConstraint(component, intf)); + // indicate the value to substitute for the i-th parameter. + constraint.setValue(int i, Object aValue); + +- Algemene classes maken die de constructor, start method, en + methodes identificeren om de component als Component te benaderen. + in een object, samen met een wrapper die deze info gebruikt om het + object als Component te exportern. + Er moet ook een wrapper zijn voor reeds geinstantieerde objecten. + +- wrapper maken die geannoteerde classes interpreteert en via de eerdere + wrapper het object ontsluiten als component. + Zowel geinstantieerde objecten als classes ondersteunen. + +- constructor toevoegen aan de container voor + addComponent(Class) // use constructor with the most arguments + addComponent(Class, ArgumentConstraints) // use explicit constructor + addRunningComponent(Object) // running component with annotations or + // subclass of Component + + addComponent(Object, ComponentAdapterInfo) // running component with + // info on how to adapt it to a component. + +