source code formatting.
[utils] / system / general / src / test / java / org / wamblee / system / core / IntegerComponent.java
1 /*
2  * Copyright 2007 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.system.core;
17
18 import org.wamblee.system.core.AbstractComponent;
19 import org.wamblee.system.core.DefaultProvidedInterface;
20 import org.wamblee.system.core.ProvidedInterface;
21 import org.wamblee.system.core.RequiredInterface;
22
23 import org.wamblee.test.EventTracker;
24
25 import javax.sql.DataSource;
26
27
28 /**
29  * DOCUMENT ME!
30  *
31  * @author $author$
32  * @version $Revision$
33   */
34 public class IntegerComponent extends AbstractComponent<Object> {
35     /**
36      * DOCUMENT ME!
37      */
38     private EventTracker<String> tracker;
39
40     /**
41      * DOCUMENT ME!
42      */
43     private double random;
44
45     /**
46      * Creates a new IntegerComponent object.
47      */
48     public IntegerComponent() {
49         this("environment");
50     }
51
52     /**
53      * Creates a new IntegerComponent object.
54      *
55      * @param aName DOCUMENT ME!
56      */
57     public IntegerComponent(String aName) {
58         this(aName, "");
59     }
60
61     /**
62      * Creates a new IntegerComponent object.
63      *
64      * @param aName DOCUMENT ME!
65      * @param aPrefix DOCUMENT ME!
66      */
67     public IntegerComponent(String aName, String aPrefix) {
68         super(aName, provided(aPrefix), new RequiredInterface[0]);
69         random = Math.random();
70     }
71
72     /**
73      * Creates a new IntegerComponent object.
74      *
75      * @param aTracker DOCUMENT ME!
76      */
77     public IntegerComponent(EventTracker aTracker) {
78         this();
79         tracker = aTracker;
80     }
81
82     /**
83      * DOCUMENT ME!
84      *
85      * @param aPrefix DOCUMENT ME!
86      *
87      * @return DOCUMENT ME!
88      */
89     private static final ProvidedInterface[] provided(String aPrefix) {
90         return new ProvidedInterface[] {
91             new DefaultProvidedInterface(aPrefix + "integer", Integer.class)
92         };
93     }
94
95     /**
96      * DOCUMENT ME!
97      *
98      * @return DOCUMENT ME!
99      */
100     public Integer getInteger() {
101         return 2;
102     }
103
104     /**
105      * DOCUMENT ME!
106      *
107      * @param aScope DOCUMENT ME!
108      *
109      * @return DOCUMENT ME!
110      */
111     @Override
112     protected Object doStart(Scope aScope) {
113         addInterface(getProvidedInterfaces().get(1), getInteger(), aScope);
114         track("start." + getName());
115
116         return random;
117     }
118
119     /**
120      * DOCUMENT ME!
121      *
122      * @param aRuntime DOCUMENT ME!
123      */
124     @Override
125     protected void doStop(Object aRuntime) {
126         track("stop." + getName());
127
128         if (random != (Double) aRuntime) {
129             throw new IllegalArgumentException("Wrong runtime: expected "
130                 + random + " but got " + aRuntime);
131         }
132     }
133
134     /**
135      * DOCUMENT ME!
136      *
137      * @param aString DOCUMENT ME!
138      */
139     private void track(String aString) {
140         if (tracker == null) {
141             return;
142         }
143
144         tracker.eventOccurred(aString);
145     }
146 }