(no commit message)
authorerik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Thu, 3 Apr 2008 21:36:04 +0000 (21:36 +0000)
committererik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Thu, 3 Apr 2008 21:36:04 +0000 (21:36 +0000)
trunk/system/TODO.txt [new file with mode: 0644]

diff --git a/trunk/system/TODO.txt b/trunk/system/TODO.txt
new file mode 100644 (file)
index 0000000..ff11110
--- /dev/null
@@ -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. 
+
+