helperMock;
+
+ @BeforeEach
+ void setUp() {
+ // 1. Register SpringUtils mocks FIRST (before static mocking)
+ registerMock(SomeDao.class, mockSomeDao);
+ registerMock(OscarLogDao.class, createAndRegisterMock(OscarLogDao.class));
+
+ // 2. Mock static classes SECOND
+ logActionMock = mockStatic(LogAction.class);
+ helperMock = mockStatic(SomeStaticHelper.class);
+
+ // 3. Configure default security behavior
+ when(mockSecurityInfoManager.hasPrivilege(any(), anyString(), anyString(), any()))
+ .thenReturn(true);
+
+ // 4. Create manager and inject dependencies via reflection
+ manager = new MyManagerImpl();
+ injectDependency(manager, "someDao", mockSomeDao);
+ injectDependency(manager, "securityInfoManager", mockSecurityInfoManager);
+ }
+
+ @AfterEach
+ void tearDown() {
+ // CRITICAL: Close all static mocks to prevent test pollution
+ if (helperMock != null) helperMock.close();
+ if (logActionMock != null) logActionMock.close();
+ }
+
+ /**
+ * Tests for security and privilege checking.
+ */
+ @Nested
+ @DisplayName("Security Tests")
+ @Tag("security")
+ class SecurityTests {
+ @Test
+ @DisplayName("should throw exception when privilege denied")
+ void shouldThrowException_whenPrivilegeDenied() {
+ reset(mockSecurityInfoManager);
+ when(mockSecurityInfoManager.hasPrivilege(any(), anyString(), anyString(), any()))
+ .thenReturn(false);
+
+ assertThatThrownBy(() -> manager.doSomething(loggedInInfo, 1))
+ .isInstanceOf(RuntimeException.class)
+ .hasMessageContaining("missing required sec object");
+ }
+ }
+}
+```
+
+### Reflection-Based Dependency Injection
+
+When managers don't have setters for dependencies, use reflection:
+
+```java
+protected void injectDependency(Object target, String fieldName, Object dependency) {
+ try {
+ java.lang.reflect.Field field = target.getClass().getDeclaredField(fieldName);
+ field.setAccessible(true);
+ field.set(target, dependency);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to inject " + fieldName, e);
+ }
+}
+```
+
+### Domain-Specific Base Classes
+
+Create a base class for each domain with test data builders:
+
+```java
+@Tag("unit")
+@Tag("fast")
+@Tag("demographic")
+public abstract class DemographicUnitTestBase extends OpenOUnitTestBase {
+
+ protected SecurityInfoManager mockSecurityInfoManager;
+ protected LoggedInInfo mockLoggedInInfo;
+ protected Facility mockFacility;
+
+ protected static final Integer TEST_DEMO_NO = 12345;
+ protected static final String TEST_PROVIDER = "999990";
+
+ @BeforeEach
+ void setUpDemographicMocks() {
+ mockSecurityInfoManager = Mockito.mock(SecurityInfoManager.class);
+ mockLoggedInInfo = Mockito.mock(LoggedInInfo.class);
+ mockFacility = Mockito.mock(Facility.class);
+
+ Mockito.lenient().when(mockLoggedInInfo.getCurrentFacility()).thenReturn(mockFacility);
+ Mockito.lenient().when(mockFacility.isIntegratorEnabled()).thenReturn(false);
+
+ registerMock(SecurityInfoManager.class, mockSecurityInfoManager);
+ }
+
+ protected Demographic createTestDemographic() {
+ Demographic demographic = new Demographic();
+ demographic.setDemographicNo(TEST_DEMO_NO);
+ demographic.setFirstName("John");
+ demographic.setLastName("Doe");
+ // ... set other fields
+ return demographic;
+ }
+}
+```
+
+### @Nested Class Documentation
+
+All @Nested test classes should have comprehensive JavaDoc:
+
+```java
+/**
+ * Tests for demographic search functionality.
+ *
+ * These tests cover various search operations including:
+ *
+ * - Search by name (partial matching)
+ * - Search by health card number (HIN)
+ * - Search by multiple attributes
+ *
+ */
+@Nested
+@DisplayName("Search Operations")
+@Tag("search")
+class SearchOperationsTests {
+ // tests...
+}
+```
+
## Unit Testing with SpringUtils
### Handling the SpringUtils Anti-Pattern
diff --git a/docs/test/test-writing-guide.md b/docs/test/test-writing-guide.md
index 6d2e73de633..1ba7f905103 100644
--- a/docs/test/test-writing-guide.md
+++ b/docs/test/test-writing-guide.md
@@ -182,9 +182,11 @@ void shouldPerformExpectedBehavior_whenConditionIsMet() { // camelCase with ONE
---
-## Test Base Class
+## Test Base Classes
-All modern tests should extend `OpenOTestBase`:
+### Integration Tests - OpenOTestBase
+
+All modern integration tests should extend `OpenOTestBase`:
```java
@ExtendWith(SpringExtension.class)
@@ -214,6 +216,65 @@ public abstract class OpenOTestBase {
3. **EntityManager**: Provides properly configured EntityManager
4. **Transaction support**: Tests are transactional and roll back automatically
+### Unit Tests - OpenOUnitTestBase
+
+For unit tests (no database, all mocks), extend `OpenOUnitTestBase`:
+
+```java
+@Tag("unit")
+@Tag("fast")
+public abstract class OpenOUnitTestBase {
+
+ protected MockedStatic springUtilsMock;
+ protected Map, Object> mockedBeans = new HashMap<>();
+
+ @BeforeEach
+ void setUpSpringUtilsMocking() {
+ springUtilsMock = mockStatic(SpringUtils.class);
+ springUtilsMock.when(() -> SpringUtils.getBean(any(Class.class)))
+ .thenAnswer(invocation -> mockedBeans.get(invocation.getArgument(0)));
+ }
+
+ @AfterEach
+ void tearDownSpringUtilsMocking() {
+ if (springUtilsMock != null) springUtilsMock.close();
+ mockedBeans.clear();
+ }
+
+ protected void registerMock(Class clazz, T mock) {
+ mockedBeans.put(clazz, mock);
+ }
+}
+```
+
+### Domain-Specific Base Classes
+
+For complex domains (like Demographic), create a domain-specific base class:
+
+```java
+@Tag("unit")
+@Tag("fast")
+@Tag("demographic")
+public abstract class DemographicUnitTestBase extends OpenOUnitTestBase {
+
+ protected SecurityInfoManager mockSecurityInfoManager;
+ protected LoggedInInfo mockLoggedInInfo;
+
+ protected static final Integer TEST_DEMO_NO = 12345;
+
+ @BeforeEach
+ void setUpDemographicMocks() {
+ mockSecurityInfoManager = Mockito.mock(SecurityInfoManager.class);
+ mockLoggedInInfo = Mockito.mock(LoggedInInfo.class);
+ registerMock(SecurityInfoManager.class, mockSecurityInfoManager);
+ }
+
+ // Test data builders
+ protected Demographic createTestDemographic() { /* ... */ }
+ protected DemographicExt createTestDemographicExt(Integer demoNo, String key, String value) { /* ... */ }
+}
+```
+
---
## Test Tagging System
@@ -268,6 +329,45 @@ class TicklerDaoFindIntegrationTest extends OpenOTestBase {
---
+## Static Class Mocking for Manager Tests
+
+Manager tests often need to mock static classes like `LogAction` or `DemographicContactCreator`.
+
+### Critical Order of Operations
+
+**ALWAYS register SpringUtils mocks BEFORE creating static mocks:**
+
+```java
+@BeforeEach
+void setUp() {
+ // 1. FIRST: Register mocks for SpringUtils (static initializers may need these)
+ registerMock(OscarLogDao.class, createAndRegisterMock(OscarLogDao.class));
+ registerMock(ProfessionalSpecialistDao.class, createAndRegisterMock(ProfessionalSpecialistDao.class));
+
+ // 2. SECOND: Mock static classes (their static initializers run now)
+ logActionMock = mockStatic(LogAction.class);
+ demographicContactCreatorMock = mockStatic(DemographicContactCreator.class);
+
+ // 3. Configure static mock behavior
+ demographicContactCreatorMock.when(() ->
+ DemographicContactCreator.addContactDetailsToDemographicContact(anyList()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+}
+
+@AfterEach
+void tearDown() {
+ // CRITICAL: Close static mocks in reverse order
+ if (demographicContactCreatorMock != null) demographicContactCreatorMock.close();
+ if (logActionMock != null) logActionMock.close();
+}
+```
+
+### Why Order Matters
+
+When `mockStatic(LogAction.class)` is called, Java loads and initializes the `LogAction` class. If `LogAction`'s static initializer calls `SpringUtils.getBean(OscarLogDao.class)`, that mock must already be registered, or you'll get a `NoClassDefFoundError` or `NullPointerException`.
+
+---
+
## Common Issues and Solutions
### "Table not found" Errors
@@ -301,6 +401,9 @@ class TicklerDaoFindIntegrationTest extends OpenOTestBase {
## File Locations
- **Modern tests**: `src/test-modern/java/ca/openosp/openo/`
+- **Unit test base**: `src/test-modern/java/ca/openosp/openo/test/unit/OpenOUnitTestBase.java`
+- **Manager tests**: `src/test-modern/java/ca/openosp/openo/managers/`
+- **Domain bases**: `src/test-modern/java/ca/openosp/openo/managers/DemographicUnitTestBase.java`
- **Test resources**: `src/test-modern/resources/`
- **Test context**: `src/test-modern/resources/applicationContext-test.xml`
- **H2 schema**: `src/test-modern/resources/schema.sql`
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/_remote.repositories b/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/_remote.repositories
deleted file mode 100644
index 68c3c70a7b0..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/_remote.repositories
+++ /dev/null
@@ -1,3 +0,0 @@
-#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
-#Fri Jul 21 10:23:09 EDT 2017
-hapi-deployable-pom-2.5.pom>central=
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom b/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom
deleted file mode 100644
index 5feca654e2d..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom
+++ /dev/null
@@ -1,164 +0,0 @@
-
- 4.0.0
-
-
- ca.uhn.hapi.fhir
- hapi-fhir
- 2.5
- ../pom.xml
-
-
- hapi-deployable-pom
- pom
-
- HAPI FHIR - Deployable Artifact Parent POM
-
-
-
-
-
-
-
- org.codehaus.mojo
- animal-sniffer-maven-plugin
-
-
- check-java-api
- test
- true
-
- check
-
-
-
- org.codehaus.mojo.signature
- java16
- 1.1
-
-
-
-
-
-
-
- org.ow2.asm
- asm-all
- 5.0.4
-
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-project-info-reports-plugin
-
- true
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
-
-
- default
-
- javadoc
-
-
-
- http://jamesagnew.github.io/hapi-fhir/apidocs/
- https://docs.oracle.com/javaee/7/api/
-
- -Xdoclint:none
-
-
-
-
-
-
-
-
-
- DIST
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- true
-
- 128m
- 1g
- true
- false
- false
- -Xdoclint:none
-
-
-
- package
-
- jar
-
-
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
-
-
- package
-
- jar-no-fork
-
-
-
-
-
- org.codehaus.mojo
- license-maven-plugin
-
-
- first
-
- update-file-header
-
- process-sources
-
- apache_v2
- true
- true
-
- src/main/java
-
-
-
-
-
-
-
-
-
-
-
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom.lastUpdated b/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom.lastUpdated
deleted file mode 100644
index 26226c266f9..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom.lastUpdated
+++ /dev/null
@@ -1,11 +0,0 @@
-#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
-#Fri Jul 21 10:23:09 EDT 2017
-http\://oscarmcmaster.sourceforge.net/m2/.error=
-http\://hl7api.sourceforge.net/m2/.lastUpdated=1500646988810
-http\://te.marc-hi.ca/mvn/.error=
-file\:///home/marc/workspaces/born/oscar/local_repo/.error=
-https\://repo.maven.apache.org/maven2/.lastUpdated=1500646989032
-http\://oscarmcmaster.sourceforge.net/m2/.lastUpdated=1500646988910
-http\://te.marc-hi.ca/mvn/.lastUpdated=1500646988942
-file\:///home/marc/workspaces/born/oscar/local_repo/.lastUpdated=1500646988727
-http\://hl7api.sourceforge.net/m2/.error=
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom.sha1 b/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom.sha1
deleted file mode 100644
index 4ec32449540..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-deployable-pom/2.5/hapi-deployable-pom-2.5.pom.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7b3dc4af9a1eccae763bbd670f20ed174e0f24b4
\ No newline at end of file
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/_remote.repositories b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/_remote.repositories
deleted file mode 100644
index 6f063dddcd3..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/_remote.repositories
+++ /dev/null
@@ -1,5 +0,0 @@
-#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
-#Mon Jul 24 14:38:53 EDT 2017
-hapi-fhir-base-2.5.pom>central=
-hapi-fhir-base-2.5.jar>central=
-hapi-fhir-base-2.5-sources.jar>central=
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar
deleted file mode 100644
index 0c1704251d6..00000000000
Binary files a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar and /dev/null differ
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar.lastUpdated b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar.lastUpdated
deleted file mode 100644
index 279ea2a6abc..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar.lastUpdated
+++ /dev/null
@@ -1,11 +0,0 @@
-#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
-#Mon Jul 24 14:38:53 EDT 2017
-http\://oscarmcmaster.sourceforge.net/m2/.error=
-http\://hl7api.sourceforge.net/m2/.lastUpdated=1500921532841
-http\://te.marc-hi.ca/mvn/.error=
-file\:///home/marc/workspaces/stable/oscar/local_repo/.error=
-https\://repo.maven.apache.org/maven2/.lastUpdated=1500921533668
-file\:///home/marc/workspaces/stable/oscar/local_repo/.lastUpdated=1500921532659
-http\://oscarmcmaster.sourceforge.net/m2/.lastUpdated=1500921532973
-http\://te.marc-hi.ca/mvn/.lastUpdated=1500921533095
-http\://hl7api.sourceforge.net/m2/.error=
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar.sha1 b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar.sha1
deleted file mode 100644
index 5e99e4d215f..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5-sources.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-54eb7aa925e3514692678fc06ccc1b6233ae04e2
\ No newline at end of file
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar
deleted file mode 100644
index d59cfaa5e52..00000000000
Binary files a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar and /dev/null differ
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar.lastUpdated b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar.lastUpdated
deleted file mode 100644
index 9a339416de0..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar.lastUpdated
+++ /dev/null
@@ -1,11 +0,0 @@
-#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
-#Fri Jul 21 10:23:13 EDT 2017
-http\://oscarmcmaster.sourceforge.net/m2/.error=
-http\://hl7api.sourceforge.net/m2/.lastUpdated=1500646991378
-http\://te.marc-hi.ca/mvn/.error=
-file\:///home/marc/workspaces/born/oscar/local_repo/.error=
-https\://repo.maven.apache.org/maven2/.lastUpdated=1500646993268
-http\://oscarmcmaster.sourceforge.net/m2/.lastUpdated=1500646991474
-http\://te.marc-hi.ca/mvn/.lastUpdated=1500646991532
-file\:///home/marc/workspaces/born/oscar/local_repo/.lastUpdated=1500646991279
-http\://hl7api.sourceforge.net/m2/.error=
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar.sha1 b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar.sha1
deleted file mode 100644
index ea75db16ca3..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-db21c5862679e4645ce40d459811b0dc8ea6c55b
\ No newline at end of file
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom
deleted file mode 100644
index 9e4cd95c70b..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom
+++ /dev/null
@@ -1,261 +0,0 @@
-
- 4.0.0
-
-
- ca.uhn.hapi.fhir
- hapi-deployable-pom
- 2.5
- ../hapi-deployable-pom/pom.xml
-
-
- hapi-fhir-base
- jar
-
- http://jamesagnew.github.io/hapi-fhir/
-
- HAPI FHIR - Core Library
-
-
-
-
-
- com.google.code.gson
- gson
-
-
-
-
- org.codehaus.woodstox
- woodstox-core-asl
-
-
-
-
- org.thymeleaf
- thymeleaf
- true
-
-
- org.javassist
- javassist
- true
-
-
-
-
- com.phloc
- phloc-schematron
- true
-
-
-
-
- com.phloc
- phloc-commons
- true
-
-
-
-
-
-
- org.apache.commons
- commons-lang3
-
-
- commons-codec
- commons-codec
-
-
- commons-io
- commons-io
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- org.slf4j
- jcl-over-slf4j
-
-
- ch.qos.logback
- logback-classic
- true
-
-
-
-
- org.apache.httpcomponents
- httpclient
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.apache.httpcomponents
- httpcore
-
-
-
- org.springframework
- spring-beans
- true
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.springframework
- spring-web
- true
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.springframework
- spring-test
- test
-
-
-
-
- javax.servlet
- javax.servlet-api
- provided
-
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
-
-
- ${basedir}/target/classes
-
-
- ${basedir}/src/main/java
-
- true
-
-
-
- default-prepare-agent
-
- prepare-agent
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- ${argLine} -Dfile.encoding=UTF-8 -Xmx712m
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
-
-
- attach-sources
-
- jar
-
-
-
-
-
-
-
- src/main/resources
- true
-
-
-
-
-
-
- MINI
-
-
- SITE
-
-
-
-
-
- org.apache.maven.plugins
- maven-jxr-plugin
- ${maven_jxr_plugin_version}
-
-
- normal
-
- jxr
-
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
-
-
-
- checkstyle
-
-
-
-
- false
- ${project.basedir}/../src/checkstyle/checkstyle.xml
-
-
-
-
-
-
-
-
-
-
-
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom.lastUpdated b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom.lastUpdated
deleted file mode 100644
index e5c4004f039..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom.lastUpdated
+++ /dev/null
@@ -1,11 +0,0 @@
-#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
-#Fri Jul 21 10:23:08 EDT 2017
-http\://oscarmcmaster.sourceforge.net/m2/.error=
-http\://hl7api.sourceforge.net/m2/.lastUpdated=1500646987963
-http\://te.marc-hi.ca/mvn/.error=
-file\:///home/marc/workspaces/born/oscar/local_repo/.error=
-https\://repo.maven.apache.org/maven2/.lastUpdated=1500646988724
-http\://oscarmcmaster.sourceforge.net/m2/.lastUpdated=1500646988068
-http\://te.marc-hi.ca/mvn/.lastUpdated=1500646988182
-file\:///home/marc/workspaces/born/oscar/local_repo/.lastUpdated=1500646987602
-http\://hl7api.sourceforge.net/m2/.error=
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom.sha1 b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom.sha1
deleted file mode 100644
index a5dd9a9dcf9..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/hapi-fhir-base-2.5.pom.sha1
+++ /dev/null
@@ -1 +0,0 @@
-017c390f3a6b95329a8117e54a898f47a96bba73
\ No newline at end of file
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/m2e-lastUpdated.properties b/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/m2e-lastUpdated.properties
deleted file mode 100644
index f32df9ceb14..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir-base/2.5/m2e-lastUpdated.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Mon Jul 24 14:38:53 EDT 2017
-central|https\://repo.maven.apache.org/maven2|sources=1500921533717
-oscar_repo|http\://oscarmcmaster.sourceforge.net/m2|sources=1500921533717
-marc-te-main|http\://te.marc-hi.ca/mvn|sources=1500921533717
-hapi-sf|http\://hl7api.sourceforge.net/m2|sources=1500921533717
-local_repo|file\:///home/marc/workspaces/stable/oscar/local_repo|sources=1500921533717
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir/2.5/_remote.repositories b/local_repo/ca/uhn/hapi/fhir/hapi-fhir/2.5/_remote.repositories
deleted file mode 100644
index 7984124ae7c..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir/2.5/_remote.repositories
+++ /dev/null
@@ -1,3 +0,0 @@
-#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
-#Fri Jul 21 10:23:09 EDT 2017
-hapi-fhir-2.5.pom>central=
diff --git a/local_repo/ca/uhn/hapi/fhir/hapi-fhir/2.5/hapi-fhir-2.5.pom b/local_repo/ca/uhn/hapi/fhir/hapi-fhir/2.5/hapi-fhir-2.5.pom
deleted file mode 100644
index 73fc3cbdf30..00000000000
--- a/local_repo/ca/uhn/hapi/fhir/hapi-fhir/2.5/hapi-fhir-2.5.pom
+++ /dev/null
@@ -1,1790 +0,0 @@
-
-
-
-
- org.sonatype.oss
- oss-parent
- 9
-
-
- 4.0.0
- ca.uhn.hapi.fhir
- hapi-fhir
- pom
- 2.5
- HAPI-FHIR
- https://hapifhir.io
-
-
- University Health Network
- http://www.uhn.ca
-
-
- 2014
-
-
- GitHub
- https://github.com/jamesagnew/hapi-fhir/issues/
-
-
-
-
- git.server
- scm:git:git@github.com:jamesagnew/hapi-fhir.git
-
-
-
-
- scm:git:git@github.com:jamesagnew/hapi-fhir.git
- scm:git:git@github.com:jamesagnew/hapi-fhir.git
- scm:git:git@github.com:jamesagnew/hapi-fhir.git
-
-
-
-
-
- false
-
- bintray-dnault-maven
- bintray
- http://dl.bintray.com/dnault/maven
-
-
- jitpack.io
- https://jitpack.io
-
-
-
-
-
-
-
-
-
-
- junit
- junit
- test
-
-
- hamcrest-core
- org.hamcrest
-
-
-
-
- org.hamcrest
- java-hamcrest
- test
-
-
- org.mockito
- mockito-all
- test
-
-
-
-
- 3.2
-
-
-
-
- jamesagnew
- James Agnew
- University Health Network
-
-
- dmuylwyk
- Diederik Muylwyk
- Smile CDR
-
-
- Dmitri Sotnikov
- University Health Network
-
-
- Lisa Wong
- University Health Network
-
-
- Josh Mandel
- Boston Children's Hospital
-
-
- lmds
- Laura MacDougall Sookraj
- University Health Network
-
-
- Neal Acharya
- University Health Network
-
-
- David Hay
- Orion Health
-
-
- sweetnavelorange
- James Butler
- Orion Health
-
-
- suranga
- Suranga Nath Kasthurirathne
- OpenMRS / Regenstrief Center for Biomedical Informatics
-
-
- dougmartin
- Doug Martin
- Regenstrief Center for Biomedical Informatics
-
-
- akley
- Alexander Kley
-
-
- preston
- Preston Lee
- Arizona State University
-
-
- jjathman
- Joe Athman
-
-
- petromykhailysyn
- Petro Mykhailyshyn
-
-
- tahurac
- Tahura Chaudhry
- University Health Network
-
-
- b.debeaubien
- Bill de Beaubien
- Systems Made Simple
-
-
- twilson650
- Tom Wilson
-
-
- esteban-aliverti
- Esteban Aliverti
-
-
- mochaholic
- Mohammad Jafari
- Edmond Scientific Company
-
-
- joel-costigliola
- Joel Costigliola
- JCOS-Technologies
-
-
- pukkaone
- Chin Huang
-
-
- SingingTree
- Bryce Van Dyk
-
-
- botunge
- Thomas Andersen
-
-
- samlanfranchi
- Sam Lanfranchi
-
-
- jkiddo
- Jens Kristian Villadsen
-
-
- cmikeb1
- C. Mike Bylund
-
-
- nrpeterson
- Nick Peterson
-
-
- petervanhoute
- Peter Van Houte
-
-
- SRiviere
- Sébastien Rivière
-
-
- karlmdavis
- Karl M. Davis
-
-
- matt-blanchette
- Matt Blanchette
-
-
- petromykhailysyn
- Petro Mykhaylyshyn
-
-
- adam-carbone
- Adam Carbone
-
-
- joelsch
- Joel Schneider
-
-
- euvitudo
- Phillip Warner
-
-
- subhrajyotim
- Subhro
-
-
- mion00
- Carlo Mion
-
-
- kiwiandroiddev
- Matt Clarke
- Orion Health
-
-
- FilipDomazet
- Filip Domazet
-
-
- bdenton
- Bill Denton
- Akana, Inc
-
-
- hnnesv
- Hannes Venter
- Jembi Health Systems
-
-
- vadi2
- Vadim Peretokin
-
-
- lawley
- Michael Lawley
- CSIRO
-
-
- CarthageKing
- CarthageKing
-
-
- gijsbert802
- Gijsbert van den Brink
-
-
- rqg0717
- James Ren
-
-
- Robbert1
- Robbert van Waveren
-
-
- daliboz
- Jenny Syed
- Cerner
-
-
- sekaijin
- sekaijin
-
-
- hugosoares
- Hugo Soares
-
-
- SRiviere
- Sebastien Riviere
-
-
- jodue
- jodue
-
-
- joelsch
- Joel Schneider
-
-
- elnin0815
-
-
- dangerousben
- Ben Spencer
-
-
- maclema
- maclema
-
-
- ohr
- Christian Ohr
-
-
-
-
-
- Apache Software License 2.0
- https://www.apache.org/licenses/LICENSE-2.0.txt
-
-
-
-
-
- yyyy-MM-dd'T'HH:mm:ss'Z'
-
- UTF-8
-
-
- ${user.home}/sites/hapi-fhir
- ${user.home}/sites/scm/hapi-fhir
-
-
- 10.13.1.1
- 2.25.1
- 9.4.5.v20170502
- 5.2.9.Final
- 5.4.1.Final
-
- 5.7.0.Final
- 5.5.4
- 2.5.3
- 1.8
- 2.4
- 2.7.1
- 4.4.6
- 4.3.7.RELEASE
- 3.0.2.RELEASE
- 1.6
-
-
- 1.6.0
-
- UTF-8
- 1.0.1
-
-
-
-
-
- aopalliance
- aopalliance
- 1.0
-
-
- ch.qos.logback
- logback-classic
- 1.2.2
-
-
- com.github.bkiers
- Liqp
- 0.6.4
-
-
- com.github.dnault
- xml-patch
- 0.3.0
-
-
- com.google.errorprone
- error_prone_core
- 2.0.9
-
-
- com.google.guava
- guava
- 21.0
-
-
- com.phloc
- phloc-schematron
- ${phloc_schematron_version}
-
-
- com.phloc
- phloc-commons
- ${phloc_commons_version}
-
-
- commons-cli
- commons-cli
- 1.3.1
-
-
- commons-codec
- commons-codec
- 1.10
-
-
- commons-io
- commons-io
- 2.5
-
-
- directory-naming
- naming-java
- 0.8
- test
-
-
- commons-logging
- commons-logging
-
-
-
-
- javax.ejb
- ejb-api
- 3.0
-
-
- javax.el
- javax.el-api
- 3.0.0
-
-
- javax.interceptor
- javax.interceptor-api
- 1.2
-
-
- javax.json
- javax.json-api
- 1.0
-
-
- com.google.code.gson
- gson
- 2.8.0
-
-
- javax.mail
- javax.mail-api
- 1.5.6
-
-
- javax.servlet
- javax.servlet-api
- 3.1.0
-
-
- javax.transaction
- javax.transaction-api
- 1.2
-
-
- javax.validation
- validation-api
- 1.1.0.Final
-
-
- javax.ws.rs
- javax.ws.rs-api
- 2.0.1
-
-
- junit
- junit
- 4.12
-
-
- lt.velykis.maven.skins
- reflow-velocity-tools
- 1.1.1
-
-
- net.riotopsys
- json_patch
- 0.0.0
-
-
- net.sf.json-lib
- json-lib
- 2.4
- jdk15
-
-
- commons-logging
- commons-logging
-
-
-
-
- net.sf.json-lib
- json-lib
- 2.4
- jdk15-sources
-
-
- net.sf.saxon
- Saxon-HE
- 9.5.1-5
-
-
- org.apache.commons
- commons-dbcp2
- 2.1.1
-
-
- org.apache.commons
- commons-lang3
- 3.5
-
-
- org.apache.derby
- derby
- ${derby_version}
-
-
- org.apache.derby
- derbynet
- ${derby_version}
-
-
- org.apache.derby
- derbyclient
- ${derby_version}
-
-
- org.apache.httpcomponents
- httpclient
- 4.5.2
-
-
- org.apache.httpcomponents
- httpclient-android
- 4.3.5.1
-
-
- org.apache.httpcomponents
- httpcore
- 4.4.5
-
-
- org.apache.lucene
- lucene-highlighter
- ${lucene_version}
-
-
- org.apache.lucene
- lucene-analyzers-phonetic
- ${lucene_version}
-
-
- org.apache.maven.doxia
- doxia-module-markdown
- 1.6
-
-
- org.apache.maven.scm
- maven-scm-api
- 1.9.5
-
-
- org.apache.maven.scm
- maven-scm-manager-plexus
- 1.9.5
-
-
- org.apache.maven.scm
- maven-scm-provider-gitexe
- 1.9.5
-
-
- org.apache.maven.wagon
- wagon-scm
- 2.10
-
-
- org.apache.maven
- maven-project
- 2.2.1
-
-
- org.apache.maven
- maven-plugin-api
- 3.2.5
-
-
- org.apache.maven.plugin-tools
- maven-plugin-annotations
- 3.2
-
-
- org.apache.velocity
- velocity
- 1.7
-
-
- org.apache.velocity
- velocity-tools
- 2.0
-
-
- org.codehaus.plexus
- plexus-compiler-javac
- 2.8.1
-
-
- org.codehaus.plexus
- plexus-compiler-javac-errorprone
- 2.8.1
-
-
- org.codehaus.plexus
- plexus-utils
- 3.0.22
-
-
- org.codehaus.woodstox
- woodstox-core-asl
- 4.4.1
-
-
- org.ebaysf.web
- cors-filter
- ${ebay_cors_filter_version}
-
-
- org.eclipse.jetty
- jetty-http
- ${jetty_version}
-
-
- org.eclipse.jetty
- jetty-servlets
- ${jetty_version}
-
-
- org.eclipse.jetty
- jetty-servlet
- ${jetty_version}
-
-
- org.eclipse.jetty
- jetty-server
- ${jetty_version}
-
-
- org.eclipse.jetty
- jetty-util
- ${jetty_version}
-
-
- org.eclipse.jetty
- jetty-webapp
- ${jetty_version}
-
-
- org.eclipse.jetty.websocket
- websocket-api
- ${jetty_version}
-
-
- org.eclipse.jetty.websocket
- websocket-client
- ${jetty_version}
-
-
- org.eclipse.jetty.websocket
- websocket-server
- ${jetty_version}
-
-
- org.fusesource.jansi
- jansi
- 1.15
-
-
- org.glassfish
- javax.el
- 3.0.0
-
-
- org.glassfish
- javax.json
- 1.0.4
-
-
- org.glassfish.jersey.core
- jersey-server
- ${jersey_version}
-
-
- org.glassfish.jersey.containers
- jersey-container-servlet-core
- ${jersey_version}
-
-
- org.glassfish.jersey.containers
- jersey-container-jetty-http
- ${jersey_version}
-
-
- org.glassfish.jersey.media
- jersey-media-moxy
- ${jersey_version}
-
-
- org.jscience
- jscience
- 4.3.1
-
-
- org.hamcrest
- java-hamcrest
- 2.0.0.0
-
-
- org.hibernate
- hibernate-core
- ${hibernate_version}
-
-
- org.hibernate
- hibernate-ehcache
- ${hibernate_version}
-
-
- org.hibernate
- hibernate-entitymanager
- ${hibernate_version}
-
-
- org.hibernate
- hibernate-validator
- ${hibernate_validator_version}
-
-
- org.hibernate
- hibernate-search-orm
- ${hibernate_search_version}
-
-
- org.javassist
- javassist
- 3.20.0-GA
-
-
- org.mockito
- mockito-all
- 1.10.19
-
-
- org.slf4j
- slf4j-android
- 1.7.25
-
-
- org.slf4j
- slf4j-api
- 1.7.25
-
-
- org.slf4j
- jcl-over-slf4j
- 1.7.25
-
-
- org.springframework
- spring-beans
- ${spring_version}
-
-
- org.springframework
- spring-context
- ${spring_version}
-
-
- org.springframework
- spring-context-support
- ${spring_version}
-
-
- org.springframework
- spring-core
- ${spring_version}
-
-
- org.springframework.data
- spring-data-jpa
- 1.10.4.RELEASE
-
-
- org.springframework
- spring-messaging
- ${spring_version}
-
-
- org.springframework
- spring-orm
- ${spring_version}
-
-
- org.springframework
- spring-test
- ${spring_version}
-
-
- org.springframework
- spring-tx
- ${spring_version}
-
-
- org.springframework
- spring-web
- ${spring_version}
-
-
- org.springframework
- spring-webmvc
- ${spring_version}
-
-
- org.springframework
- spring-websocket
- ${spring_version}
-
-
- org.thymeleaf
- thymeleaf
- ${thymeleaf-version}
-
-
- org.thymeleaf
- thymeleaf-spring4
- ${thymeleaf-version}
-
-
- xmlunit
- xmlunit
- 1.6
-
-
-
-
-
-
-
-
- de.juplo
- hibernate-maven-plugin
- 2.0.0
-
- false
- false
- false
- false
- true
- true
-
-
-
- org.apache.felix
- maven-bundle-plugin
- 3.0.1
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- 1.8
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.6.1
-
- 1.6
- 1.6
-
- 1.8
- 1.8
- true
- UTF-8
-
-
-
- com.google.errorprone
- error_prone_core
- 2.0.19
-
-
- org.codehaus.plexus
- plexus-compiler-javac
- 2.8.1
-
-
- org.codehaus.plexus
- plexus-compiler-javac-errorprone
- 2.8.1
-
-
- org.codehaus.plexus
- plexus-utils
- 3.0.24
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
- 2.10
-
-
- org.apache.maven.plugins
- maven-deploy-plugin
- 2.8.2
-
-
- org.apache.maven.plugins
- maven-gpg-plugin
- 1.6
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 2.10.4
-
-
- org.apache.maven.plugins
- maven-jxr-plugin
- 2.5
-
-
- org.apache.maven.plugins
- maven-failsafe-plugin
- 2.19.1
-
-
- org.apache.maven.plugins
- maven-plugin-plugin
- 3.5
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 2.4.3
-
-
- org.apache.maven.plugins
- maven-source-plugin
- 3.0.0
-
-
- org.codehaus.plexus
- plexus-utils
- 3.0.24
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.19.1
-
- true
- random
- -Dfile.encoding=UTF-8 -Xmx1024m
- 1.0C
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.0.0
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
- 3.0.0
-
-
- org.codehaus.mojo
- animal-sniffer-maven-plugin
- 1.15
-
-
- org.codehaus.mojo
- cobertura-maven-plugin
- 2.7
-
- true
-
-
-
- org.codehaus.mojo
- license-maven-plugin
- 1.12
-
- true
- false
-
-
-
- org.codehaus.mojo
- versions-maven-plugin
- 2.2
-
-
- org.eclipse.jetty
- jetty-maven-plugin
- ${jetty_version}
-
-
- org.eluder.coveralls
- coveralls-maven-plugin
- 4.3.0
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- 0.7.9
-
-
- org.apache.maven.plugins
- maven-site-plugin
-
- 3.4
-
- false
- true
- UTF-8
- UTF-8
- false
-
-
-
- org.apache.maven.wagon
- wagon-scm
-
-
- org.apache.maven.scm
- maven-scm-manager-plexus
-
-
- org.apache.maven.scm
- maven-scm-provider-gitexe
-
-
- org.apache.maven.scm
- maven-scm-api
-
-
-
- org.apache.maven.doxia
- doxia-module-markdown
-
-
- lt.velykis.maven.skins
- reflow-velocity-tools
-
-
- org.apache.velocity
- velocity
-
-
-
-
-
- org.eclipse.m2e
- lifecycle-mapping
- 1.0.0
-
-
-
-
-
-
- ca.uhn.hapi.fhir
-
-
- hapi-tinder-plugin
-
-
- [0.8-SNAPSHOT,)
-
-
-
- generate-jparest-server
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
-
-
- maven-antrun-plugin
-
-
- [1.7,)
-
-
- run
-
-
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
- 2.17
-
-
- com.puppycrawl.tools
- checkstyle
- 6.17
-
-
-
- ${project.basedir}/src/checkstyle/checkstyle.xml
-
-
-
- org.apache.maven.plugins
- maven-install-plugin
- 2.5.2
-
-
-
-
-
- org.apache.maven.plugins
- maven-enforcer-plugin
-
-
- enforce-java
-
- enforce
-
-
-
-
- [1.8,)
-
- The hapi-fhir Maven build requires JDK version 1.8 or higher.
-
-
-
-
-
-
-
-
- org.codehaus.mojo
- license-maven-plugin
- false
-
-
- update-project-license
- package
-
- update-project-license
-
-
- apache_v2
-
-
-
-
-
- maven-antrun-plugin
- false
-
-
- copySubProjects
- site
-
- run
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fixing Checkstyle Report
-
-
- "../../
- "./
-
-
-
- http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-responsive.min.css
- ./css/bootstrap-responsive.min.css
-
-
-
- http://netdna.bootstrapcd
- https://netdna.bootstrapcd
-
-
-
- http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css
- https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css
-
-
-
- http://ajax.googleapis
- https://ajax.googleapis
-
-
-
- \t
-
-
-
-
-
- Welcome]]>
-
-
-
-
-

-
-
-

-
-
-
- ]]>
-
-
-
-
-
-
- addSyntaxHighlighter
- site
-
- run
-
-
-
- Adding Fontawesome
-
-
- Download]]>
- Download]]>
-
-
-
- GitHub Project]]>
- GitHub Project]]>
-
-
-
- Test Servers <]]>
- Test Servers <]]>
-
-
-
- Documentation <]]>
- Documentation <]]>
-
-
-
- Get Help <]]>
- Get Help <]]>
-
- Changing Breadcrumbs
-
-
- /]]>
- /
- Documentation
- /]]>
-
- Adding Syntax Highlighter
-
-
- ]]>
-
- var elements = document.getElementsByClassName("source");
- for (var i=0; i < elements.length; i++) {
- var pres = elements[i].getElementsByTagName("pre");
- for (var j = 0; j < pres.length; j++) {
- var pre = pres[j];
- if (pre.innerHTML.match(/^\s*\<\;/)) {
- pre.className = 'brush: xml';
- } else if (pre.innerHTML.match(/\/\*/)) {
- pre.className = 'brush: java';
- } else if (pre.innerHTML.match(/^\/\//)) {
- pre.className = 'brush: java';
- } else if (pre.innerHTML.match(/^\{/)) {
- pre.className = 'brush: jscript';
- } else if (pre.innerHTML.match(/^\#/)) {
- pre.className = 'brush: bash';
- } else if (pre.innerHTML.match(/\<\;\//)) {
- pre.className = 'brush: xml';
- } else {
- pre.className = 'brush: java';
- }
- }
- }
-
- SyntaxHighlighter.all();
-
-