(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / core / Environment.java
index 2fa1c4cf374471412837905cfa76ffe30bf676d9..4b791d0570768f9b192e8da21131613d6ea9a42e 100644 (file)
@@ -12,7 +12,7 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 package org.wamblee.system.core;
 
 import javax.sql.DataSource;
@@ -23,42 +23,69 @@ import org.wamblee.system.core.ProvidedInterface;
 import org.wamblee.system.core.RequiredInterface;
 import org.wamblee.test.EventTracker;
 
+public class Environment extends AbstractComponent<Object> {
 
-public class Environment extends AbstractComponent {
-       
-       private static final ProvidedInterface[] provided() { 
-               return new ProvidedInterface[] { 
-                       new DefaultProvidedInterface("datasource", DataSource.class), 
-                       new DefaultProvidedInterface("integer", Integer.class)
-       };
+       private static final ProvidedInterface[] provided(String aPrefix) {
+               return new ProvidedInterface[] {
+                               new DefaultProvidedInterface(aPrefix + "datasource", String.class),
+                               new DefaultProvidedInterface(aPrefix + "integer", Integer.class) };
        }
        
-       private EventTracker<String> _tracker; 
-       
-       public Environment() { 
-               super("environment", provided(), new RequiredInterface[0]);
+       private static int COUNT = 0; 
+
+       private EventTracker<String> _tracker;
+       private double _random;
+       private int _integer; 
+
+       public Environment() {
+               this("environment");
        }
        
-       public Environment(EventTracker aTracker) { 
+       public Environment(String aName) {
+       this(aName, "");
+    }
+       
+       public Environment(String aName, String aPrefix) {
+        super(aName, provided(aPrefix), new RequiredInterface[0]);
+        _random = Math.random();
+        _integer = COUNT++;
+    }
+
+
+
+       public Environment(EventTracker aTracker) {
                this();
-               _tracker = aTracker; 
+               _tracker = aTracker;
        }
-       
+
+       public Integer getInteger() {
+               return _integer;
+       }
+
+       public String getString() {
+               return getName() + ".hello";
+       }
+
        @Override
-       protected void doStart() {
-           addService(getProvidedServices()[0], new Integer(1));
-           addService(getProvidedServices()[1], new Integer(2));
-           track("start." + getName());
+       protected Object doStart(Scope aScope) {
+               addInterface(getProvidedInterfaces().get(0), getString(), aScope);
+               addInterface(getProvidedInterfaces().get(1), getInteger(), aScope);
+               track("start." + getName());
+               return _random;
        }
 
        @Override
-       protected void doStop() {
+       protected void doStop(Object aRuntime) {
                track("stop." + getName());
+               if (_random != (Double) aRuntime) {
+                       throw new IllegalArgumentException("Wrong runtime: expected "
+                                       + _random + " but got " + aRuntime);
+               }
        }
-       
+
        private void track(String aString) {
-               if ( _tracker == null ) { 
-                       return; 
+               if (_tracker == null) {
+                       return;
                }
                _tracker.eventOccurred(aString);
        }