They were JDK classes. My extension (https://github.com/soulwing/pinject) does property injection into fields like String, primitives, and other types that have a simple textual representations that can be put in a properties file. {{Bean.getBeanClass}} was return returning the target type of the injection point. Now it returns the class of the POJO that holds the derived property value; {{Bean.getTypes}} returns the targeted type.
Looking at https://github.com/wildfly/wildfly/blob/a8db4da1415a1b497d73c7e3c9717906ca88896c/weld/src/main/java/org/jboss/as/weld/deployment/WeldDeployment.java
it appears that integration is creating a new BDA for each individual bean class that isn’t found on a module class loader. In {{getBeanDeploymentArchive}} if it doesn't find the class on one of the module class loaders, it returns {{null}}. In {{createAndRegisterAdditionalBeanDeploymentArchive}} it falls through to line 208 where (based on comments at line 205) it looks like the intent was to ignore classes from the bootstrap class loader. If the class has no class loader, it doesn't put the BDA in the map, but it does add it to the list of BDAs -- i.e. we get a new BDA with the same ID for each class on the bootstrap class loader, and Weld doesn't like that.
|