(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / core / Environment.java
index 0f164b625d9bef8c367aeb421da07ee8541bf622..62dd60fc874dd78c09d8694233801edc09d67ec2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007 the original author or authors.
+ * Copyright 2005-2010 the original author or authors.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * 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;
-
-import org.wamblee.system.core.AbstractComponent;
-import org.wamblee.system.core.DefaultProvidedInterface;
-import org.wamblee.system.core.ProvidedInterface;
-import org.wamblee.system.core.RequiredInterface;
 import org.wamblee.test.EventTracker;
 
+/**
+ * 
+ * @author $author$
+ * @version $Revision$
+ */
+public class Environment extends AbstractComponent<Object> {
+    private static int COUNT = 0;
+
+    private EventTracker<String> tracker;
+
+    private double random;
+
+    private int integer;
+
+    /**
+     * Creates a new Environment object.
+     */
+    public Environment() {
+        this("environment");
+    }
+
+    /**
+     * Creates a new Environment object.
+     * 
+     */
+    public Environment(String aName) {
+        this(aName, "");
+    }
+
+    /**
+     * Creates a new Environment object.
+     * 
+     */
+    public Environment(String aName, String aPrefix) {
+        super(aName, provided(aPrefix), new RequiredInterface[0]);
+        random = Math.random();
+        integer = COUNT++;
+    }
+
+    /**
+     * Creates a new Environment object.
+     * 
+     */
+    public Environment(EventTracker aTracker) {
+        this();
+        tracker = aTracker;
+    }
+
+    private static final ProvidedInterface[] provided(String aPrefix) {
+        return new ProvidedInterface[] {
+            new DefaultProvidedInterface(aPrefix + "datasource", String.class),
+            new DefaultProvidedInterface(aPrefix + "integer", Integer.class) };
+    }
+
+    public Integer getInteger() {
+        return integer;
+    }
+
+    public String getString() {
+        return getName() + ".hello";
+    }
+
+    @Override
+    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(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;
+        }
 
-public class Environment extends AbstractComponent {
-       
-       private static final ProvidedInterface[] provided() { 
-               return new ProvidedInterface[] { 
-                       new DefaultProvidedInterface("datasource", String.class), 
-                       new DefaultProvidedInterface("integer", Integer.class)
-       };
-       }
-       
-       private EventTracker<String> _tracker; 
-       
-       public Environment() { 
-               super("environment", provided(), new RequiredInterface[0]);
-       }
-       
-       public Environment(EventTracker aTracker) { 
-               this();
-               _tracker = aTracker; 
-       }
-       
-       public Integer getInteger() { 
-               return 2;
-       }
-       
-       public String getString() { 
-               return "Hello";
-       }
-       
-       @Override
-       protected void doStart() {
-           addInterface(getProvidedInterfaces()[0], getString());
-           addInterface(getProvidedInterfaces()[1], getInteger());
-           track("start." + getName());
-       }
-
-       @Override
-       protected void doStop() {
-               track("stop." + getName());
-               removeInterface(getProvidedInterfaces()[0]);
-               removeInterface(getProvidedInterfaces()[1]);
-       }
-       
-       private void track(String aString) {
-               if ( _tracker == null ) { 
-                       return; 
-               }
-               _tracker.eventOccurred(aString);
-       }
+        tracker.eventOccurred(aString);
+    }
 }