(no commit message)
authorErik Brakkee <erik@brakkee.org>
Fri, 11 Apr 2008 21:32:07 +0000 (21:32 +0000)
committerErik Brakkee <erik@brakkee.org>
Fri, 11 Apr 2008 21:32:07 +0000 (21:32 +0000)
system/general/src/main/java/org/wamblee/system/core/Container.java
system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java
system/general/src/test/java/org/wamblee/system/core/Application.java
system/general/src/test/java/org/wamblee/system/core/ContainerTest.java
system/general/src/test/java/org/wamblee/system/core/Environment.java

index fd322c6bbd49aabd10187501d630f2db762a2204..df92c0d099dcb4a61e219bb6047a7b5bea672783 100644 (file)
@@ -252,7 +252,7 @@ public class Container extends AbstractComponent {
                                                                + "' required by system '"
                                                                + aComponent
                                                                + "' matches multiple services provided by other systems: "
-                                                               + Arrays.asList(filtered));
+                                                               + getServers(filtered));
                        } else { 
                                // filtered.length == 0
                                if ( !descriptor.isOptional()) { 
@@ -281,6 +281,22 @@ public class Container extends AbstractComponent {
        private void warn(String aMsg) {
                LOG.warn(getQualifiedName() + ": " + aMsg);
        }
+       
+       private String getServers(ProvidedInterface[] aProvidedList ) {
+               String result = "";
+               for (ProvidedInterface provided: aProvidedList) {
+                       result += "(components ";
+                       for (Component component: _components) { 
+                               for (ProvidedInterface provided2: component.getProvidedInterfaces()) { 
+                                       if ( provided.equals(provided2)) { 
+                                               result += component + " ";
+                                       }
+                               }
+                       }
+                       result += ", interface " + provided + ")";
+               }
+               return result;
+       }
 
        private List<Component> getClients(RequiredInterface aRequirement) {
                List<Component> clients = new ArrayList<Component>();
index b751a67144d00542804ea39354a5eafa88e83af3..60c111ed1ecfd14c699924b0f2fb10b8476af2ce 100644 (file)
@@ -90,8 +90,10 @@ public class DefaultProvidedInterface implements ProvidedInterface {
        @Override
        public String toString() {
                StringBuffer buf = new StringBuffer();
+               buf.append(getName());
+               buf.append(":");
                for (Class intf: _interfaces) { 
-                       buf.append("." + intf.getName());
+                       buf.append(" " + intf.getName());
                }
                return buf.toString();
        }
index 16d1f36f0187b273810ae010dfaa8f77fb994b1c..ca1467cc0fd4afde4ff9327bfcff49668b91035e 100644 (file)
@@ -27,12 +27,14 @@ public class Application extends AbstractComponent {
        public static RequiredInterface[] required(boolean aOptional) {
                return
                new RequiredInterface[] { 
-                       new DefaultRequiredInterface("datasource", DataSource.class, aOptional), 
+                       new DefaultRequiredInterface("string", String.class, aOptional), 
                        new DefaultRequiredInterface("integer", Integer.class, aOptional)
        };
        }
 
        private EventTracker<String> _tracker;
+       private String _string; 
+       private Integer _integer; 
        
        public Application() {
                super("application", new ProvidedInterface[0], required(false)); 
@@ -49,7 +51,17 @@ public class Application extends AbstractComponent {
 
        @Override
        protected void doStart() {
-               track("start." + getName()); 
+               track("start." + getName());
+               _string = getRequiredInterfaces()[0].getImplementation(String.class);
+           _integer = getRequiredInterfaces()[1].getImplementation(Integer.class);
+       }
+       
+       public String getString() {
+               return _string;
+       }
+       
+       public Integer getInteger() {
+               return _integer;
        }
        
        @Override
index 27a1937ff59f4f7e845022f1bb056397d3c3aa20..86d5760b430918fbfd3b5bf094c306f9b622910e 100644 (file)
@@ -161,7 +161,7 @@ public class ContainerTest extends TestCase {
                        Container system = new Container("all", new Component[] {
                                        environment, application },
                                        new ProvidedInterface[] { new DefaultProvidedInterface(
-                                                       "string", String.class) },
+                                                       "float", Float.class) },
                                        new DefaultRequiredInterface[0]);
                } catch (SystemAssemblyException e) {
                        return;
@@ -190,9 +190,9 @@ public class ContainerTest extends TestCase {
                Container system = new Container("all", new Component[] { environment,
                                application }, new ProvidedInterface[0],
                                new RequiredInterface[] { new DefaultRequiredInterface(
-                                               "string", String.class) });
+                                               "float", Float.class) });
                system.getRequiredInterfaces()[0]
-                               .setProvider(new DefaultProvidedInterface("hallo", String.class));
+                               .setProvider(new DefaultProvidedInterface("hallo", Float.class));
                system.start();
                RequiredInterface[] required = system.getRequiredInterfaces();
                assertEquals(1, required.length);
index 9ee40e3972306514a1e999172f50cef3f9dbf263..0f164b625d9bef8c367aeb421da07ee8541bf622 100644 (file)
@@ -28,7 +28,7 @@ public class Environment extends AbstractComponent {
        
        private static final ProvidedInterface[] provided() { 
                return new ProvidedInterface[] { 
-                       new DefaultProvidedInterface("datasource", DataSource.class), 
+                       new DefaultProvidedInterface("datasource", String.class), 
                        new DefaultProvidedInterface("integer", Integer.class)
        };
        }
@@ -44,10 +44,18 @@ public class Environment extends AbstractComponent {
                _tracker = aTracker; 
        }
        
+       public Integer getInteger() { 
+               return 2;
+       }
+       
+       public String getString() { 
+               return "Hello";
+       }
+       
        @Override
        protected void doStart() {
-           addInterface(getProvidedInterfaces()[0], new Integer(1));
-           addInterface(getProvidedInterfaces()[1], new Integer(2));
+           addInterface(getProvidedInterfaces()[0], getString());
+           addInterface(getProvidedInterfaces()[1], getInteger());
            track("start." + getName());
        }