Skip to content

Commit 666a67c

Browse files
authored
Added exposure of data manager id for the data manager (#319)
1 parent e463447 commit 666a67c

3 files changed

Lines changed: 52 additions & 14 deletions

File tree

simulation/src/main/java/gov/hhs/aspr/ms/gcm/simulation/nucleus/DataManager.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package gov.hhs.aspr.ms.gcm.simulation.nucleus;
22

3+
import java.util.Optional;
4+
35
import gov.hhs.aspr.ms.util.errors.ContractException;
46

57
/**
@@ -16,20 +18,35 @@ boolean isInitialized() {
1618

1719
private boolean initialized;
1820

21+
private DataManagerId dataManagerId;
22+
1923
/**
2024
* Initializes the data manager. This method should only be invoked by the
2125
* simulation. All data manager descendant classes that override this method
2226
* must invoke the super. <br>
2327
*
2428
* @param dataManagerContext
25-
* @throws ContractException {@linkplain NucleusError#DATA_MANAGER_DUPLICATE_INITIALIZATION}
26-
* if init() is invoked more than once
29+
* @throws ContractException
30+
* <ul>
31+
* <li>
32+
* {@linkplain NucleusError#NULL_DATA_MANAGER_CONTEXT}
33+
* if the data manager context is null</li>
34+
* <li>
35+
* {@linkplain NucleusError#DATA_MANAGER_DUPLICATE_INITIALIZATION}
36+
* if init() is invoked more than once</li>
37+
* </ul>
2738
*/
2839
public void init(DataManagerContext dataManagerContext) {
40+
if (dataManagerContext == null) {
41+
throw new ContractException(NucleusError.NULL_DATA_MANAGER_CONTEXT);
42+
}
43+
2944
if (initialized) {
3045
throw new ContractException(NucleusError.DATA_MANAGER_DUPLICATE_INITIALIZATION);
3146
}
3247
initialized = true;
48+
49+
dataManagerId = dataManagerContext.getDataManagerId();
3350
}
3451

3552
/**
@@ -42,4 +59,12 @@ public String toString() {
4259
return "DataManager[]";
4360
}
4461

62+
/**
63+
* Returns the data manager's id. Result will be present after simulation
64+
* initialization is complete for data managers.
65+
*/
66+
public final Optional<DataManagerId> getDataManagerId() {
67+
return Optional.ofNullable(dataManagerId);
68+
}
69+
4570
}

simulation/src/main/java/gov/hhs/aspr/ms/gcm/simulation/nucleus/NucleusError.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public enum NucleusError implements ContractError {
3636
NULL_CLASS_REFERENCE("Null class reference"),//
3737
NULL_DATA_MANAGER("Null data manager"),//
3838
NULL_DATA_MANAGER_CLASS("Null data manager class"),//
39+
NULL_DATA_MANAGER_CONTEXT("Null data manager context"),//
3940
NULL_DATA_MANAGER_CONTEXT_CONSUMER("Null data manager context consumer"),//
4041
NULL_DIMENSION_LEVEL_NAME("Null Dimension level name"), //
4142
NULL_EVENT("Event is null"),//
Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,48 @@
11
package gov.hhs.aspr.ms.gcm.simulation.nucleus;
22

3+
import static org.junit.jupiter.api.Assertions.assertEquals;
34
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertThrows;
46
import static org.junit.jupiter.api.Assertions.assertTrue;
57

68
import org.junit.jupiter.api.Test;
79

810
import gov.hhs.aspr.ms.util.annotations.UnitTestConstructor;
911
import gov.hhs.aspr.ms.util.annotations.UnitTestMethod;
10-
12+
import gov.hhs.aspr.ms.util.errors.ContractException;
1113

1214
public class AT_DataManager {
13-
14-
15-
15+
1616
@Test
17-
@UnitTestMethod(target = DataManager.class ,name = "init", args = {DataManagerContext.class})
17+
@UnitTestMethod(target = DataManager.class, name = "init", args = { DataManagerContext.class })
1818
public void testInit() {
1919
DataManager dataManager = new DataManager();
2020
assertFalse(dataManager.isInitialized());
21-
dataManager.init(null);
21+
DataManagerContext dataManagerContext = new DataManagerContext(new DataManagerId(5), null);
22+
dataManager.init(dataManagerContext);
2223
assertTrue(dataManager.isInitialized());
24+
25+
ContractException contractException = assertThrows(ContractException.class,
26+
() -> dataManager.init(dataManagerContext));
27+
assertEquals(NucleusError.DATA_MANAGER_DUPLICATE_INITIALIZATION, contractException.getErrorType());
28+
29+
contractException = assertThrows(ContractException.class, () -> {
30+
DataManager dm = new DataManager();
31+
dm.init(null);
32+
});
33+
assertEquals(NucleusError.NULL_DATA_MANAGER_CONTEXT, contractException.getErrorType());
34+
2335
}
24-
25-
@UnitTestConstructor(target = DataManager.class ,args = {})
36+
37+
@UnitTestConstructor(target = DataManager.class, args = {})
2638
@Test
2739
public void testConstructor() {
28-
//nothing to test
40+
// nothing to test
2941
}
30-
42+
3143
@Test
32-
@UnitTestMethod(target = DataManager.class ,name = "toString", args = {})
44+
@UnitTestMethod(target = DataManager.class, name = "toString", args = {})
3345
public void testToString() {
34-
//nothing to test
46+
// nothing to test
3547
}
3648
}

0 commit comments

Comments
 (0)