Related to issue #764 - adds support for the R4 FHIR context in AbstractJaxRsConformanceProvider
This commit is contained in:
parent
452f6bc24c
commit
277eddc8d2
|
@ -66,6 +66,11 @@
|
||||||
<artifactId>hapi-fhir-structures-dstu3</artifactId>
|
<artifactId>hapi-fhir-structures-dstu3</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
|
<artifactId>hapi-fhir-structures-r4</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.ws.rs</groupId>
|
<groupId>javax.ws.rs</groupId>
|
||||||
|
|
|
@ -66,6 +66,7 @@ public abstract class AbstractJaxRsConformanceProvider extends AbstractJaxRsProv
|
||||||
private RestulfulServerConfiguration serverConfiguration = new RestulfulServerConfiguration();
|
private RestulfulServerConfiguration serverConfiguration = new RestulfulServerConfiguration();
|
||||||
|
|
||||||
/** the conformance. It is created once during startup */
|
/** the conformance. It is created once during startup */
|
||||||
|
private org.hl7.fhir.r4.model.CapabilityStatement myR4CapabilityStatement;
|
||||||
private CapabilityStatement myDstu3CapabilityStatement;
|
private CapabilityStatement myDstu3CapabilityStatement;
|
||||||
private org.hl7.fhir.dstu2016may.model.Conformance myDstu2_1Conformance;
|
private org.hl7.fhir.dstu2016may.model.Conformance myDstu2_1Conformance;
|
||||||
private ca.uhn.fhir.model.dstu2.resource.Conformance myDstu2Conformance;
|
private ca.uhn.fhir.model.dstu2.resource.Conformance myDstu2Conformance;
|
||||||
|
@ -126,7 +127,11 @@ public abstract class AbstractJaxRsConformanceProvider extends AbstractJaxRsProv
|
||||||
HardcodedServerAddressStrategy hardcodedServerAddressStrategy = new HardcodedServerAddressStrategy();
|
HardcodedServerAddressStrategy hardcodedServerAddressStrategy = new HardcodedServerAddressStrategy();
|
||||||
hardcodedServerAddressStrategy.setValue(getBaseForServer());
|
hardcodedServerAddressStrategy.setValue(getBaseForServer());
|
||||||
serverConfiguration.setServerAddressStrategy(hardcodedServerAddressStrategy);
|
serverConfiguration.setServerAddressStrategy(hardcodedServerAddressStrategy);
|
||||||
if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU3)) {
|
if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.R4)) {
|
||||||
|
org.hl7.fhir.r4.hapi.rest.server.ServerCapabilityStatementProvider serverCapabilityStatementProvider = new org.hl7.fhir.r4.hapi.rest.server.ServerCapabilityStatementProvider(serverConfiguration);
|
||||||
|
serverCapabilityStatementProvider.initializeOperations();
|
||||||
|
myR4CapabilityStatement = serverCapabilityStatementProvider.getServerConformance(null);
|
||||||
|
} else if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU3)) {
|
||||||
ServerCapabilityStatementProvider serverCapabilityStatementProvider = new ServerCapabilityStatementProvider(serverConfiguration);
|
ServerCapabilityStatementProvider serverCapabilityStatementProvider = new ServerCapabilityStatementProvider(serverConfiguration);
|
||||||
serverCapabilityStatementProvider.initializeOperations();
|
serverCapabilityStatementProvider.initializeOperations();
|
||||||
myDstu3CapabilityStatement = serverCapabilityStatementProvider.getServerConformance(null);
|
myDstu3CapabilityStatement = serverCapabilityStatementProvider.getServerConformance(null);
|
||||||
|
@ -177,7 +182,10 @@ public abstract class AbstractJaxRsConformanceProvider extends AbstractJaxRsProv
|
||||||
response.addHeader(Constants.HEADER_CORS_ALLOW_ORIGIN, "*");
|
response.addHeader(Constants.HEADER_CORS_ALLOW_ORIGIN, "*");
|
||||||
|
|
||||||
IBaseResource conformance = null;
|
IBaseResource conformance = null;
|
||||||
if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU3)) {
|
if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.R4)) {
|
||||||
|
conformance = myR4CapabilityStatement;
|
||||||
|
// return (Response) response.returnResponse(ParseAction.create(myDstu3CapabilityStatement), Constants.STATUS_HTTP_200_OK, true, null, getResourceType().getSimpleName());
|
||||||
|
} else if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU3)) {
|
||||||
conformance = myDstu3CapabilityStatement;
|
conformance = myDstu3CapabilityStatement;
|
||||||
// return (Response) response.returnResponse(ParseAction.create(myDstu3CapabilityStatement), Constants.STATUS_HTTP_200_OK, true, null, getResourceType().getSimpleName());
|
// return (Response) response.returnResponse(ParseAction.create(myDstu3CapabilityStatement), Constants.STATUS_HTTP_200_OK, true, null, getResourceType().getSimpleName());
|
||||||
} else if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU2_1)) {
|
} else if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU2_1)) {
|
||||||
|
@ -271,7 +279,9 @@ public abstract class AbstractJaxRsConformanceProvider extends AbstractJaxRsProv
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public Class<IBaseResource> getResourceType() {
|
public Class<IBaseResource> getResourceType() {
|
||||||
if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU3)) {
|
if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.R4)) {
|
||||||
|
return Class.class.cast(org.hl7.fhir.r4.model.CapabilityStatement.class);
|
||||||
|
} else if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU3)) {
|
||||||
return Class.class.cast(CapabilityStatement.class);
|
return Class.class.cast(CapabilityStatement.class);
|
||||||
} else if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU2_1)) {
|
} else if (super.getFhirContext().getVersion().getVersion().equals(FhirVersionEnum.DSTU2_1)) {
|
||||||
return Class.class.cast(org.hl7.fhir.dstu2016may.model.Conformance.class);
|
return Class.class.cast(org.hl7.fhir.dstu2016may.model.Conformance.class);
|
||||||
|
|
|
@ -12,13 +12,13 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
import javax.ws.rs.HttpMethod;
|
import javax.ws.rs.HttpMethod;
|
||||||
import javax.ws.rs.core.*;
|
import javax.ws.rs.core.*;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsDummyPatientProviderDstu2Hl7Org;
|
||||||
import org.glassfish.jersey.internal.MapPropertiesDelegate;
|
import org.glassfish.jersey.internal.MapPropertiesDelegate;
|
||||||
import org.glassfish.jersey.server.ContainerRequest;
|
import org.glassfish.jersey.server.ContainerRequest;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsDummyPatientProvider;
|
|
||||||
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsMockPatientRestProviderDstu2Hl7Org;
|
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsMockPatientRestProviderDstu2Hl7Org;
|
||||||
import ca.uhn.fhir.rest.api.Constants;
|
import ca.uhn.fhir.rest.api.Constants;
|
||||||
import ca.uhn.fhir.rest.server.IResourceProvider;
|
import ca.uhn.fhir.rest.server.IResourceProvider;
|
||||||
|
@ -48,7 +48,7 @@ public class AbstractJaxRsConformanceProviderDstu2Hl7OrgTest {
|
||||||
@Test
|
@Test
|
||||||
public void testConformance() throws Exception {
|
public void testConformance() throws Exception {
|
||||||
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
providers.put(TestJaxRsDummyPatientProvider.class, new TestJaxRsDummyPatientProvider());
|
providers.put(TestJaxRsDummyPatientProviderDstu2Hl7Org.class, new TestJaxRsDummyPatientProviderDstu2Hl7Org());
|
||||||
Response response = createConformanceProvider(providers).conformance();
|
Response response = createConformanceProvider(providers).conformance();
|
||||||
System.out.println(response);
|
System.out.println(response);
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ public class AbstractJaxRsConformanceProviderDstu2Hl7OrgTest {
|
||||||
@Test
|
@Test
|
||||||
public void testConformanceUsingOptions() throws Exception {
|
public void testConformanceUsingOptions() throws Exception {
|
||||||
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
providers.put(TestJaxRsDummyPatientProvider.class, new TestJaxRsDummyPatientProvider());
|
providers.put(TestJaxRsDummyPatientProviderDstu2Hl7Org.class, new TestJaxRsDummyPatientProviderDstu2Hl7Org());
|
||||||
Response response = createConformanceProvider(providers).conformanceUsingOptions();
|
Response response = createConformanceProvider(providers).conformanceUsingOptions();
|
||||||
System.out.println(response);
|
System.out.println(response);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
import javax.ws.rs.HttpMethod;
|
import javax.ws.rs.HttpMethod;
|
||||||
import javax.ws.rs.core.*;
|
import javax.ws.rs.core.*;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsDummyPatientProviderDstu2_1;
|
||||||
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsMockPatientRestProviderDstu2_1;
|
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsMockPatientRestProviderDstu2_1;
|
||||||
import org.glassfish.jersey.internal.MapPropertiesDelegate;
|
import org.glassfish.jersey.internal.MapPropertiesDelegate;
|
||||||
import org.glassfish.jersey.server.ContainerRequest;
|
import org.glassfish.jersey.server.ContainerRequest;
|
||||||
|
@ -19,7 +20,6 @@ import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsDummyPatientProvider;
|
|
||||||
import ca.uhn.fhir.rest.api.Constants;
|
import ca.uhn.fhir.rest.api.Constants;
|
||||||
import ca.uhn.fhir.rest.server.IResourceProvider;
|
import ca.uhn.fhir.rest.server.IResourceProvider;
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ public class AbstractJaxRsConformanceProviderDstu2_1Test {
|
||||||
@Test
|
@Test
|
||||||
public void testConformance() throws Exception {
|
public void testConformance() throws Exception {
|
||||||
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
providers.put(TestJaxRsDummyPatientProvider.class, new TestJaxRsDummyPatientProvider());
|
providers.put(TestJaxRsDummyPatientProviderDstu2_1.class, new TestJaxRsDummyPatientProviderDstu2_1());
|
||||||
Response response = createConformanceProvider(providers).conformance();
|
Response response = createConformanceProvider(providers).conformance();
|
||||||
System.out.println(response);
|
System.out.println(response);
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ public class AbstractJaxRsConformanceProviderDstu2_1Test {
|
||||||
@Test
|
@Test
|
||||||
public void testConformanceUsingOptions() throws Exception {
|
public void testConformanceUsingOptions() throws Exception {
|
||||||
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
providers.put(TestJaxRsDummyPatientProvider.class, new TestJaxRsDummyPatientProvider());
|
providers.put(TestJaxRsDummyPatientProviderDstu2_1.class, new TestJaxRsDummyPatientProviderDstu2_1());
|
||||||
Response response = createConformanceProvider(providers).conformanceUsingOptions();
|
Response response = createConformanceProvider(providers).conformanceUsingOptions();
|
||||||
System.out.println(response);
|
System.out.println(response);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
package ca.uhn.fhir.jaxrs.server;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import javax.ws.rs.HttpMethod;
|
||||||
|
import javax.ws.rs.core.*;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsDummyPatientProviderR4;
|
||||||
|
import ca.uhn.fhir.jaxrs.server.test.TestJaxRsMockPatientRestProviderR4;
|
||||||
|
import org.glassfish.jersey.internal.MapPropertiesDelegate;
|
||||||
|
import org.glassfish.jersey.server.ContainerRequest;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
|
import ca.uhn.fhir.rest.api.Constants;
|
||||||
|
import ca.uhn.fhir.rest.server.IResourceProvider;
|
||||||
|
|
||||||
|
public class AbstractJaxRsConformanceProviderR4Test {
|
||||||
|
|
||||||
|
private static final String BASEURI = "http://basiuri";
|
||||||
|
private static final String REQUESTURI = BASEURI + "/metadata";
|
||||||
|
AbstractJaxRsConformanceProvider provider;
|
||||||
|
private ConcurrentHashMap<Class<? extends IResourceProvider>, IResourceProvider> providers;
|
||||||
|
private ContainerRequest headers;
|
||||||
|
private MultivaluedHashMap<String, String> queryParameters;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
// headers
|
||||||
|
headers = new ContainerRequest(new URI(BASEURI), new URI(REQUESTURI), HttpMethod.GET, null,
|
||||||
|
new MapPropertiesDelegate());
|
||||||
|
// uri info
|
||||||
|
queryParameters = new MultivaluedHashMap<String, String>();
|
||||||
|
|
||||||
|
|
||||||
|
providers = new ConcurrentHashMap<Class<? extends IResourceProvider>, IResourceProvider>();
|
||||||
|
provider = createConformanceProvider(providers);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConformance() throws Exception {
|
||||||
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
|
providers.put(TestJaxRsDummyPatientProviderR4.class, new TestJaxRsDummyPatientProviderR4());
|
||||||
|
Response response = createConformanceProvider(providers).conformance();
|
||||||
|
System.out.println(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConformanceUsingOptions() throws Exception {
|
||||||
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
|
providers.put(TestJaxRsDummyPatientProviderR4.class, new TestJaxRsDummyPatientProviderR4());
|
||||||
|
Response response = createConformanceProvider(providers).conformanceUsingOptions();
|
||||||
|
System.out.println(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConformanceWithMethods() throws Exception {
|
||||||
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
|
providers.put(TestJaxRsMockPatientRestProviderR4.class, new TestJaxRsMockPatientRestProviderR4());
|
||||||
|
Response response = createConformanceProvider(providers).conformance();
|
||||||
|
assertEquals(Constants.STATUS_HTTP_200_OK, response.getStatus());
|
||||||
|
assertTrue(response.getEntity().toString().contains("\"type\": \"Patient\""));
|
||||||
|
assertTrue(response.getEntity().toString().contains("\"someCustomOperation"));
|
||||||
|
System.out.println(response);
|
||||||
|
System.out.println(response.getEntity());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConformanceInXml() throws Exception {
|
||||||
|
queryParameters.put(Constants.PARAM_FORMAT, Arrays.asList(Constants.CT_XML));
|
||||||
|
providers.put(AbstractJaxRsConformanceProvider.class, provider);
|
||||||
|
providers.put(TestJaxRsMockPatientRestProviderR4.class, new TestJaxRsMockPatientRestProviderR4());
|
||||||
|
Response response = createConformanceProvider(providers).conformance();
|
||||||
|
assertEquals(Constants.STATUS_HTTP_200_OK, response.getStatus());
|
||||||
|
System.out.println(response.getEntity());
|
||||||
|
assertTrue(response.getEntity().toString().contains(" <type value=\"Patient\"/>"));
|
||||||
|
assertTrue(response.getEntity().toString().contains("\"someCustomOperation"));
|
||||||
|
System.out.println(response.getEntity());
|
||||||
|
}
|
||||||
|
|
||||||
|
private AbstractJaxRsConformanceProvider createConformanceProvider(final ConcurrentHashMap<Class<? extends IResourceProvider>, IResourceProvider> providers)
|
||||||
|
throws Exception {
|
||||||
|
AbstractJaxRsConformanceProvider result = new AbstractJaxRsConformanceProvider(FhirContext.forR4(), null, null, null) {
|
||||||
|
@Override
|
||||||
|
protected ConcurrentHashMap<Class<? extends IResourceProvider>, IResourceProvider> getProviders() {
|
||||||
|
return providers;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// mocks
|
||||||
|
UriInfo uriInfo = mock(UriInfo.class);
|
||||||
|
when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
|
||||||
|
when(uriInfo.getBaseUri()).thenReturn(new URI(BASEURI));
|
||||||
|
when(uriInfo.getRequestUri()).thenReturn(new URI(BASEURI + "/foo"));
|
||||||
|
result.setUriInfo(uriInfo);
|
||||||
|
result.setHeaders(headers);
|
||||||
|
result.setUpPostConstruct();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package ca.uhn.fhir.jaxrs.server.test;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jaxrs.server.AbstractJaxRsResourceProvider;
|
||||||
|
import org.hl7.fhir.instance.model.Patient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A dummy patient provider exposing no methods
|
||||||
|
*/
|
||||||
|
public class TestJaxRsDummyPatientProviderDstu2Hl7Org extends AbstractJaxRsResourceProvider<Patient> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Patient> getResourceType() {
|
||||||
|
return Patient.class;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package ca.uhn.fhir.jaxrs.server.test;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jaxrs.server.AbstractJaxRsResourceProvider;
|
||||||
|
import org.hl7.fhir.dstu2016may.model.Patient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A dummy patient provider exposing no methods
|
||||||
|
*/
|
||||||
|
public class TestJaxRsDummyPatientProviderDstu2_1 extends AbstractJaxRsResourceProvider<Patient> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Patient> getResourceType() {
|
||||||
|
return Patient.class;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package ca.uhn.fhir.jaxrs.server.test;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jaxrs.server.AbstractJaxRsResourceProvider;
|
||||||
|
import org.hl7.fhir.r4.model.Patient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A dummy patient provider exposing no methods
|
||||||
|
*/
|
||||||
|
public class TestJaxRsDummyPatientProviderR4 extends AbstractJaxRsResourceProvider<Patient> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Patient> getResourceType() {
|
||||||
|
return Patient.class;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,128 @@
|
||||||
|
package ca.uhn.fhir.jaxrs.server.test;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.ejb.Stateless;
|
||||||
|
import javax.interceptor.Interceptors;
|
||||||
|
import javax.ws.rs.*;
|
||||||
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
|
import org.hl7.fhir.r4.model.*;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
|
import ca.uhn.fhir.jaxrs.server.AbstractJaxRsResourceProvider;
|
||||||
|
import ca.uhn.fhir.jaxrs.server.interceptor.JaxRsExceptionInterceptor;
|
||||||
|
import ca.uhn.fhir.rest.annotation.*;
|
||||||
|
import ca.uhn.fhir.rest.api.*;
|
||||||
|
import ca.uhn.fhir.rest.api.Constants;
|
||||||
|
import ca.uhn.fhir.rest.param.StringAndListParam;
|
||||||
|
import ca.uhn.fhir.rest.param.StringParam;
|
||||||
|
import ca.uhn.fhir.rest.server.FifoMemoryPagingProvider;
|
||||||
|
import ca.uhn.fhir.rest.server.IPagingProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A test server delegating each call to a mock
|
||||||
|
*/
|
||||||
|
@Path(TestJaxRsMockPatientRestProviderR4.PATH)
|
||||||
|
@Stateless
|
||||||
|
@Produces({ MediaType.APPLICATION_JSON, Constants.CT_FHIR_JSON, Constants.CT_FHIR_XML, Constants.CT_FHIR_JSON_NEW, Constants.CT_FHIR_XML_NEW })
|
||||||
|
@Interceptors(JaxRsExceptionInterceptor.class)
|
||||||
|
public class TestJaxRsMockPatientRestProviderR4 extends AbstractJaxRsResourceProvider<Patient> {
|
||||||
|
|
||||||
|
static final String PATH = "/Patient";
|
||||||
|
|
||||||
|
public static final TestJaxRsMockPatientRestProviderR4 mock = Mockito.mock(TestJaxRsMockPatientRestProviderR4.class);
|
||||||
|
|
||||||
|
public static final FifoMemoryPagingProvider PAGING_PROVIDER;
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
PAGING_PROVIDER = new FifoMemoryPagingProvider(10);
|
||||||
|
PAGING_PROVIDER.setDefaultPageSize(10);
|
||||||
|
PAGING_PROVIDER.setMaximumPageSize(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public TestJaxRsMockPatientRestProviderR4() {
|
||||||
|
super(FhirContext.forR4());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Search
|
||||||
|
public List<Patient> search(@RequiredParam(name = Patient.SP_NAME) final StringParam name, @RequiredParam(name=Patient.SP_ADDRESS) StringAndListParam theAddressParts) {
|
||||||
|
return mock.search(name, theAddressParts);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Update
|
||||||
|
public MethodOutcome update(@IdParam final IdType theId, @ResourceParam final Patient patient,@ConditionalUrlParam final String theConditional) throws Exception {
|
||||||
|
return mock.update(theId, patient, theConditional);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Read
|
||||||
|
public Patient find(@IdParam final IdType theId) {
|
||||||
|
return mock.find(theId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Read(version = true)
|
||||||
|
public Patient findHistory(@IdParam final IdType theId) {
|
||||||
|
return mock.findHistory(theId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Create
|
||||||
|
public MethodOutcome create(@ResourceParam final Patient patient, @ConditionalUrlParam String theConditional)
|
||||||
|
throws Exception {
|
||||||
|
return mock.create(patient, theConditional);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Delete
|
||||||
|
public MethodOutcome delete(@IdParam final IdType theId, @ConditionalUrlParam final String theConditional) {
|
||||||
|
return mock.delete(theId, theConditional);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Search(compartmentName = "Condition")
|
||||||
|
public List<IBaseResource> searchCompartment(@IdParam IdType thePatientId) {
|
||||||
|
return mock.searchCompartment(thePatientId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/{id}/$someCustomOperation")
|
||||||
|
public Response someCustomOperationUsingGet(@PathParam("id") String id, String resource) throws Exception {
|
||||||
|
return customOperation(resource, RequestTypeEnum.GET, id, "$someCustomOperation",
|
||||||
|
RestOperationTypeEnum.EXTENDED_OPERATION_INSTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/{id}/$someCustomOperation")
|
||||||
|
public Response someCustomOperationUsingPost(@PathParam("id") String id, String resource) throws Exception {
|
||||||
|
return customOperation(resource, RequestTypeEnum.POST, id, "$someCustomOperation",
|
||||||
|
RestOperationTypeEnum.EXTENDED_OPERATION_INSTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(name = "someCustomOperation", idempotent = true, returnParameters = {
|
||||||
|
@OperationParam(name = "return", type = StringType.class) })
|
||||||
|
public Parameters someCustomOperation(@IdParam IdType myId, @OperationParam(name = "dummy") StringType dummyInput) {
|
||||||
|
return mock.someCustomOperation(myId, dummyInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Validate()
|
||||||
|
public MethodOutcome validate(@ResourceParam final Patient resource) {
|
||||||
|
MethodOutcome mO = new MethodOutcome();
|
||||||
|
mO.setOperationOutcome(new OperationOutcome());
|
||||||
|
return mO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Patient> getResourceType() {
|
||||||
|
return Patient.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPagingProvider getPagingProvider() {
|
||||||
|
return PAGING_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue