/** * Binds the single descriptor using a single {@link DynamicConfiguration}. * * @param locator HK2 injection manager. * @param binding Jersey descriptor as a holder of information about an injection point. */ private static void bindBinding(ServiceLocator locator, Binding<?, ?> binding) { DynamicConfiguration dc = getDynamicConfiguration(locator); bindBinding(locator, dc, binding); dc.commit(); }
private static boolean addIfNotThere(ServiceLocator locator, DynamicConfiguration config, DescriptorImpl desc, HK2Loader loader) { IndexedFilter filter = BuilderHelper.createContractFilter(desc.getImplementation()); if (locator.getBestDescriptor(filter) != null) return false; if (loader != null) { desc.setLoader(loader); } config.bind(desc); return true; }
private void addDescriptorFileFinder( ServiceLocator serviceLocator, DescriptorFileFinder descriptorFileFinder) { if (descriptorFileFinder != null) { DynamicConfigurationService dcs = serviceLocator .getService(DynamicConfigurationService.class); DynamicConfiguration config = dcs.createDynamicConfiguration(); config.addActiveDescriptor(BuilderHelper .createConstantDescriptor(descriptorFileFinder)); config.commit(); } }
private static void bind(ServiceLocator locator, Binder binder) { DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); DynamicConfiguration dc = dcs.createDynamicConfiguration(); locator.inject(binder); binder.bind(dc); dc.commit(); }
Context<PerThread> perThreadContext = locator.getService((new TypeLiteral<Context<PerThread>>() {}).getType()); if (perThreadContext != null) return; DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); DynamicConfiguration config = dcs.createDynamicConfiguration(); final DescriptorImpl descriptor = BuilderHelper.link(PerThreadContext.class). to(Context.class). in(Singleton.class.getName()). descriptor.setLoader(new HK2Loader() { @Override public Class<?> loadClass(String className) throws MultiException { config.bind(descriptor, false); config.commit();
@BeforeClass public static void before() { DynamicConfigurationService dcs = habitat.getService(DynamicConfigurationService.class); DynamicConfiguration config = dcs.createDynamicConfiguration(); new ConfigModule(habitat).configure(config); config.commit(); }
public void removedService(ServiceReference reference, final Object service) { DynamicConfigurationService dcs = serviceLocator.getService(DynamicConfigurationService.class); DynamicConfiguration config = dcs.createDynamicConfiguration(); org.glassfish.hk2.api.Filter filter = new org.glassfish.hk2.api.Filter() { @Override public boolean matches(Descriptor d) { return service.equals(d); // addingServices() returns the descriptor } }; config.addUnbindFilter(filter); config.commit(); } }
if (locator == null) throw new IllegalArgumentException(); DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); DynamicConfiguration cd = dcs.createDynamicConfiguration(); FactoryDescriptors fds = cd.addActiveFactoryDescriptor((Class<Factory<Object>>) factoryConstant.getClass()); intermediateState.add(fds); cd = dcs.createDynamicConfiguration(); final Factory<?> constant = constants[lcv++]; Descriptor constantDescriptor = BuilderHelper.createConstantDescriptor(constant); Descriptor addProvideMethod = new DescriptorImpl(provideMethod); retVal.add(cd.bind(fdi)); cd.commit();
fileFinder = serviceLocator.getService(DescriptorFileFinder.class); if (fileFinder == null) return descriptors; DynamicConfiguration config = dcs.createDynamicConfiguration(); DescriptorImpl descriptorImpl = new DescriptorImpl(); readOne = descriptorImpl.readObject(br); descriptors.add(config.bind(descriptorImpl, false)); config.commit();
if (locator == null || descriptor == null) throw new IllegalArgumentException(); DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); DynamicConfiguration config = dcs.createDynamicConfiguration(); Filter destructionFilter = BuilderHelper.createSpecificDescriptorFilter(descriptor); config.addUnbindFilter(destructionFilter); List<ActiveDescriptor<?>> goingToDie = locator.getDescriptors(destructionFilter); if (!goingToDie.isEmpty()) { AliasFilter af = new AliasFilter(goingToDie); config.addUnbindFilter(af); config.commit(); di = new DescriptorImpl(descriptor); config.addUnbindFilter(destructionFilter); List<ActiveDescriptor<?>> goingToDie = locator.getDescriptors(destructionFilter); if (!goingToDie.isEmpty()) { AliasFilter af = new AliasFilter(goingToDie); config.addUnbindFilter(af); config.commit();
ServiceLocator locator = getServiceLocator(); ActiveDescriptor<?> myselfReified = locator.reifyDescriptor(this); DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); DynamicConfiguration dc = dcs.createDynamicConfiguration(); getImplementation(), new HashSet<Annotation>()); domDesc.setLoader(loader); domDescriptor = dc.addActiveDescriptor(domDesc, false); dc.addActiveDescriptor(alias, false); dc.addActiveDescriptor(alias, false); dc.commit(); serviceHandle = getHabitat().getServiceHandle(domDescriptor);
private static void atomicReplace(ServiceLocator locator, ProgramOptions options) { DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); DynamicConfiguration config = dcs.createDynamicConfiguration(); config.addUnbindFilter(BuilderHelper.createContractFilter(ProgramOptions.class.getName())); ActiveDescriptor<ProgramOptions> desc = BuilderHelper.createConstantDescriptor( options, null, ProgramOptions.class); config.addActiveDescriptor(desc); config.commit(); }
@Override public void initializeSpringBridge(ServiceLocator locator) throws MultiException { boolean addService = true; if (locator.getBestDescriptor(BuilderHelper.createContractFilter(SpringIntoHK2Bridge.class.getName())) != null) { addService = false; } boolean addContext = true; if (locator.getBestDescriptor(BuilderHelper.createContractFilter(SpringScopeContext.class.getName())) != null) { addContext = false; } if (addService == false && addContext == false) return; DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); if (dcs == null) return; DynamicConfiguration config = dcs.createDynamicConfiguration(); if (addService) { config.addActiveDescriptor(SpringIntoHK2BridgeImpl.class); } if (addContext) { config.addActiveDescriptor(SpringScopeContext.class); } config.commit(); }
configurator.bind(BuilderHelper.link(ConfigSupport.class) .in(Singleton.class.getName()) .build()); configurator.bind(BuilderHelper.link(Transactions.class) .in(Singleton.class.getName()) .build()); configurator.bind(BuilderHelper.link(SimpleConfigBeanDomDecorator.class) .to(DomDecorator.class).in(Singleton.class.getName()) .build()); configurator.bind(BuilderHelper.link(ConfigurationPopulator.class) .in(Singleton.class.getName()) .build()); configurator.bind(BuilderHelper.link(DummyPopulator.class) .to(Populator.class).in(Singleton.class.getName()) .build()); configurator.addActiveDescriptor(ConfigErrorService.class); bindInjector(configurator, "simple-connector", SimpleConnector.class, SimpleConnectorInjector.class); bindInjector(configurator, "ejb-container-availability", EjbContainerAvailability.class, EjbContainerAvailabilityInjector.class);
descriptors.add(new DescriptorImpl(d)); for (Descriptor descriptor : descriptors) { DescriptorImpl di = (descriptor instanceof DescriptorImpl) ? (DescriptorImpl) descriptor : new DescriptorImpl(descriptor) ; activeDescriptors.add(dcs.bind(descriptorImpl, false)); dcs.commit();
/** * Binds a new instance {@link Binding} using the information from the Jersey descriptor {@link InstanceBinding}. * <p> * Along with a new instance, the method is able to register aliases belonging to the new service. * * @param locator HK2 injection manager. * @param dc HK2 Dynamic configuration to bind the object. * @param activeDescriptor HK2 active descriptor. * @param aliases aliases belonging to the given descriptor. */ private static void bindBinding(ServiceLocator locator, DynamicConfiguration dc, ActiveDescriptor<?> activeDescriptor, Set<AliasBinding> aliases) { ActiveDescriptor<Object> boundDescriptor = dc.bind(activeDescriptor); for (AliasBinding alias : aliases) { dc.bind(createAlias(locator, boundDescriptor, alias)); } }
@SuppressWarnings({ "unchecked" }) @Override public boolean justInTimeResolution(Injectee failedInjectionPoint) { Type requiredType = failedInjectionPoint.getRequiredType(); Set<Annotation> setQualifiers = failedInjectionPoint.getRequiredQualifiers(); Annotation qualifiers[] = setQualifiers.toArray(new Annotation[setQualifiers.size()]); BeanManager manager = getCurrentBeanManager(); if (manager == null) return false; Set<Bean<?>> beans = manager.getBeans(requiredType, qualifiers); if (beans == null || beans.isEmpty()) { return false; } DynamicConfiguration config = ServiceLocatorUtilities.createDynamicConfiguration(locator); for (Bean<?> bean : beans) { // Add a bean to the service locator CDIHK2Descriptor<Object> descriptor = new CDIHK2Descriptor<Object>(manager, (Bean<Object>) bean, requiredType); config.addActiveDescriptor(descriptor); } config.commit(); return true; }
/** * {@inheritDoc} * <p> * This method can be called only in the execution context of the {@link #configure()} * method. * </p> */ @Override public <T> ActiveDescriptor<T> addActiveDescriptor(Class<T> rawClass) throws MultiException, IllegalArgumentException { return configuration().addActiveDescriptor(rawClass); }
private void bindInjector(DynamicConfiguration configurator, String elementName, Class contract, final Class clz) { DescriptorBuilder db = BuilderHelper.link(clz). to(ConfigInjector.class).to(InjectionTarget.class).to(contract). in(Singleton.class.getName()). db.has(key, metaMap.get(key)); ActiveDescriptor desc = configurator.bind(db.build()); configurator.bind(new AliasDescriptor(serviceLocator, desc, InjectionTarget.class.getName(), contract.getName())); System.out.println("**Successfully bound an alias descriptor for: " + elementName);
@SuppressWarnings("unchecked") private <T> void bindClass(final Class<T> clazz, final ServiceLocator locator, final DynamicConfiguration dc, final boolean isResource) { final Class<? extends Annotation> scope = getProviderScope(clazz); if (isResource) { final ActiveDescriptor<?> descriptor = dc.bind(BuilderHelper.activeLink(clazz).to(clazz).in(scope).build()); for (final Class contract : Providers.getProviderContracts(clazz)) { final AliasDescriptor aliasDescriptor = new AliasDescriptor(locator, descriptor, contract.getName(), null); aliasDescriptor.setScope(scope.getName()); aliasDescriptor.addQualifierAnnotation(CustomAnnotationLiteral.INSTANCE); dc.bind(aliasDescriptor); } } else { final ScopedBindingBuilder<T> bindingBuilder = Injections.newBinder(clazz).in(scope).qualifiedBy(CustomAnnotationLiteral.INSTANCE); for (final Class contract : Providers.getProviderContracts(clazz)) { bindingBuilder.to(contract); } Injections.addBinding(bindingBuilder, dc); } }