<div dir="ltr">Very odd. OK. Here's my <font face="monospace">META-INF/beans.xml</font>:<div><br></div><div><div><font face="monospace"><?xml version="1.0" encoding="UTF-8"?></font></div><div><font face="monospace"><beans xmlns="<a href="http://xmlns.jcp.org/xml/ns/javaee">http://xmlns.jcp.org/xml/ns/javaee</a>"</font></div><div><font face="monospace"> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"</font></div><div><font face="monospace"> xsi:schemaLocation="<a href="http://xmlns.jcp.org/xml/ns/javaee">http://xmlns.jcp.org/xml/ns/javaee</a></font></div><div><font face="monospace"> <a href="http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd">http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd</a>"</font></div><div><font face="monospace"> version="2.0"</font></div><div><font face="monospace"> bean-discovery-mode="annotated"></font></div><div><font face="monospace"></beans></font></div></div><div><br></div><div>…and here is a cut down, won't-compile gist of my extension class:</div><div><br></div><div><div><font face="monospace">public class MavenExtension implements Extension {</font></div><div><font face="monospace"><br></font></div><div><font face="monospace"> public MavenExtension() {</font></div><div><font face="monospace"> super();</font></div><div><font face="monospace"> }</font></div></div><div><font face="monospace"><br></font></div><div><font face="monospace"> private final void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event) {</font></div><div><font face="monospace"> if (event != null) {</font></div><div><font face="monospace"><br></font></div><div><font face="monospace"> //</font></div><div><font face="monospace"> // Types effectively bound by DefaultServiceLocator</font></div><div><font face="monospace"> //</font></div><div><font face="monospace"> </font></div><div><font face="monospace"> event.addAnnotatedType(DefaultArtifactResolver.class, "maven").add(SingletonLiteral.INSTANCE);</font></div><div><font face="monospace"><br></font></div><div><font face="monospace"> // and so on</font></div><div><font face="monospace"> }</font></div><div><font face="monospace"><br></font></div><div><font face="monospace"> private static final class Producers {<br></font></div><div><font face="monospace"><br></font></div><div><font face="monospace"> @Produces</font></div><div><font face="monospace"> @Singleton</font></div><div><font face="monospace"> private static final ModelInterpolator produceModelInterpolator(final UrlNormalizer normalizer, final PathTranslator pathTranslator) {</font></div><div><font face="monospace"> return new StringSearchModelInterpolator().setPathTranslator(pathTranslator).setUrlNormalizer(normalizer);</font></div><div><font face="monospace"> }</font></div><div><font face="monospace"><br></font></div><div><font face="monospace"> }</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">}</font></div><div><br></div><div>Also if it matters my main loop does nothing. In other words, the test starts the container and closes it—which boots the extension of course, whereupon I notice that my <font face="monospace">Producers</font> class gets picked up. I would have expected that I would have to programmatically add my <font face="monospace">Producers</font> class for its producer methods to be "seen", but I don't have to. That seems odd to me.</div><div><br></div><div>(Frankly, what I <i>really</i> want is for those producer methods, all of which are <font face="monospace">static</font>, to just be members of my extension class, but they are not seen in this case.)</div><div><br></div><div>Best,</div><div>Laird</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Mar 20, 2017 at 10:42 AM John Ament <<a href="mailto:john.ament@spartasystems.com">john.ament@spartasystems.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr" class="gmail_msg">
<div id="m_2560997016784671564divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif" dir="ltr" class="gmail_msg">
<p class="gmail_msg">So I just tried locally with Weld 3.0 CR2</p>
<p class="gmail_msg"><br class="gmail_msg">
</p>
<p class="gmail_msg"></p>
<div class="gmail_msg">public class BeanDiscoverer implements Extension {</div>
<div class="gmail_msg"> public void onBeans(@Observes ProcessBean<?> pb) {</div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg"> }</div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg"> @Singleton</div>
<div class="gmail_msg"> public static class Producers {</div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg"> }</div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg"> public static void main(String...args) {</div>
<div class="gmail_msg"> final SeContainer initialize = SeContainerInitializer.newInstance().initialize();</div>
<div class="gmail_msg"> final Producers producers = initialize.select(Producers.class).get();</div>
<div class="gmail_msg"> assert producers == null;</div>
<div class="gmail_msg"> initialize.close();</div>
<div class="gmail_msg"> }</div>
<div class="gmail_msg">}</div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<br class="gmail_msg">
<p class="gmail_msg"></p>
<p class="gmail_msg"><br class="gmail_msg">
</p>
<p class="gmail_msg">And it correctly throws </p>
<p class="gmail_msg"><br class="gmail_msg">
</p>
<p class="gmail_msg"></p>
<div class="gmail_msg">Exception in thread "main" org.jboss.weld.exceptions.UnsatisfiedResolutionException: WELD-001334: Unsatisfied dependencies for type Producers with qualifiers </div>
<div class="gmail_msg"><span class="m_2560997016784671564Apple-tab-span gmail_msg" style="white-space:pre-wrap"></span>at org.jboss.weld.bean.builtin.InstanceImpl.get(InstanceImpl.java:110)</div>
<div class="gmail_msg"><span class="m_2560997016784671564Apple-tab-span gmail_msg" style="white-space:pre-wrap"></span>at ws.ament.cdi.se.extensions.BeanDiscoverer.main(BeanDiscoverer.java:22)</div>
<div class="gmail_msg"><span class="m_2560997016784671564Apple-tab-span gmail_msg" style="white-space:pre-wrap"></span>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div>
<div class="gmail_msg"><span class="m_2560997016784671564Apple-tab-span gmail_msg" style="white-space:pre-wrap"></span>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)</div>
<div class="gmail_msg"><span class="m_2560997016784671564Apple-tab-span gmail_msg" style="white-space:pre-wrap"></span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</div>
<div class="gmail_msg"><span class="m_2560997016784671564Apple-tab-span gmail_msg" style="white-space:pre-wrap"></span>at java.lang.reflect.Method.invoke(Method.java:497)</div>
<div class="gmail_msg"><span class="m_2560997016784671564Apple-tab-span gmail_msg" style="white-space:pre-wrap"></span>at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)</div>
<div class="gmail_msg">2017-03-20 10:36:22,254 Thread-1 WARN Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger</div>
<div class="gmail_msg">Weld SE container d32779c5-500e-4457-95b6-8e7bf49561f9 shut down by shutdown hook</div>
<br class="gmail_msg">
<p class="gmail_msg"></p>
<p class="gmail_msg">Even when I explicitly add the extension, same thing occurs (<span class="gmail_msg">.addExtensions(BeanDiscoverer.class)). Even when I explicitly add to META-INF/services/Extension it fails.</span></p>
<p class="gmail_msg"><span class="gmail_msg"><br class="gmail_msg">
</span></p>
<p class="gmail_msg"><span class="gmail_msg">This is what my beans.xml looks like:</span></p>
<p class="gmail_msg"><span class="gmail_msg"><br class="gmail_msg">
</span></p>
<p class="gmail_msg"><span class="gmail_msg"></span></p>
<div class="gmail_msg"><beans xmlns="<a href="http://xmlns.jcp.org/xml/ns/javaee" class="gmail_msg" target="_blank">http://xmlns.jcp.org/xml/ns/javaee</a>" bean-discovery-mode="annotated" version="2.0"></div>
<div class="gmail_msg"></beans></div>
<br class="gmail_msg">
<p class="gmail_msg"></p>
<p class="gmail_msg"><span class="gmail_msg">Only when I change to all does it run fine... You can see the full example at <a href="https://github.com/johnament/cdi-2.0-presentations/blob/master/cdi2conference/src/main/java/ws/ament/cdi/se/extensions/BeanDiscoverer.java" class="m_2560997016784671564OWAAutoLink gmail_msg" id="m_2560997016784671564LPlnk843033" target="_blank">https://github.com/johnament/cdi-2.0-presentations/blob/master/cdi2conference/src/main/java/ws/ament/cdi/se/extensions/BeanDiscoverer.java</a> so
I'm curious to know if there's anything different between our setups.</span><br class="gmail_msg">
</p>
<p class="gmail_msg"><br class="gmail_msg">
</p>
<p class="gmail_msg">John</p>
<div id="m_2560997016784671564Signature" class="gmail_msg">
<div id="m_2560997016784671564divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:#000000;background-color:#ffffff;font-family:Calibri,Arial,Helvetica,sans-serif" class="gmail_msg">
<p class="gmail_msg"></p>
</div>
</div>
<br class="gmail_msg">
<br class="gmail_msg">
<div style="color:rgb(0,0,0)" class="gmail_msg">
<hr style="display:inline-block;width:98%" class="gmail_msg">
<div id="m_2560997016784671564divRplyFwdMsg" dir="ltr" class="gmail_msg"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt" class="gmail_msg"><b class="gmail_msg">From:</b> Laird Nelson <<a href="mailto:ljnelson@gmail.com" class="gmail_msg" target="_blank">ljnelson@gmail.com</a>><br class="gmail_msg">
<b class="gmail_msg">Sent:</b> Monday, March 20, 2017 1:24 PM<br class="gmail_msg">
<b class="gmail_msg">To:</b> John Ament; Martin Kouba; cdi-dev</font></div></div></div></div><div dir="ltr" class="gmail_msg"><div id="m_2560997016784671564divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif" dir="ltr" class="gmail_msg"><div style="color:rgb(0,0,0)" class="gmail_msg"><div id="m_2560997016784671564divRplyFwdMsg" dir="ltr" class="gmail_msg"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt" class="gmail_msg"><br class="gmail_msg">
<b class="gmail_msg">Subject:</b> Re: [cdi-dev] Bean discovery question</font></div></div></div></div><div dir="ltr" class="gmail_msg"><div id="m_2560997016784671564divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif" dir="ltr" class="gmail_msg"><div style="color:rgb(0,0,0)" class="gmail_msg">
<div class="gmail_msg">
<div dir="ltr" class="gmail_msg">SE, and the initializer is brain-dead simple.
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg"><font face="monospace" class="gmail_msg">final SeContainerInitializer initializer = SeContainerInitializer.newInstance();</font></div>
<div class="gmail_msg"><font face="monospace" class="gmail_msg">assert initializer != null;</font></div>
<div class="gmail_msg"><font face="monospace" class="gmail_msg">try (final SeContainer container = initializer.initialize()) {</font></div>
<div class="gmail_msg"><font face="monospace" class="gmail_msg"> assert container != null;</font></div>
<div class="gmail_msg"><font face="monospace" class="gmail_msg">}</font></div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg">Best,</div>
<div class="gmail_msg">Laird</div>
</div>
<br class="gmail_msg">
<div class="gmail_quote gmail_msg">
<div dir="ltr" class="gmail_msg">On Mon, Mar 20, 2017 at 10:21 AM John Ament <<a href="mailto:john.ament@spartasystems.com" class="gmail_msg" target="_blank">john.ament@spartasystems.com</a>> wrote:<br class="gmail_msg">
</div>
<blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr" class="gmail_msg">
<div id="m_2560997016784671564m_8602380584706632731divtagdefaultwrapper" dir="ltr" class="gmail_msg" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif">
<p class="gmail_msg">Since you're mentioning a fledgling project and CDI 2.0, are you using SE mode of CDI, or is this within a container (and I'm guessing some custom integration)? If you're using SE, what does your SEContainerInitializer lines look like?</p>
<p class="gmail_msg"><br class="gmail_msg">
</p>
<p class="gmail_msg">John</p>
<div id="m_2560997016784671564m_8602380584706632731Signature" class="gmail_msg">
<div id="m_2560997016784671564m_8602380584706632731divtagdefaultwrapper" dir="ltr" class="gmail_msg" style="font-size:12pt;color:#000000;background-color:#ffffff;font-family:Calibri,Arial,Helvetica,sans-serif">
<div class="gmail_msg" style="color:rgb(33,33,33);font-size:15px;margin:0px"><br class="gmail_msg">
</div>
<p class="gmail_msg"></p>
</div>
</div>
<br class="gmail_msg">
<br class="gmail_msg">
<div class="gmail_msg" style="color:rgb(0,0,0)">
<hr class="gmail_msg" style="display:inline-block;width:98%">
<div id="m_2560997016784671564m_8602380584706632731divRplyFwdMsg" dir="ltr" class="gmail_msg"><font face="Calibri, sans-serif" color="#000000" class="gmail_msg" style="font-size:11pt"><b class="gmail_msg">From:</b>
<a href="mailto:cdi-dev-bounces@lists.jboss.org" class="gmail_msg" target="_blank">
cdi-dev-bounces@lists.jboss.org</a> <<a href="mailto:cdi-dev-bounces@lists.jboss.org" class="gmail_msg" target="_blank">cdi-dev-bounces@lists.jboss.org</a>> on behalf of Laird Nelson <<a href="mailto:ljnelson@gmail.com" class="gmail_msg" target="_blank">ljnelson@gmail.com</a>><br class="gmail_msg">
<b class="gmail_msg">Sent:</b> Monday, March 20, 2017 11:12 AM<br class="gmail_msg">
<b class="gmail_msg">To:</b> Martin Kouba; cdi-dev<br class="gmail_msg">
<b class="gmail_msg">Subject:</b> Re: [cdi-dev] Bean discovery question</font>
<div class="gmail_msg"> </div>
</div>
</div>
</div>
</div>
<div dir="ltr" class="gmail_msg">
<div id="m_2560997016784671564m_8602380584706632731divtagdefaultwrapper" dir="ltr" class="gmail_msg" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif">
<div class="gmail_msg" style="color:rgb(0,0,0)">
<div class="gmail_msg">
<div dir="ltr" class="gmail_msg">
<div class="gmail_quote gmail_msg">
<div dir="ltr" class="gmail_msg">On Mon, Mar 20, 2017 at 12:26 AM Martin Kouba <<a href="mailto:mkouba@redhat.com" class="gmail_msg" target="_blank">mkouba@redhat.com</a>> wrote:<br class="gmail_msg">
</div>
<blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Weld version? Environment? Deployment structure?<br class="gmail_msg">
</blockquote>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg">3.0.0-CR2 (CDI 2.0-PFD).</div>
<div class="gmail_msg">Fledgling project containing only the extension at the moment, so no beans.</div>
<div class="gmail_msg"> </div>
<blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I think the Producers class should not be discovered. So it looks like a<br class="gmail_msg">
bug or misconfiguration.<br class="gmail_msg">
</blockquote>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg">Thank you; I'll file a bug once I have time to put together a test case.</div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
<div class="gmail_msg">Best,</div>
<div class="gmail_msg">Laird</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div dir="ltr" class="gmail_msg">
<div id="m_2560997016784671564m_8602380584706632731divtagdefaultwrapper" dir="ltr" class="gmail_msg" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif">
<div class="gmail_msg" style="color:rgb(0,0,0)"></div>
</div>
<hr class="gmail_msg">
NOTICE: This e-mail message and any attachments may contain confidential, proprietary, and/or privileged information which should be treated accordingly. If you are not the intended recipient, please notify the sender immediately by return e-mail, delete this
message, and destroy all physical and electronic copies. Thank you. </div>
</blockquote>
</div>
</div>
</div></div></div><div dir="ltr" class="gmail_msg">
<hr class="gmail_msg">
NOTICE: This e-mail message and any attachments may contain confidential, proprietary, and/or privileged information which should be treated accordingly. If you are not the intended recipient, please notify the sender immediately by return e-mail, delete this
message, and destroy all physical and electronic copies. Thank you.
</div></blockquote></div>