You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2021/02/22 20:52:15 UTC
[camel-quarkus] 03/04: FHIR: Prefer SyntheticBeanBuildItem to
initializing bean producers via volatile fields #2273
This is an automated email from the ASF dual-hosted git repository.
ppalaga pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 92b3ca0aa30c8232271278da787450e77166ef7a
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Feb 22 16:07:55 2021 +0100
FHIR: Prefer SyntheticBeanBuildItem to initializing bean producers via
volatile fields #2273
---
.../component/fhir/deployment/FhirProcessor.java | 6 -
.../fhir/deployment/dstu2/FhirDstu2Processor.java | 183 ++-------------------
.../fhir/deployment/dstu3/FhirDstu3Processor.java | 15 +-
.../fhir/deployment/r4/FhirR4Processor.java | 15 +-
.../fhir/deployment/r5/FhirR5Processor.java | 14 +-
.../component/fhir/FhirContextProducers.java | 76 ---------
.../component/fhir/FhirContextRecorder.java | 13 +-
.../component/fhir/it/FhirDstu2RouteBuilder.java | 4 +-
.../component/fhir/it/FhirDstu3RouteBuilder.java | 4 +-
.../component/fhir/it/FhirR4RouteBuilder.java | 4 +-
.../component/fhir/it/FhirR5RouteBuilder.java | 4 +-
11 files changed, 62 insertions(+), 276 deletions(-)
diff --git a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/FhirProcessor.java b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/FhirProcessor.java
index ab2f536..64568e8 100644
--- a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/FhirProcessor.java
+++ b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/FhirProcessor.java
@@ -19,7 +19,6 @@ package org.apache.camel.quarkus.component.fhir.deployment;
import ca.uhn.fhir.rest.client.apache.ApacheRestfulClientFactory;
import ca.uhn.fhir.util.jar.DependencyLogImpl;
import ca.uhn.fhir.validation.schematron.SchematronBaseValidator;
-import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.AdditionalApplicationArchiveMarkerBuildItem;
@@ -27,7 +26,6 @@ import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
-import org.apache.camel.quarkus.component.fhir.FhirContextProducers;
final class FhirProcessor {
private static final String FEATURE = "camel-fhir";
@@ -64,8 +62,4 @@ final class FhirProcessor {
reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, true, ApacheRestfulClientFactory.class));
}
- @BuildStep
- void beans(BuildProducer<AdditionalBeanBuildItem> beanProducer) {
- beanProducer.produce(AdditionalBeanBuildItem.unremovableOf(FhirContextProducers.class));
- }
}
diff --git a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu2/FhirDstu2Processor.java b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu2/FhirDstu2Processor.java
index 45f6658..c0d20f7 100644
--- a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu2/FhirDstu2Processor.java
+++ b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu2/FhirDstu2Processor.java
@@ -19,173 +19,12 @@ package org.apache.camel.quarkus.component.fhir.deployment.dstu2;
import java.util.HashSet;
import java.util.Set;
-import ca.uhn.fhir.model.dstu2.resource.*;
-import ca.uhn.fhir.model.dstu2.valueset.AccountStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ActionListEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AddressTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AddressUseEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AdjudicationCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AdjudicationErrorCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AdjustmentReasonCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AdmitSourceEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AggregationModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCategoryEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCertaintyEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCriticalityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceSeverityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
-import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
-import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ConstraintSeverityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ContactPointSystemEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ContactPointUseEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
-import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
-import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.EventTimingEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
-import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
-import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
-import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
-import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.IdentifierUseEnum;
-import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
-import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
-import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
-import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
-import ca.uhn.fhir.model.dstu2.valueset.NameUseEnum;
-import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.NarrativeStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
-import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
-import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.PropertyRepresentationEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
-import ca.uhn.fhir.model.dstu2.valueset.QuantityComparatorEnum;
-import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
-import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SignatureTypeCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SlicingRulesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
-import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
-import ca.uhn.fhir.model.dstu2.valueset.TimingAbbreviationEnum;
-import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
-import ca.uhn.fhir.model.dstu2.valueset.UnitsOfTimeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
-import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
-import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
-import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
-import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
-import io.quarkus.arc.deployment.BeanContainerBuildItem;
+import javax.inject.Singleton;
+
+import ca.uhn.fhir.context.FhirContext;
+import ca.uhn.fhir.model.dstu2.resource.BaseResource;
+import ca.uhn.fhir.model.dstu2.valueset.*;
+import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
@@ -210,10 +49,14 @@ public class FhirDstu2Processor {
@BuildStep(onlyIf = FhirFlags.Dstu2Enabled.class)
@Record(ExecutionTime.STATIC_INIT)
- void recordContext(FhirContextRecorder fhirContextRecorder, BeanContainerBuildItem beanContainer,
+ SyntheticBeanBuildItem recordContext(FhirContextRecorder fhirContextRecorder,
Dstu2PropertiesBuildItem propertiesBuildItem) {
- fhirContextRecorder.createDstu2FhirContext(beanContainer.getValue(),
- getResourceDefinitions(propertiesBuildItem.getProperties()));
+ return SyntheticBeanBuildItem.configure(FhirContext.class)
+ .scope(Singleton.class)
+ .named("DSTU2")
+ .runtimeValue(fhirContextRecorder.createDstu2FhirContext(
+ getResourceDefinitions(propertiesBuildItem.getProperties())))
+ .done();
}
@BuildStep(onlyIf = FhirFlags.Dstu2Enabled.class)
diff --git a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu3/FhirDstu3Processor.java b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu3/FhirDstu3Processor.java
index 96832b6..7e3148e 100644
--- a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu3/FhirDstu3Processor.java
+++ b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu3/FhirDstu3Processor.java
@@ -19,7 +19,10 @@ package org.apache.camel.quarkus.component.fhir.deployment.dstu3;
import java.util.HashSet;
import java.util.Set;
-import io.quarkus.arc.deployment.BeanContainerBuildItem;
+import javax.inject.Singleton;
+
+import ca.uhn.fhir.context.FhirContext;
+import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
@@ -50,10 +53,14 @@ public class FhirDstu3Processor {
@BuildStep(onlyIf = FhirFlags.Dstu3Enabled.class)
@Record(ExecutionTime.STATIC_INIT)
- void recordContext(FhirContextRecorder fhirContextRecorder, BeanContainerBuildItem beanContainer,
+ SyntheticBeanBuildItem recordContext(FhirContextRecorder fhirContextRecorder,
Dstu3PropertiesBuildItem propertiesBuildItem) {
- fhirContextRecorder.createDstu3FhirContext(beanContainer.getValue(),
- getResourceDefinitions(propertiesBuildItem.getProperties()));
+ return SyntheticBeanBuildItem.configure(FhirContext.class)
+ .scope(Singleton.class)
+ .named("DSTU3")
+ .runtimeValue(fhirContextRecorder.createDstu3FhirContext(
+ getResourceDefinitions(propertiesBuildItem.getProperties())))
+ .done();
}
@BuildStep(onlyIf = FhirFlags.Dstu3Enabled.class)
diff --git a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r4/FhirR4Processor.java b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r4/FhirR4Processor.java
index 02019fa..1a63550 100644
--- a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r4/FhirR4Processor.java
+++ b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r4/FhirR4Processor.java
@@ -19,7 +19,10 @@ package org.apache.camel.quarkus.component.fhir.deployment.r4;
import java.util.HashSet;
import java.util.Set;
-import io.quarkus.arc.deployment.BeanContainerBuildItem;
+import javax.inject.Singleton;
+
+import ca.uhn.fhir.context.FhirContext;
+import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
@@ -44,10 +47,14 @@ public class FhirR4Processor {
@BuildStep(onlyIf = FhirFlags.R4Enabled.class)
@Record(ExecutionTime.STATIC_INIT)
- void recordContext(FhirContextRecorder fhirContextRecorder, BeanContainerBuildItem beanContainer,
+ SyntheticBeanBuildItem recordContext(FhirContextRecorder fhirContextRecorder,
R4PropertiesBuildItem propertiesBuildItem) {
- fhirContextRecorder.createR4FhirContext(beanContainer.getValue(),
- getResourceDefinitions(propertiesBuildItem.getProperties()));
+ return SyntheticBeanBuildItem.configure(FhirContext.class)
+ .scope(Singleton.class)
+ .named("R4")
+ .runtimeValue(fhirContextRecorder.createR4FhirContext(
+ getResourceDefinitions(propertiesBuildItem.getProperties())))
+ .done();
}
@BuildStep(onlyIf = FhirFlags.R4Enabled.class)
diff --git a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r5/FhirR5Processor.java b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r5/FhirR5Processor.java
index 32ae7a5..8b0e267 100644
--- a/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r5/FhirR5Processor.java
+++ b/extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/r5/FhirR5Processor.java
@@ -19,7 +19,11 @@ package org.apache.camel.quarkus.component.fhir.deployment.r5;
import java.util.HashSet;
import java.util.Set;
+import javax.inject.Singleton;
+
+import ca.uhn.fhir.context.FhirContext;
import io.quarkus.arc.deployment.BeanContainerBuildItem;
+import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
@@ -44,10 +48,14 @@ public class FhirR5Processor {
@BuildStep(onlyIf = FhirFlags.R5Enabled.class)
@Record(ExecutionTime.STATIC_INIT)
- void recordContext(FhirContextRecorder fhirContextRecorder, BeanContainerBuildItem beanContainer,
+ SyntheticBeanBuildItem recordContext(FhirContextRecorder fhirContextRecorder, BeanContainerBuildItem beanContainer,
R5PropertiesBuildItem propertiesBuildItem) {
- fhirContextRecorder.createR5FhirContext(beanContainer.getValue(),
- getResourceDefinitions(propertiesBuildItem.getProperties()));
+ return SyntheticBeanBuildItem.configure(FhirContext.class)
+ .scope(Singleton.class)
+ .named("R5")
+ .runtimeValue(fhirContextRecorder.createR5FhirContext(
+ getResourceDefinitions(propertiesBuildItem.getProperties())))
+ .done();
}
@BuildStep(onlyIf = FhirFlags.R5Enabled.class)
diff --git a/extensions/fhir/runtime/src/main/java/org/apache/camel/quarkus/component/fhir/FhirContextProducers.java b/extensions/fhir/runtime/src/main/java/org/apache/camel/quarkus/component/fhir/FhirContextProducers.java
deleted file mode 100644
index 69d133b..0000000
--- a/extensions/fhir/runtime/src/main/java/org/apache/camel/quarkus/component/fhir/FhirContextProducers.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.quarkus.component.fhir;
-
-import javax.enterprise.inject.Produces;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import ca.uhn.fhir.context.FhirContext;
-
-@Singleton
-public class FhirContextProducers {
-
- private volatile FhirContext dstu2;
- private volatile FhirContext dstu3;
- private volatile FhirContext r4;
- private volatile FhirContext r5;
-
- public void setDstu2(FhirContext dstu2) {
- this.dstu2 = dstu2;
- }
-
- public void setDstu3(FhirContext dstu3) {
- this.dstu3 = dstu3;
- }
-
- public void setR4(FhirContext r4) {
- this.r4 = r4;
- }
-
- public void setR5(FhirContext r5) {
- this.r5 = r5;
- }
-
- @Singleton
- @Produces
- @Named("DSTU2")
- FhirContext dstu2() {
- return this.dstu2;
- }
-
- @Singleton
- @Produces
- @Named("DSTU3")
- FhirContext dstu3() {
- return this.dstu3;
- }
-
- @Singleton
- @Produces
- @Named("R4")
- FhirContext r4() {
- return this.r4;
- }
-
- @Singleton
- @Produces
- @Named("R5")
- FhirContext r5() {
- return this.r5;
- }
-}
diff --git a/extensions/fhir/runtime/src/main/java/org/apache/camel/quarkus/component/fhir/FhirContextRecorder.java b/extensions/fhir/runtime/src/main/java/org/apache/camel/quarkus/component/fhir/FhirContextRecorder.java
index 93b9d5e..8f51cb0 100644
--- a/extensions/fhir/runtime/src/main/java/org/apache/camel/quarkus/component/fhir/FhirContextRecorder.java
+++ b/extensions/fhir/runtime/src/main/java/org/apache/camel/quarkus/component/fhir/FhirContextRecorder.java
@@ -19,38 +19,33 @@ package org.apache.camel.quarkus.component.fhir;
import java.util.Collection;
import ca.uhn.fhir.context.FhirContext;
-import io.quarkus.arc.runtime.BeanContainer;
import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.annotations.Recorder;
@Recorder
public class FhirContextRecorder {
- public RuntimeValue<FhirContext> createDstu2FhirContext(BeanContainer container, Collection<String> resourceDefinitions) {
+ public RuntimeValue<FhirContext> createDstu2FhirContext(Collection<String> resourceDefinitions) {
FhirContext fhirContext = FhirContext.forDstu2();
initContext(resourceDefinitions, fhirContext);
- container.instance(FhirContextProducers.class).setDstu2(fhirContext);
return new RuntimeValue<>(fhirContext);
}
- public RuntimeValue<FhirContext> createDstu3FhirContext(BeanContainer container, Collection<String> resourceDefinitions) {
+ public RuntimeValue<FhirContext> createDstu3FhirContext(Collection<String> resourceDefinitions) {
FhirContext fhirContext = FhirContext.forDstu3();
initContext(resourceDefinitions, fhirContext);
- container.instance(FhirContextProducers.class).setDstu3(fhirContext);
return new RuntimeValue<>(fhirContext);
}
- public RuntimeValue<FhirContext> createR4FhirContext(BeanContainer container, Collection<String> resourceDefinitions) {
+ public RuntimeValue<FhirContext> createR4FhirContext(Collection<String> resourceDefinitions) {
FhirContext fhirContext = FhirContext.forR4();
initContext(resourceDefinitions, fhirContext);
- container.instance(FhirContextProducers.class).setR4(fhirContext);
return new RuntimeValue<>(fhirContext);
}
- public RuntimeValue<FhirContext> createR5FhirContext(BeanContainer container, Collection<String> resourceDefinitions) {
+ public RuntimeValue<FhirContext> createR5FhirContext(Collection<String> resourceDefinitions) {
FhirContext fhirContext = FhirContext.forR5();
initContext(resourceDefinitions, fhirContext);
- container.instance(FhirContextProducers.class).setR5(fhirContext);
return new RuntimeValue<>(fhirContext);
}
diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2RouteBuilder.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2RouteBuilder.java
index 6793907..a26b4f6 100644
--- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2RouteBuilder.java
+++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2RouteBuilder.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.component.fhir.it;
import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.inject.Named;
@@ -34,11 +35,12 @@ public class FhirDstu2RouteBuilder extends RouteBuilder {
@Inject
@Named("DSTU2")
- FhirContext fhirContext;
+ Instance<FhirContext> fhirContextInstance;
@Override
public void configure() {
if (ENABLED) {
+ FhirContext fhirContext = fhirContextInstance.get();
fhirContext.setParserErrorHandler(new StrictErrorHandler());
FhirJsonDataFormat fhirJsonDataFormat = new FhirJsonDataFormat();
diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3RouteBuilder.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3RouteBuilder.java
index 9ec816c..b08ba71 100644
--- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3RouteBuilder.java
+++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3RouteBuilder.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.component.fhir.it;
import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.inject.Named;
@@ -33,11 +34,12 @@ public class FhirDstu3RouteBuilder extends RouteBuilder {
private static final Boolean ENABLED = new FhirFlags.Dstu3Enabled().getAsBoolean();
@Inject
@Named("DSTU3")
- FhirContext fhirContext;
+ Instance<FhirContext> fhirContextInstance;
@Override
public void configure() {
if (ENABLED) {
+ FhirContext fhirContext = fhirContextInstance.get();
fhirContext.setParserErrorHandler(new StrictErrorHandler());
FhirJsonDataFormat fhirJsonDataFormat = new FhirJsonDataFormat();
diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4RouteBuilder.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4RouteBuilder.java
index adf728e..11ce9a5 100644
--- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4RouteBuilder.java
+++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4RouteBuilder.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.component.fhir.it;
import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.inject.Named;
@@ -34,11 +35,12 @@ public class FhirR4RouteBuilder extends RouteBuilder {
@Inject
@Named("R4")
- FhirContext fhirContext;
+ Instance<FhirContext> fhirContextInstance;
@Override
public void configure() {
if (ENABLED) {
+ FhirContext fhirContext = fhirContextInstance.get();
fhirContext.setParserErrorHandler(new StrictErrorHandler());
FhirJsonDataFormat fhirJsonDataFormat = new FhirJsonDataFormat();
diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5RouteBuilder.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5RouteBuilder.java
index e8b44d4..4869330 100644
--- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5RouteBuilder.java
+++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5RouteBuilder.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.component.fhir.it;
import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.inject.Named;
@@ -34,11 +35,12 @@ public class FhirR5RouteBuilder extends RouteBuilder {
@Inject
@Named("R5")
- FhirContext fhirContext;
+ Instance<FhirContext> fhirContextInstance;
@Override
public void configure() {
if (ENABLED) {
+ FhirContext fhirContext = fhirContextInstance.get();
fhirContext.setParserErrorHandler(new StrictErrorHandler());
FhirJsonDataFormat fhirJsonDataFormat = new FhirJsonDataFormat();