(no commit message)
[utils] / system / TODO.txt
1 Component infrastructure
2 * support simple component
3   - requires through constructor
4   - provides through getters
5 * support pre-instantiated components
6 * optional start and stop methods
7 * directly implementing the Component interface
8 * explicit wiring must be possible
9 * giving names to a component must be optional
10 * support for cached components and non-cached components.
11
12
13 - rename System -> Component
14 - rename CompositeComponent -> Container
15 - qualified name zetten in de start methode
16 - testen op multiple start methodes. 
17 - geneste service registry maken, testen dat een component alleen maar
18   die componenten in de registry ziet die hij daadwerkelijk mag gebruiken
19 - validate() in start() methode aanroepen.
20 - validate() moet public zijn
21 - Container abstraheren in API
22   addComponent(Component) methode toevoegen voor component 
23   addComponent(name, component) methode toevoegen voor component.
24
25 - Toevoegen van Constraint interface
26      Constraint.isAllowed(provider, ProvidedInterface, client, RequiredInterface)
27   Eenvoudige constraint implementeren voor expliciete binding van provided
28   en required interfaces. 
29
30   CompositeConstraint implementeren. 
31
32   CompositeConstraint checken voor elke potentiele match. 
33
34 - Annotaties definieren
35
36   @Component 
37   class MyComponent {  
38
39   public MyComponent(Def aArg, Ghi aArg2) { 
40   }
41
42   @Provided(name = "name")
43   public Xyz getXyz();
44
45   @Start
46   public void myStart(); // Unlike the component
47 }
48
49 - constraint definieren om constructor te selecteren. 
50   
51   // Select the constructor or setter to use.  
52   ArgumentConstraints(Class[] argTypes) 
53    // indicate which provided interface from what other component must be 
54    // used for the i-th parameter. 
55    constraint.require(int i, new ProvidedConstraint(component, intf)); 
56    // indicate the value to substitute for the i-th parameter. 
57    constraint.setValue(int i, Object aValue); 
58
59 - Algemene classes maken die de constructor, start method, en 
60   methodes  identificeren om de component als Component te benaderen. 
61   in een object, samen met een wrapper die deze info gebruikt om het
62   object als Component te exportern. 
63   Er moet ook een wrapper zijn voor reeds geinstantieerde  objecten.
64
65 - wrapper maken die geannoteerde classes interpreteert en via de eerdere
66   wrapper het object ontsluiten als component. 
67   Zowel geinstantieerde objecten als classes ondersteunen. 
68
69 - constructor toevoegen aan de container voor 
70   addComponent(Class) // use constructor with the most arguments
71   addComponent(Class, ArgumentConstraints) // use explicit constructor
72   addRunningComponent(Object) // running component with annotations or 
73       // subclass of Component
74
75   addComponent(Object, ComponentAdapterInfo) // running component with 
76                      // info on how to adapt it to a component. 
77
78