This is an automated email from the ASF dual-hosted git repository. jiriondrusek pushed a commit to branch camel-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit a76318e4d65623e8efb06c28bca8b94b4533ae32 Author: JiriOndrusek <ondrusek.j...@gmail.com> AuthorDate: Mon Jul 17 12:50:47 2023 +0200 Workaround for dataformat (because of iCal4j update - #5099 --- .../component/ical/deployment/IcalProcessor.java | 22 ++++++++++++ .../deployment/SchemaValidatorFactorySubst.java | 39 ++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java b/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java index 23c1623539..989dd7cd8c 100644 --- a/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java +++ b/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java @@ -20,9 +20,13 @@ import java.util.stream.Stream; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; +import io.quarkus.deployment.builditem.CombinedIndexBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; +import io.quarkus.deployment.builditem.IndexDependencyBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceDirectoryBuildItem; +import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; +import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; class IcalProcessor { @@ -57,4 +61,22 @@ class IcalProcessor { .forEach(path -> nativeResourceDirs.produce(new NativeImageResourceDirectoryBuildItem(path))); } + @BuildStep + void registerWsSecurityReflectionItems(CombinedIndexBuildItem combinedIndexBuildItem, + BuildProducer<ReflectiveClassBuildItem> reflectiveClass) { + reflectiveClass + .produce(ReflectiveClassBuildItem.builder("net.fortuna.ical4j.util.MapTimeZoneCache").methods(true).build()); + } + + @BuildStep + IndexDependencyBuildItem registerDependencyForIndex() { + return new IndexDependencyBuildItem("org.mnode.ical4j", "ical4j"); + } + + @BuildStep + void runtimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClass) { + runtimeInitializedClass + .produce(new RuntimeInitializedClassBuildItem("net.fortuna.ical4j.validate.schema.JsonSchemaValidator")); + } + } diff --git a/extensions/ical/runtime/src/main/java/org/apache/camel/quarkus/component/ical/deployment/SchemaValidatorFactorySubst.java b/extensions/ical/runtime/src/main/java/org/apache/camel/quarkus/component/ical/deployment/SchemaValidatorFactorySubst.java new file mode 100644 index 0000000000..e3f6e3447a --- /dev/null +++ b/extensions/ical/runtime/src/main/java/org/apache/camel/quarkus/component/ical/deployment/SchemaValidatorFactorySubst.java @@ -0,0 +1,39 @@ +/* + * 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.ical.deployment; + +import com.oracle.svm.core.annotate.Substitute; +import com.oracle.svm.core.annotate.TargetClass; +import net.fortuna.ical4j.model.parameter.Schema; +import net.fortuna.ical4j.model.property.StructuredData; +import net.fortuna.ical4j.validate.Validator; +import net.fortuna.ical4j.validate.schema.SchemaValidatorFactory; + +@TargetClass(value = SchemaValidatorFactory.class) +final class SchemaValidatorFactorySubstitutions { + + @Substitute + public static Validator<StructuredData> newInstance(Schema schema) { + //see https://github.com/apache/camel-quarkus/issues/5099 for more details + //Method causes error (it is unclear to me, why it is happening): + //UnresolvedElementException: Discovered unresolved method during parsing: net.fortuna.ical4j.validate.schema.JsonSchemaValidator.<init>(java.net.URL). + // This error is reported at image build time because class net.fortuna.ical4j.validate.schema.SchemaValidatorFactory + // is registered for linking at image build time by command line + + throw new RuntimeException("Feature is not supported."); + } +}