private Iterable<Metadata<Extension>> getExtensions( ClassLoader classLoader, Bootstrap bootstrap) { Set<Metadata<Extension>> result = new HashSet<Metadata<Extension>>(); if (discoveryEnabled) { Iterables.addAll(result, bootstrap.loadExtensions(classLoader)); } if (!extensions.isEmpty()) { result.addAll(extensions); } // Ensure that WeldSEBeanRegistrant is present WeldSEBeanRegistrant weldSEBeanRegistrant = null; for (Metadata<Extension> metadata : result) { if (metadata.getValue().getClass().getName().equals(WeldSEBeanRegistrant.class.getName())) { weldSEBeanRegistrant = (WeldSEBeanRegistrant) metadata.getValue(); break; } } if (weldSEBeanRegistrant == null) { try { weldSEBeanRegistrant = SecurityActions.newInstance(WeldSEBeanRegistrant.class); result.add( new MetadataImpl<Extension>( weldSEBeanRegistrant, SYNTHETIC_LOCATION_PREFIX + WeldSEBeanRegistrant.class.getName())); } catch (Exception e) { throw new RuntimeException(e); } } if (!beanBuilders.isEmpty()) { weldSEBeanRegistrant.setBeanBuilders(beanBuilders); } return result; }
private void setExtensions(Iterable<Metadata<Extension>> extensions) { this.extensions = new ArrayList<Metadata<? extends Extension>>(); Iterables.addAll(this.extensions, extensions); }