96 lines
3.3 KiB
Java
96 lines
3.3 KiB
Java
package ca.uhn.fhir.jpa.starter;
|
|
|
|
import ca.uhn.fhir.context.FhirContext;
|
|
import ca.uhn.fhir.model.dstu2.resource.Patient;
|
|
import ca.uhn.fhir.rest.client.api.IGenericClient;
|
|
import ca.uhn.fhir.rest.client.api.ServerValidationModeEnum;
|
|
import ca.uhn.fhir.rest.client.interceptor.LoggingInterceptor;
|
|
import ca.uhn.fhir.util.PortUtil;
|
|
import org.eclipse.jetty.server.Server;
|
|
import org.eclipse.jetty.webapp.WebAppContext;
|
|
import org.hl7.fhir.instance.model.api.IIdType;
|
|
import org.junit.AfterClass;
|
|
import org.junit.BeforeClass;
|
|
import org.junit.Test;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
public class ExampleServerDstu2IT {
|
|
|
|
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ExampleServerDstu2IT.class);
|
|
private static IGenericClient ourClient;
|
|
private static FhirContext ourCtx;
|
|
private static int ourPort;
|
|
|
|
private static Server ourServer;
|
|
private static String ourServerBase;
|
|
|
|
static {
|
|
HapiProperties.forceReload();
|
|
HapiProperties.setProperty(HapiProperties.FHIR_VERSION, "DSTU2");
|
|
HapiProperties.setProperty(HapiProperties.DATASOURCE_URL, "jdbc:derby:memory:dbr2;create=true");
|
|
HapiProperties.setProperty(HapiProperties.TEST_PORT, Integer.toString(PortUtil.findFreePort()));
|
|
ourCtx = FhirContext.forDstu2();
|
|
ourPort = HapiProperties.getTestPort();
|
|
}
|
|
|
|
@Test
|
|
public void testCreateAndRead() throws IOException {
|
|
ourLog.info("Base URL is: http://localhost:" + ourPort + HapiProperties.getServerBase());
|
|
String methodName = "testCreateResourceConditional";
|
|
|
|
Patient pt = new Patient();
|
|
pt.addName().addFamily(methodName);
|
|
IIdType id = ourClient.create().resource(pt).execute().getId();
|
|
|
|
Patient pt2 = ourClient.read().resource(Patient.class).withId(id).execute();
|
|
assertEquals(methodName, pt2.getName().get(0).getFamily().get(0).getValue());
|
|
}
|
|
|
|
@AfterClass
|
|
public static void afterClass() throws Exception {
|
|
ourServer.stop();
|
|
}
|
|
|
|
@BeforeClass
|
|
public static void beforeClass() throws Exception {
|
|
/*
|
|
* This runs under maven, and I'm not sure how else to figure out the target directory from code..
|
|
*/
|
|
String path = ExampleServerDstu2IT.class.getClassLoader().getResource(".keep_hapi-fhir-jpaserver-starter").getPath();
|
|
path = new File(path).getParent();
|
|
path = new File(path).getParent();
|
|
path = new File(path).getParent();
|
|
|
|
ourLog.info("Project base path is: {}", path);
|
|
|
|
if (ourPort == 0) {
|
|
ourPort = RandomServerPortProvider.findFreePort();
|
|
}
|
|
ourServer = new Server(ourPort);
|
|
|
|
WebAppContext webAppContext = new WebAppContext();
|
|
webAppContext.setContextPath("/");
|
|
webAppContext.setDescriptor(path + "/src/main/webapp/WEB-INF/web.xml");
|
|
webAppContext.setResourceBase(path + "/target/hapi-fhir-jpaserver-starter");
|
|
webAppContext.setParentLoaderPriority(true);
|
|
|
|
ourServer.setHandler(webAppContext);
|
|
ourServer.start();
|
|
|
|
ourCtx.getRestfulClientFactory().setServerValidationMode(ServerValidationModeEnum.NEVER);
|
|
ourCtx.getRestfulClientFactory().setSocketTimeout(1200 * 1000);
|
|
ourServerBase = "http://localhost:" + ourPort + HapiProperties.getServerBase();
|
|
ourClient = ourCtx.newRestfulGenericClient(ourServerBase);
|
|
ourClient.registerInterceptor(new LoggingInterceptor(true));
|
|
}
|
|
|
|
public static void main(String[] theArgs) throws Exception {
|
|
ourPort = 8080;
|
|
beforeClass();
|
|
}
|
|
}
|