blob: 83a012265d99937ddaadd0b980eb88c335dd301c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.component.fhir;
import java.util.List;
import java.util.Set;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.context.ParserOptions;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.parser.IParserErrorHandler;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.DataFormatName;
import org.apache.camel.support.service.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
public abstract class FhirDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
private FhirContext fhirContext;
private String fhirVersion;
private boolean contentTypeHeader = true;
private IParserErrorHandler parserErrorHandler;
private ParserOptions parserOptions;
private String serverBaseUrl;
private boolean prettyPrint;
private List<Class<? extends IBaseResource>> preferTypes;
private boolean omitResourceId;
private IIdType forceResourceId;
private boolean encodeElementsAppliesToChildResourcesOnly;
private Set<String> encodeElements;
private Set<String> dontEncodeElements;
private Boolean stripVersionsFromReferences;
private Boolean overrideResourceIdWithBundleEntryFullUrl;
private boolean summaryMode;
private boolean suppressNarratives;
private List<String> dontStripVersionsFromReferencesAtPaths;
public FhirContext getFhirContext() {
return fhirContext;
}
public void setFhirContext(FhirContext fhirContext) {
this.fhirContext = fhirContext;
}
public String getFhirVersion() {
return fhirVersion;
}
public void setFhirVersion(String fhirVersion) {
this.fhirVersion = fhirVersion;
}
public boolean isContentTypeHeader() {
return contentTypeHeader;
}
public void setContentTypeHeader(boolean contentTypeHeader) {
this.contentTypeHeader = contentTypeHeader;
}
public IParserErrorHandler getParserErrorHandler() {
return parserErrorHandler;
}
public void setParserErrorHandler(IParserErrorHandler parserErrorHandler) {
this.parserErrorHandler = parserErrorHandler;
}
public ParserOptions getParserOptions() {
return parserOptions;
}
public void setParserOptions(ParserOptions parserOptions) {
this.parserOptions = parserOptions;
}
public String getServerBaseUrl() {
return serverBaseUrl;
}
public void setServerBaseUrl(String serverBaseUrl) {
this.serverBaseUrl = serverBaseUrl;
}
public boolean isPrettyPrint() {
return prettyPrint;
}
public void setPrettyPrint(boolean prettyPrint) {
this.prettyPrint = prettyPrint;
}
public List<Class<? extends IBaseResource>> getPreferTypes() {
return preferTypes;
}
public void setPreferTypes(List<Class<? extends IBaseResource>> preferTypes) {
this.preferTypes = preferTypes;
}
public boolean isOmitResourceId() {
return omitResourceId;
}
public void setOmitResourceId(boolean omitResourceId) {
this.omitResourceId = omitResourceId;
}
public IIdType getForceResourceId() {
return forceResourceId;
}
public void setForceResourceId(IIdType forceResourceId) {
this.forceResourceId = forceResourceId;
}
public boolean isEncodeElementsAppliesToChildResourcesOnly() {
return encodeElementsAppliesToChildResourcesOnly;
}
public void setEncodeElementsAppliesToChildResourcesOnly(boolean encodeElementsAppliesToChildResourcesOnly) {
this.encodeElementsAppliesToChildResourcesOnly = encodeElementsAppliesToChildResourcesOnly;
}
public Set<String> getEncodeElements() {
return encodeElements;
}
public void setEncodeElements(Set<String> encodeElements) {
this.encodeElements = encodeElements;
}
public Set<String> getDontEncodeElements() {
return dontEncodeElements;
}
public void setDontEncodeElements(Set<String> dontEncodeElements) {
this.dontEncodeElements = dontEncodeElements;
}
public Boolean getStripVersionsFromReferences() {
return stripVersionsFromReferences;
}
public void setStripVersionsFromReferences(Boolean stripVersionsFromReferences) {
this.stripVersionsFromReferences = stripVersionsFromReferences;
}
public Boolean getOverrideResourceIdWithBundleEntryFullUrl() {
return overrideResourceIdWithBundleEntryFullUrl;
}
public void setOverrideResourceIdWithBundleEntryFullUrl(Boolean overrideResourceIdWithBundleEntryFullUrl) {
this.overrideResourceIdWithBundleEntryFullUrl = overrideResourceIdWithBundleEntryFullUrl;
}
public boolean isSummaryMode() {
return summaryMode;
}
public void setSummaryMode(boolean summaryMode) {
this.summaryMode = summaryMode;
}
public boolean isSuppressNarratives() {
return suppressNarratives;
}
public void setSuppressNarratives(boolean suppressNarratives) {
this.suppressNarratives = suppressNarratives;
}
public List<String> getDontStripVersionsFromReferencesAtPaths() {
return dontStripVersionsFromReferencesAtPaths;
}
public void setDontStripVersionsFromReferencesAtPaths(List<String> dontStripVersionsFromReferencesAtPaths) {
this.dontStripVersionsFromReferencesAtPaths = dontStripVersionsFromReferencesAtPaths;
}
protected void configureParser(IParser parser) {
if (ObjectHelper.isNotEmpty(getServerBaseUrl())) {
parser.setServerBaseUrl(getServerBaseUrl());
}
if (ObjectHelper.isNotEmpty(getDontEncodeElements())) {
parser.setDontEncodeElements(getDontEncodeElements());
}
if (ObjectHelper.isNotEmpty(getDontStripVersionsFromReferencesAtPaths())) {
parser.setDontStripVersionsFromReferencesAtPaths(getDontStripVersionsFromReferencesAtPaths());
}
if (ObjectHelper.isNotEmpty(getEncodeElements())) {
parser.setEncodeElements(getEncodeElements());
}
if (ObjectHelper.isNotEmpty(getForceResourceId())) {
parser.setEncodeForceResourceId(getForceResourceId());
}
if (ObjectHelper.isNotEmpty(getPreferTypes())) {
parser.setPreferTypes(getPreferTypes());
}
if (ObjectHelper.isNotEmpty(getParserErrorHandler())) {
parser.setParserErrorHandler(getParserErrorHandler());
}
if (ObjectHelper.isNotEmpty(getOverrideResourceIdWithBundleEntryFullUrl())) {
parser.setOverrideResourceIdWithBundleEntryFullUrl(getOverrideResourceIdWithBundleEntryFullUrl());
}
if (ObjectHelper.isNotEmpty(getStripVersionsFromReferences())) {
parser.setStripVersionsFromReferences(getStripVersionsFromReferences());
}
parser.setSummaryMode(isSummaryMode());
parser.setOmitResourceId(isOmitResourceId());
parser.setPrettyPrint(isPrettyPrint());
parser.setEncodeElementsAppliesToChildResourcesOnly(isEncodeElementsAppliesToChildResourcesOnly());
}
@Override
protected void doStart() throws Exception {
if (fhirContext == null && fhirVersion != null) {
FhirVersionEnum version = FhirVersionEnum.valueOf(fhirVersion);
fhirContext = new FhirContext(version);
} else if (fhirContext == null) {
fhirContext = FhirContext.forDstu3();
}
if (ObjectHelper.isNotEmpty(parserOptions)) {
fhirContext.setParserOptions(parserOptions);
}
}
@Override
protected void doStop() throws Exception {
// noop
}
}