(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / core / Environment.java
index 0f164b625d9bef8c367aeb421da07ee8541bf622..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,52 +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", String.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 2;
+
+       public Integer getInteger() {
+               return _integer;
        }
-       
-       public String getString() { 
-               return "Hello";
+
+       public String getString() {
+               return getName() + ".hello";
        }
-       
+
        @Override
-       protected void doStart() {
-           addInterface(getProvidedInterfaces()[0], getString());
-           addInterface(getProvidedInterfaces()[1], getInteger());
-           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());
-               removeInterface(getProvidedInterfaces()[0]);
-               removeInterface(getProvidedInterfaces()[1]);
+               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);
        }