@Override public void undeploy(DeploymentUnit context) { Config config = context.getAttachment(CONFIG); ConfigProviderResolver configProviderResolver = context.getAttachment(CONFIG_PROVIDER_RESOLVER); configProviderResolver.releaseConfig(config); } }
config = (MpConfig) ConfigProviderResolver.instance().getConfig(classLoader); } else { ConfigProviderResolver.instance().registerConfig(config, classLoader);
@Test public void testAutoDiscoveredConfigureSources() { Config config = ConfigProviderResolver.instance().getBuilder().addDefaultSources().addDiscoveredSources().build(); Assert.assertEquals(config.getValue("tck.config.test.customDbConfig.key1", String.class), "valueFromDb1"); } @Test
public void shutdown(@Observes BeforeShutdown bsd) { ConfigProviderResolver.instance().releaseConfig(config); }
@Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); Module module = deploymentUnit.getAttachment(Attachments.MODULE); SmallRyeConfigBuilder builder = new SmallRyeConfigBuilder(); builder.forClassLoader(module.getClassLoader()) .addDefaultSources() .addDiscoveredSources() .addDiscoveredConverters(); addConfigSourcesFromServices(builder, phaseContext.getServiceRegistry(), module.getClassLoader()); Config config = builder.build(); ConfigProviderResolver.instance().registerConfig(config, module.getClassLoader()); if (WeldDeploymentMarker.isPartOfWeldDeployment(deploymentUnit)) { WeldPortableExtensions extensions = WeldPortableExtensions.getPortableExtensions(deploymentUnit); extensions.registerExtensionInstance(new ConfigExtension(), deploymentUnit); } }
MicroprofileClientBuilder() { ClientBuilder availableBuilder = ClientBuilder.newBuilder(); if (availableBuilder instanceof ResteasyClientBuilder) { this.builderDelegate = (ResteasyClientBuilder) availableBuilder; this.configurationWrapper = new ConfigurationWrapper(this.builderDelegate.getConfiguration()); Config cfg = null; try { ConfigProviderResolver.instance(); cfg = ConfigProvider.getConfig(); } catch (IllegalStateException ise) { //ignore } this.config = cfg; } else { throw new IllegalStateException("Incompatible client builder found " + availableBuilder.getClass()); } }
MpConfig mpConfig = (MpConfig) configResolver.getConfig();
@Override public void stop(StopContext context) { ConfigProviderResolver.setInstance(null); }
@Override public void deploy(DeploymentPhaseContext phaseContext) { DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); Module module = deploymentUnit.getAttachment(Attachments.MODULE); SmallRyeConfigBuilder builder = new SmallRyeConfigBuilder(); builder.forClassLoader(module.getClassLoader()) .addDefaultSources() .addDiscoveredSources() .addDiscoveredConverters(); addConfigSourcesFromServices(builder, phaseContext.getServiceRegistry(), module.getClassLoader()); Config config = builder.build(); deploymentUnit.putAttachment(CONFIG, config); ConfigProviderResolver configProviderResolver = deploymentUnit.getAttachment(CONFIG_PROVIDER_RESOLVER); configProviderResolver.registerConfig(config, module.getClassLoader()); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testAutoDiscoveredConverterNotAddedAutomatically() { Config config = ConfigProviderResolver.instance().getBuilder().addDefaultSources().addDiscoveredSources().build(); Pizza dVaule = config.getValue("tck.config.test.customDbConfig.key3", Pizza.class); Assert.fail("The auto discovered converter should not be added automatically."); } }
@Override public void undeploy(DeploymentUnit context) { Module module = context.getAttachment(Attachments.MODULE); try { ConfigProviderResolver.instance().releaseConfig(ConfigProvider.getConfig(module.getClassLoader())); } catch (IllegalStateException e) { // Do nothing } } }
@Override public void deploy(DeploymentPhaseContext phaseContext) { DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); Module module = deploymentUnit.getAttachment(Attachments.MODULE); SmallRyeConfigBuilder builder = new SmallRyeConfigBuilder(); builder.forClassLoader(module.getClassLoader()) .addDefaultSources() .addDiscoveredSources() .addDiscoveredConverters(); addConfigSourcesFromServices(builder, phaseContext.getServiceRegistry(), module.getClassLoader()); Config config = builder.build(); ConfigProviderResolver configProviderResolver = ConfigProviderResolver.instance(); deploymentUnit.putAttachment(CONFIG, config); deploymentUnit.putAttachment(CONFIG_PROVIDER_RESOLVER, configProviderResolver); configProviderResolver.registerConfig(config, module.getClassLoader()); if (WeldDeploymentMarker.isPartOfWeldDeployment(deploymentUnit)) { WeldPortableExtensions extensions = WeldPortableExtensions.getPortableExtensions(deploymentUnit); extensions.registerExtensionInstance(new ConfigExtension(), deploymentUnit); } }
MicroprofileClientBuilder() { ClientBuilder availableBuilder = ClientBuilder.newBuilder(); if (availableBuilder instanceof ResteasyClientBuilder) { this.builderDelegate = (ResteasyClientBuilder) availableBuilder; this.configurationWrapper = new ConfigurationWrapper(this.builderDelegate.getConfiguration()); Config cfg = null; try { ConfigProviderResolver.instance(); cfg = ConfigProvider.getConfig(); } catch (IllegalStateException ise) { //ignore } this.config = cfg; } else { throw new IllegalStateException("Incompatible client builder found " + availableBuilder.getClass()); } }
/** * Register a config producer bean for each {@link ConfigProperty} injection. * * @param abd event from CDI container * @param bm bean manager */ public void registerConfigProducer(@Observes AfterBeanDiscovery abd, BeanManager bm) { // each injection point will have its own bean qualifiers.forEach(q -> abd.addBean(new ConfigPropertyProducer(q.qualifier, q.type, bm))); // we also must support injection of Config itself abd.addBean() .addType(Config.class) .createWith(creationalContext -> ((MpConfig) configResolver.getConfig()).helidonConfig()); abd.addBean() .addType(org.eclipse.microprofile.config.Config.class) .createWith(creationalContext -> { return new SerializableConfig(); }); }
@Override public void start(StartContext context) { ConfigProviderResolver.setInstance(SmallRyeConfigProviderResolver.INSTANCE); }
config = (MpConfig) ConfigProviderResolver.instance().getConfig(classLoader); } else { ConfigProviderResolver.instance().registerConfig(config, classLoader);
@Test public void testDonaldConversionWithLambdaConverter() { Config newConfig = ConfigProviderResolver.instance().getBuilder().addDefaultSources() .withConverter(Donald.class, 100, (s) -> Donald.iLikeDonald(s)) .build(); Donald donald = newConfig.getValue("tck.config.test.javaconfig.converter.donaldname", Donald.class); Assert.assertNotNull(donald); Assert.assertEquals(donald.getName(), "Duck"); }
/** * Provide a {@link Config} based on all {@link org.eclipse.microprofile.config.spi.ConfigSource ConfigSources} of the * specified ClassLoader * * <p> * There is exactly a single Config instance per ClassLoader * * @param cl the specified classloader * @return the config for the specified classloader */ public static Config getConfig(ClassLoader cl) { return INSTANCE.getConfig(cl); } }