add message key to all message types (#4101)
* add message key to all message types * move test Co-authored-by: Ken Stevens <ken@smilecdr.com>
This commit is contained in:
parent
e9a855d3f6
commit
26756a40bb
|
@ -17,7 +17,6 @@ import org.hl7.fhir.r4.model.Bundle;
|
||||||
import org.hl7.fhir.r4.model.Library;
|
import org.hl7.fhir.r4.model.Library;
|
||||||
import org.hl7.fhir.r4.model.Measure;
|
import org.hl7.fhir.r4.model.Measure;
|
||||||
import org.hl7.fhir.r4.model.StructureDefinition;
|
import org.hl7.fhir.r4.model.StructureDefinition;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -27,6 +26,7 @@ import org.mockito.Mockito;
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
import org.springframework.test.util.ReflectionTestUtils;
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import static ca.uhn.fhir.util.ClasspathUtil.loadResource;
|
import static ca.uhn.fhir.util.ClasspathUtil.loadResource;
|
||||||
|
@ -151,7 +151,7 @@ public class JpaPersistedResourceValidationSupportFromValidationChainTest {
|
||||||
assertEquals(29, validationResult.getMessages().stream().filter(errorMessagePredicate()).count());
|
assertEquals(29, validationResult.getMessages().stream().filter(errorMessagePredicate()).count());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@Nonnull
|
||||||
private static FhirValidator getFhirValidator() {
|
private static FhirValidator getFhirValidator() {
|
||||||
FhirValidator validator;
|
FhirValidator validator;
|
||||||
final FhirInstanceValidator instanceValidator = new FhirInstanceValidator(ourCtx);
|
final FhirInstanceValidator instanceValidator = new FhirInstanceValidator(ourCtx);
|
||||||
|
@ -162,12 +162,12 @@ public class JpaPersistedResourceValidationSupportFromValidationChainTest {
|
||||||
return validator;
|
return validator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@Nonnull
|
||||||
private static Bundle getBundle(String jsonFilePath) {
|
private static Bundle getBundle(String jsonFilePath) {
|
||||||
return ourCtx.newJsonParser().parseResource(Bundle.class, loadResource(jsonFilePath));
|
return ourCtx.newJsonParser().parseResource(Bundle.class, loadResource(jsonFilePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@Nonnull
|
||||||
private IValidationSupport getValidationSupportWithJpaPersistedResourceValidationSupport() {
|
private IValidationSupport getValidationSupportWithJpaPersistedResourceValidationSupport() {
|
||||||
return new ValidationSupportChain(
|
return new ValidationSupportChain(
|
||||||
new DefaultProfileValidationSupport(ourCtx),
|
new DefaultProfileValidationSupport(ourCtx),
|
||||||
|
@ -175,7 +175,7 @@ public class JpaPersistedResourceValidationSupportFromValidationChainTest {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@Nonnull
|
||||||
private static Predicate<SingleValidationMessage> errorMessagePredicate() {
|
private static Predicate<SingleValidationMessage> errorMessagePredicate() {
|
||||||
return message -> message.getSeverity() == ResultSeverityEnum.ERROR;
|
return message -> message.getSeverity() == ResultSeverityEnum.ERROR;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.isBlank;
|
import static org.apache.commons.lang3.StringUtils.isBlank;
|
||||||
|
@ -201,5 +202,13 @@ public abstract class BaseResourceModifiedMessage extends BaseResourceMessage im
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getMessageKeyOrNull() {
|
||||||
|
return myPayloadId;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ import ca.uhn.fhir.rest.server.messaging.ResourceOperationMessage;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class ResourceOperationJsonMessage extends BaseJsonMessage<ResourceOperationMessage> {
|
public class ResourceOperationJsonMessage extends BaseJsonMessage<ResourceOperationMessage> {
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,4 +68,10 @@ public class ResourceOperationJsonMessage extends BaseJsonMessage<ResourceOperat
|
||||||
.append("myPayload", myPayload)
|
.append("myPayload", myPayload)
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getMessageKeyOrNull() {
|
||||||
|
return myPayload.getMessageKeyOrNull();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
package ca.uhn.fhir.rest.server.messaging.json;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.model.ResourceDeliveryJsonMessage;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.model.ResourceDeliveryMessage;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.model.ResourceModifiedJsonMessage;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.model.ResourceModifiedMessage;
|
||||||
|
import ca.uhn.fhir.rest.api.EncodingEnum;
|
||||||
|
import ca.uhn.fhir.rest.server.messaging.BaseResourceMessage;
|
||||||
|
import ca.uhn.fhir.rest.server.messaging.ResourceOperationMessage;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
|
import org.hl7.fhir.r4.model.Patient;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
class BaseJsonMessageTest {
|
||||||
|
FhirContext ourFhirContext = FhirContext.forR4Cached();
|
||||||
|
static final String RESOURCE_ID = "Patient/123";
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_messageKeyIsResourceId_ResourceOperationJsonMessage() {
|
||||||
|
ResourceOperationJsonMessage message = new ResourceOperationJsonMessage();
|
||||||
|
IBaseResource patient = buildPatient();
|
||||||
|
ResourceOperationMessage payload = new ResourceOperationMessage(ourFhirContext, patient, ResourceOperationMessage.OperationTypeEnum.CREATE);
|
||||||
|
message.setPayload(payload);
|
||||||
|
assertEquals(RESOURCE_ID, message.getMessageKeyOrNull());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
private static IBaseResource buildPatient() {
|
||||||
|
IBaseResource patient = new Patient();
|
||||||
|
patient.setId(RESOURCE_ID);
|
||||||
|
return patient;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_messageKeyIsResourceId_ResourceDeliveryJsonMessage() {
|
||||||
|
ResourceDeliveryJsonMessage message = new ResourceDeliveryJsonMessage();
|
||||||
|
IBaseResource patient = buildPatient();
|
||||||
|
ResourceDeliveryMessage payload = new ResourceDeliveryMessage();
|
||||||
|
payload.setPayload(ourFhirContext, patient, EncodingEnum.JSON);
|
||||||
|
message.setPayload(payload);
|
||||||
|
assertEquals(RESOURCE_ID, message.getMessageKeyOrNull());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_messageKeyIsResourceId_ResourceModifiedJsonMessage() {
|
||||||
|
ResourceModifiedJsonMessage message = new ResourceModifiedJsonMessage();
|
||||||
|
IBaseResource patient = buildPatient();
|
||||||
|
ResourceModifiedMessage payload = new ResourceModifiedMessage(ourFhirContext, patient, BaseResourceMessage.OperationTypeEnum.CREATE);
|
||||||
|
message.setPayload(payload);
|
||||||
|
assertEquals(RESOURCE_ID, message.getMessageKeyOrNull());
|
||||||
|
}
|
||||||
|
}
|
|
@ -26,6 +26,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class ResourceDeliveryJsonMessage extends BaseJsonMessage<ResourceDeliveryMessage> {
|
public class ResourceDeliveryJsonMessage extends BaseJsonMessage<ResourceDeliveryMessage> {
|
||||||
private static final ObjectMapper ourObjectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule());
|
private static final ObjectMapper ourObjectMapper = new ObjectMapper().registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule());
|
||||||
|
|
||||||
|
@ -55,6 +57,15 @@ public class ResourceDeliveryJsonMessage extends BaseJsonMessage<ResourceDeliver
|
||||||
myPayload = thePayload;
|
myPayload = thePayload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Nullable
|
||||||
|
public String getMessageKeyOrNull() {
|
||||||
|
if (myPayload == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return myPayload.getMessageKeyOrNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this)
|
return new ToStringBuilder(this)
|
||||||
|
|
|
@ -32,6 +32,8 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.isNotBlank;
|
import static org.apache.commons.lang3.StringUtils.isNotBlank;
|
||||||
|
|
||||||
@SuppressWarnings("WeakerAccess")
|
@SuppressWarnings("WeakerAccess")
|
||||||
|
@ -147,4 +149,10 @@ public class ResourceDeliveryMessage extends BaseResourceMessage implements IRes
|
||||||
}
|
}
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getMessageKeyOrNull() {
|
||||||
|
return myPayloadId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue