lburgazzoli commented on a change in pull request #164: Support for camel-mail URL: https://github.com/apache/camel-quarkus/pull/164#discussion_r322615843
########## File path: extensions/mail/deployment/src/main/java/org/apache/camel/quarkus/component/mail/deployment/MailProcessor.java ########## @@ -0,0 +1,166 @@ +package org.apache.camel.quarkus.component.mail.deployment; + +import java.io.BufferedReader; +import java.io.IOError; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UncheckedIOException; +import java.net.URL; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.Spliterator; +import java.util.Spliterators; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import javax.inject.Inject; +import javax.mail.Provider; +import javax.mail.Session; + +import io.quarkus.arc.ResourceProvider; +import io.quarkus.deployment.ApplicationArchive; +import io.quarkus.deployment.annotations.BuildProducer; +import io.quarkus.deployment.annotations.BuildStep; +import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem; +import io.quarkus.deployment.builditem.CombinedIndexBuildItem; +import io.quarkus.deployment.builditem.FeatureBuildItem; +import io.quarkus.deployment.builditem.substrate.ReflectiveClassBuildItem; +import io.quarkus.deployment.builditem.substrate.ServiceProviderBuildItem; +import io.quarkus.deployment.builditem.substrate.SubstrateResourceBuildItem; +import io.quarkus.deployment.util.ServiceUtil; +import org.apache.camel.quarkus.core.runtime.CamelConfig.Runtime; + +class MailProcessor { + + private static final String FEATURE = "camel-mail"; + + @Inject + BuildProducer<ReflectiveClassBuildItem> reflectiveClass; + + @Inject + BuildProducer<SubstrateResourceBuildItem> resource; + + @Inject + BuildProducer<ServiceProviderBuildItem> services; + + @Inject + ApplicationArchivesBuildItem applicationArchivesBuildItem; + + @BuildStep + FeatureBuildItem feature() { + return new FeatureBuildItem(FEATURE); + } + + @BuildStep + void process() throws IOException { + List<String> providers = resources("META-INF/services/javax.mail.Provider") + .flatMap(this::lines) + .filter(s -> !s.startsWith("#")) + .collect(Collectors.toList()); + + List<String> imp1 = providers.stream() + .map(this::loadClass) + .map(this::instantiate) Review comment: As we are only registering the providers for reflection, do we really need to instantiate the provider ? ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services