We register a single bean per injection point. That bean handles the look up but only returns the type of the injection point. But its still a bit odd.
I added CDI.current().select(int[].class, new ConfigProperty...) to my test to see what happens. In Weld, I see it call the producer but fail (because of missing annotations). In OWB, it doesn't call the bean's create method at all. Which makes me think its an OWB issue. I'll see if I can come up with a local test case. John On Mon, Dec 18, 2017 at 8:50 AM Romain Manni-Bucau <rmannibu...@gmail.com> wrote: > Isn't it cause we reuse a generic producer? > > > Romain Manni-Bucau > @rmannibucau <https://twitter.com/rmannibucau> | Blog > <https://rmannibucau.metawerx.net/> | Old Blog > <http://rmannibucau.wordpress.com> | Github < > https://github.com/rmannibucau> | > LinkedIn <https://www.linkedin.com/in/rmannibucau> > > 2017-12-18 13:01 GMT+01:00 John D. Ament <johndam...@apache.org>: > > > That's good that this works. However, I wonder if my issue is specific to > > 3rd Party Bean creation? Same problem seems to be on both OWB and Weld, > > which makes me think it's an impl issue, but I can't think of anything > else > > required on the impl side. > > > > Bean.getTypes() correctly returns String[].class > > qualifiers are correct > > > > The create method on the bean is never invoked, the injection point is > > always null. > > > > John > > > > On Mon, Dec 18, 2017 at 3:59 AM Romain Manni-Bucau < > rmannibu...@gmail.com> > > wrote: > > > > > Works for me: > > > > > > public class ArrayProducerTest extends AbstractUnitTest > > > { > > > > > > @Test > > > public void test() > > > { > > > startContainer(StringProducer.class); > > > > > > final String[] produced1 = getInstance(String[].class); > > > final StringProducer[] produced2 = > > > getInstance(StringProducer[].class); > > > > > > Assert.assertEquals(1, produced1.length); > > > Assert.assertEquals("string", produced1[0]); > > > > > > Assert.assertEquals(1, produced2.length); > > > Assert.assertNotNull(produced2[0]); > > > > > > shutDownContainer(); > > > > > > } > > > > > > public static class StringProducer > > > { > > > @Produces > > > public String[] produces() > > > { > > > return new String[] { "string" }; > > > } > > > > > > @Produces > > > public StringProducer[] produces2() > > > { > > > return new StringProducer[] { this }; > > > } > > > } > > > > > > } > > > > > > > > > > > > Romain Manni-Bucau > > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > <https://rmannibucau.metawerx.net/> | Old Blog > > > <http://rmannibucau.wordpress.com> | Github < > > > https://github.com/rmannibucau> | > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> > > > > > > 2017-12-18 9:15 GMT+01:00 Mark Struberg <strub...@yahoo.de.invalid>: > > > > > > > I think it should work. > > > > > > > > Could you please create a ticket? > > > > > > > > txs and LieGrue, > > > > strub > > > > > > > > > > > > > Am 18.12.2017 um 03:47 schrieb John D. Ament < > johndam...@apache.org > > >: > > > > > > > > > > MP Config is adding arrays as a valid type for config properties. > In > > > > doing > > > > > so, without making any changes to Geronimo Config I get this > failure > > > (not > > > > > what I'm expecting, I'm expecting no valid beans at this point): > > > > > > > > > > arquillianBeforeClass(org.eclipse.microprofile.config. > > > > tck.ClassConverterTest) > > > > > Time elapsed: 0.022 sec <<< FAILURE! > > > > > org.apache.webbeans.exception.WebBeansConfigurationException: > > > > > java.lang.IllegalArgumentException: Can't determine the type for > > > Class<? > > > > > extends Object>[] > > > > > at org.apache.webbeans.config.BeansDeployer.deploy( > > > > BeansDeployer.java:351) > > > > > at > > > > > org.apache.webbeans.lifecycle.AbstractLifeCycle. > > bootstrapApplication( > > > > AbstractLifeCycle.java:137) > > > > > at > > > > > org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication( > > > > AbstractLifeCycle.java:103) > > > > > at > > > > > > > > > org.apache.webbeans.arquillian.standalone.OwbStandaloneContainer.deploy( > > > > OwbStandaloneContainer.java:118) > > > > > at > > > > > org.jboss.arquillian.container.impl.client.container. > > > > ContainerDeployController$3.call(ContainerDeployController.java:161) > > > > > at > > > > > org.jboss.arquillian.container.impl.client.container. > > > > ContainerDeployController$3.call(ContainerDeployController.java:128) > > > > > at > > > > > org.jboss.arquillian.container.impl.client.container. > > > > ContainerDeployController.executeOperation(ContainerDeployController. > > > > java:271) > > > > > at > > > > > org.jboss.arquillian.container.impl.client.container. > > > > ContainerDeployController.deploy(ContainerDeployController.java:127) > > > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > > > at > > > > > sun.reflect.NativeMethodAccessorImpl.invoke( > > > > NativeMethodAccessorImpl.java:62) > > > > > at > > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke( > > > > DelegatingMethodAccessorImpl.java:43) > > > > > at java.lang.reflect.Method.invoke(Method.java:498) > > > > > > > > > > It seems that OWB can't handle array types as fields for injection. > > Is > > > > > this in fact expected? This is even though for any given class T, > > > > > T[].class is a valid object. > > > > > > > > > > > > > >