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 ########## File path: docs/modules/ROOT/pages/reference/extensions/fhir.adoc ########## @@ -62,7 +62,19 @@ By default, only FHIR versions `R4` & `DSTU3` are enabled in native mode, since Enable FHIR DSTU2 Specs in native mode. | `boolean` -| `true` +| `false` Review comment: Do we need some migration guide for this one ? ########## File path: docs/modules/ROOT/pages/reference/extensions/fhir.adoc ########## @@ -62,7 +62,19 @@ By default, only FHIR versions `R4` & `DSTU3` are enabled in native mode, since Enable FHIR DSTU2 Specs in native mode. | `boolean` -| `true` +| `false` Review comment: Awesome -- 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