zbendhiba commented on a change in pull request #3630:
URL: https://github.com/apache/camel-quarkus/pull/3630#discussion_r829033381



##########
File path: 
extensions/fhir/deployment/src/main/java/org/apache/camel/quarkus/component/fhir/deployment/dstu2/FhirDstu2Processor.java
##########
@@ -42,201 +42,46 @@
     private static final String FHIR_VERSION_PROPERTIES = 
"ca/uhn/fhir/model/dstu2/fhirversion.properties";
 
     @BuildStep(onlyIf = FhirFlags.Dstu2Enabled.class)
-    Dstu2PropertiesBuildItem 
properties(BuildProducer<NativeImageResourceBuildItem> resource) {
-        resource.produce(new 
NativeImageResourceBuildItem(FHIR_VERSION_PROPERTIES));
+    Dstu2PropertiesBuildItem fhirProperties() {
         return new Dstu2PropertiesBuildItem(FHIR_VERSION_PROPERTIES);
     }
 
+    @BuildStep(onlyIf = FhirFlags.Dstu2Enabled.class)
+    NativeImageResourceBuildItem nativeImageResources() {
+        return new NativeImageResourceBuildItem(FHIR_VERSION_PROPERTIES);
+    }
+
     @BuildStep(onlyIf = FhirFlags.Dstu2Enabled.class)
     @Record(ExecutionTime.STATIC_INIT)
-    SyntheticBeanBuildItem recordContext(FhirContextRecorder 
fhirContextRecorder,
+    SyntheticBeanBuildItem recordFhirContext(
+            FhirContextRecorder recorder,
             Dstu2PropertiesBuildItem propertiesBuildItem) {
         return SyntheticBeanBuildItem.configure(FhirContext.class)
                 .scope(Singleton.class)
                 .named("DSTU2")
-                .runtimeValue(fhirContextRecorder.createDstu2FhirContext(
+                .runtimeValue(recorder.createDstu2FhirContext(
                         
getResourceDefinitions(propertiesBuildItem.getProperties())))
                 .done();
     }
 
     @BuildStep(onlyIf = FhirFlags.Dstu2Enabled.class)
-    void enableReflection(BuildProducer<ReflectiveClassBuildItem> 
reflectiveClass, Dstu2PropertiesBuildItem buildItem) {
+    void registerForReflection(
+            BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
+            Dstu2PropertiesBuildItem propertiesBuildItem,
+            CombinedIndexBuildItem combinedIndex) {
         Set<String> classes = new HashSet<>();
         classes.add(BaseResource.class.getCanonicalName());
-        classes.addAll(getModelClasses(buildItem.getProperties()));
+        classes.addAll(getModelClasses(propertiesBuildItem.getProperties()));
 
         reflectiveClass.produce(new ReflectiveClassBuildItem(false, false, 
classes.toArray(new String[0])));
-        reflectiveClass.produce(new ReflectiveClassBuildItem(false, false, 
getDstu2Enums()));
-    }
 
-    private String[] getDstu2Enums() {
-        return new String[] {
-                AccountStatusEnum.class.getCanonicalName(),
-                ActionListEnum.class.getCanonicalName(),
-                AddressTypeEnum.class.getCanonicalName(),
-                AddressUseEnum.class.getCanonicalName(),
-                AdjudicationCodesEnum.class.getCanonicalName(),
-                AdjudicationErrorCodesEnum.class.getCanonicalName(),
-                AdjustmentReasonCodesEnum.class.getCanonicalName(),
-                AdministrativeGenderEnum.class.getCanonicalName(),
-                AdmitSourceEnum.class.getCanonicalName(),
-                AggregationModeEnum.class.getCanonicalName(),
-                AllergyIntoleranceCategoryEnum.class.getCanonicalName(),
-                AllergyIntoleranceCertaintyEnum.class.getCanonicalName(),
-                AllergyIntoleranceCriticalityEnum.class.getCanonicalName(),
-                AllergyIntoleranceSeverityEnum.class.getCanonicalName(),
-                AllergyIntoleranceStatusEnum.class.getCanonicalName(),
-                AllergyIntoleranceTypeEnum.class.getCanonicalName(),
-                AnswerFormatEnum.class.getCanonicalName(),
-                AppointmentStatusEnum.class.getCanonicalName(),
-                AssertionDirectionTypeEnum.class.getCanonicalName(),
-                AssertionOperatorTypeEnum.class.getCanonicalName(),
-                AssertionResponseTypesEnum.class.getCanonicalName(),
-                AuditEventActionEnum.class.getCanonicalName(),
-                AuditEventObjectLifecycleEnum.class.getCanonicalName(),
-                AuditEventObjectRoleEnum.class.getCanonicalName(),
-                AuditEventObjectTypeEnum.class.getCanonicalName(),
-                AuditEventOutcomeEnum.class.getCanonicalName(),
-                AuditEventParticipantNetworkTypeEnum.class.getCanonicalName(),
-                AuditEventSourceTypeEnum.class.getCanonicalName(),
-                BindingStrengthEnum.class.getCanonicalName(),
-                BundleTypeEnum.class.getCanonicalName(),
-                CarePlanActivityStatusEnum.class.getCanonicalName(),
-                CarePlanRelationshipEnum.class.getCanonicalName(),
-                CarePlanStatusEnum.class.getCanonicalName(),
-                ClaimTypeEnum.class.getCanonicalName(),
-                ClinicalImpressionStatusEnum.class.getCanonicalName(),
-                CommunicationRequestStatusEnum.class.getCanonicalName(),
-                CommunicationStatusEnum.class.getCanonicalName(),
-                CompositionAttestationModeEnum.class.getCanonicalName(),
-                CompositionStatusEnum.class.getCanonicalName(),
-                ConceptMapEquivalenceEnum.class.getCanonicalName(),
-                ConditionalDeleteStatusEnum.class.getCanonicalName(),
-                ConditionCategoryCodesEnum.class.getCanonicalName(),
-                ConditionClinicalStatusCodesEnum.class.getCanonicalName(),
-                ConditionVerificationStatusEnum.class.getCanonicalName(),
-                ConformanceEventModeEnum.class.getCanonicalName(),
-                ConformanceResourceStatusEnum.class.getCanonicalName(),
-                ConformanceStatementKindEnum.class.getCanonicalName(),
-                ConstraintSeverityEnum.class.getCanonicalName(),
-                ContactPointSystemEnum.class.getCanonicalName(),
-                ContactPointUseEnum.class.getCanonicalName(),
-                ContentTypeEnum.class.getCanonicalName(),
-                DataElementStringencyEnum.class.getCanonicalName(),
-                DaysOfWeekEnum.class.getCanonicalName(),
-                DetectedIssueSeverityEnum.class.getCanonicalName(),
-                DeviceMetricCalibrationStateEnum.class.getCanonicalName(),
-                DeviceMetricCalibrationTypeEnum.class.getCanonicalName(),
-                DeviceMetricCategoryEnum.class.getCanonicalName(),
-                DeviceMetricColorEnum.class.getCanonicalName(),
-                DeviceMetricOperationalStatusEnum.class.getCanonicalName(),
-                DeviceStatusEnum.class.getCanonicalName(),
-                DeviceUseRequestPriorityEnum.class.getCanonicalName(),
-                DeviceUseRequestStatusEnum.class.getCanonicalName(),
-                DiagnosticOrderPriorityEnum.class.getCanonicalName(),
-                DiagnosticOrderStatusEnum.class.getCanonicalName(),
-                DiagnosticReportStatusEnum.class.getCanonicalName(),
-                DigitalMediaTypeEnum.class.getCanonicalName(),
-                DocumentModeEnum.class.getCanonicalName(),
-                DocumentReferenceStatusEnum.class.getCanonicalName(),
-                DocumentRelationshipTypeEnum.class.getCanonicalName(),
-                EncounterClassEnum.class.getCanonicalName(),
-                EncounterLocationStatusEnum.class.getCanonicalName(),
-                EncounterStateEnum.class.getCanonicalName(),
-                EpisodeOfCareStatusEnum.class.getCanonicalName(),
-                EventTimingEnum.class.getCanonicalName(),
-                ExtensionContextEnum.class.getCanonicalName(),
-                FamilyHistoryStatusEnum.class.getCanonicalName(),
-                FilterOperatorEnum.class.getCanonicalName(),
-                FlagStatusEnum.class.getCanonicalName(),
-                GoalPriorityEnum.class.getCanonicalName(),
-                GoalStatusEnum.class.getCanonicalName(),
-                GroupTypeEnum.class.getCanonicalName(),
-                GuideDependencyTypeEnum.class.getCanonicalName(),
-                GuidePageKindEnum.class.getCanonicalName(),
-                GuideResourcePurposeEnum.class.getCanonicalName(),
-                HTTPVerbEnum.class.getCanonicalName(),
-                IdentifierTypeCodesEnum.class.getCanonicalName(),
-                IdentifierUseEnum.class.getCanonicalName(),
-                IdentityAssuranceLevelEnum.class.getCanonicalName(),
-                InstanceAvailabilityEnum.class.getCanonicalName(),
-                IssueSeverityEnum.class.getCanonicalName(),
-                IssueTypeEnum.class.getCanonicalName(),
-                KOStitleEnum.class.getCanonicalName(),
-                LinkTypeEnum.class.getCanonicalName(),
-                ListModeEnum.class.getCanonicalName(),
-                ListOrderCodesEnum.class.getCanonicalName(),
-                ListStatusEnum.class.getCanonicalName(),
-                LocationModeEnum.class.getCanonicalName(),
-                LocationStatusEnum.class.getCanonicalName(),
-                LocationTypeEnum.class.getCanonicalName(),
-                MaritalStatusCodesEnum.class.getCanonicalName(),
-                MeasmntPrincipleEnum.class.getCanonicalName(),
-                MedicationAdministrationStatusEnum.class.getCanonicalName(),
-                MedicationDispenseStatusEnum.class.getCanonicalName(),
-                MedicationOrderStatusEnum.class.getCanonicalName(),
-                MedicationStatementStatusEnum.class.getCanonicalName(),
-                MessageEventEnum.class.getCanonicalName(),
-                MessageSignificanceCategoryEnum.class.getCanonicalName(),
-                MessageTransportEnum.class.getCanonicalName(),
-                NameUseEnum.class.getCanonicalName(),
-                NamingSystemIdentifierTypeEnum.class.getCanonicalName(),
-                NamingSystemTypeEnum.class.getCanonicalName(),
-                NarrativeStatusEnum.class.getCanonicalName(),
-                NoteTypeEnum.class.getCanonicalName(),
-                NutritionOrderStatusEnum.class.getCanonicalName(),
-                ObservationRelationshipTypeEnum.class.getCanonicalName(),
-                ObservationStatusEnum.class.getCanonicalName(),
-                OperationKindEnum.class.getCanonicalName(),
-                OperationParameterUseEnum.class.getCanonicalName(),
-                OrderStatusEnum.class.getCanonicalName(),
-                ParticipantRequiredEnum.class.getCanonicalName(),
-                ParticipantStatusEnum.class.getCanonicalName(),
-                ParticipantTypeEnum.class.getCanonicalName(),
-                ParticipationStatusEnum.class.getCanonicalName(),
-                PayeeTypeCodesEnum.class.getCanonicalName(),
-                ProcedureRequestPriorityEnum.class.getCanonicalName(),
-                ProcedureRequestStatusEnum.class.getCanonicalName(),
-                ProcedureStatusEnum.class.getCanonicalName(),
-                PropertyRepresentationEnum.class.getCanonicalName(),
-                ProvenanceEntityRoleEnum.class.getCanonicalName(),
-                QuantityComparatorEnum.class.getCanonicalName(),
-                QuestionnaireResponseStatusEnum.class.getCanonicalName(),
-                QuestionnaireStatusEnum.class.getCanonicalName(),
-                ReferralMethodEnum.class.getCanonicalName(),
-                ReferralStatusEnum.class.getCanonicalName(),
-                RemittanceOutcomeEnum.class.getCanonicalName(),
-                ResourceTypeEnum.class.getCanonicalName(),
-                ResourceVersionPolicyEnum.class.getCanonicalName(),
-                ResponseTypeEnum.class.getCanonicalName(),
-                RestfulConformanceModeEnum.class.getCanonicalName(),
-                RestfulSecurityServiceEnum.class.getCanonicalName(),
-                RulesetCodesEnum.class.getCanonicalName(),
-                SearchEntryModeEnum.class.getCanonicalName(),
-                SearchModifierCodeEnum.class.getCanonicalName(),
-                SearchParamTypeEnum.class.getCanonicalName(),
-                ServiceProvisionConditionsEnum.class.getCanonicalName(),
-                SignatureTypeCodesEnum.class.getCanonicalName(),
-                SlicingRulesEnum.class.getCanonicalName(),
-                SlotStatusEnum.class.getCanonicalName(),
-                SpecimenStatusEnum.class.getCanonicalName(),
-                StructureDefinitionKindEnum.class.getCanonicalName(),
-                SubscriptionChannelTypeEnum.class.getCanonicalName(),
-                SubscriptionStatusEnum.class.getCanonicalName(),
-                SubstanceCategoryCodesEnum.class.getCanonicalName(),
-                SupplyDeliveryStatusEnum.class.getCanonicalName(),
-                SupplyRequestStatusEnum.class.getCanonicalName(),
-                SystemRestfulInteractionEnum.class.getCanonicalName(),
-                TimingAbbreviationEnum.class.getCanonicalName(),
-                TransactionModeEnum.class.getCanonicalName(),
-                TypeRestfulInteractionEnum.class.getCanonicalName(),
-                UnitsOfTimeEnum.class.getCanonicalName(),
-                UnknownContentCodeEnum.class.getCanonicalName(),
-                UseEnum.class.getCanonicalName(),
-                VisionBaseEnum.class.getCanonicalName(),
-                VisionEyesEnum.class.getCanonicalName(),
-                XPathUsageTypeEnum.class.getCanonicalName()
-        };
-    }
+        String[] dstu2Enums = combinedIndex.getIndex()
+                .getKnownClasses()
+                .stream()
+                .map(classInfo -> classInfo.toString())
+                .filter(className -> 
className.startsWith("ca.uhn.fhir.model.dstu2.valueset"))
+                .toArray(String[]::new);

Review comment:
       Nice




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@camel.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to