@Override @SuppressWarnings("unchecked") public ConfigResolver.TypedResolver<List<T>> asList() { isList = true; ConfigResolver.TypedResolver<List<T>> listTypedResolver = (ConfigResolver.TypedResolver<List<T>>) this; if (defaultValue == null) { // the default for lists is an empty list instead of null return listTypedResolver.withDefault(Collections.<T>emptyList()); } return listTypedResolver; }
final int coreSize = ConfigResolver.resolve(configPrefix + "coreSize") .as(Integer.class) .withDefault(Math.max(2, Runtime.getRuntime().availableProcessors())) .getValue(); final int maxSize = ConfigResolver.resolve(configPrefix + "maxSize") .as(Integer.class) .withDefault(coreSize) .getValue(); final long keepAlive = ConfigResolver.resolve(configPrefix + "keepAlive.value") .as(Long.class) .withDefault(0L) .getValue(); final String keepAliveUnit = ConfigResolver.resolve(configPrefix + "keepAlive.unit") .as(String.class) .withDefault("MILLISECONDS") .getValue(); .withDefault("LINKED") .getValue(); final BlockingQueue<Runnable> queue; .withDefault(1024) .getValue(); final boolean fair = ConfigResolver.resolve(configPrefix + "queue.fair") .as(Boolean.class) .withDefault(false) .getValue(); queue = new ArrayBlockingQueue<Runnable>(size, fair);
@Test public void testConverter() { Assert.assertEquals(new GregorianCalendar(2014, 12, 24).getTime(), ConfigResolver.resolve("deltaspike.test.date-value") .as(Date.class, new TestDateConverter()).getValue()); // test fallback to default Assert.assertEquals(new GregorianCalendar(2015, 01, 01).getTime(), ConfigResolver.resolve("deltaspike.test.INVALID-date-value") .as(Date.class, new TestDateConverter()) .withDefault(new GregorianCalendar(2015, 01, 01).getTime()) .getValue()); }
/** * {@link #getPropertyAwarePropertyValue(java.lang.String, java.lang.String)} which returns the provided default * value if no configured value can be found (<code>null</code> or empty). * * <p> * <b>Attention</b> This method must only be used after all ConfigSources got registered and it also must not be * used to determine the ProjectStage itself.</p> * * @param key * @param property the property to look up first and use as the parameter for the main lookup * @param defaultValue fallback value * * @return the configured value or if non found the defaultValue * */ public static String getPropertyAwarePropertyValue(String key, String property, String defaultValue) { return getConfigProvider().getConfig().resolve(key) .withCurrentProjectStage(true) .parameterizedBy(property) .withDefault(defaultValue) .evaluateVariables(true) .getValue(); }
/** * {@link #getPropertyAwarePropertyValue(java.lang.String, java.lang.String)} which returns the provided default * value if no configured value can be found (<code>null</code> or empty). * * <p> * <b>Attention</b> This method must only be used after all ConfigSources got registered and it also must not be * used to determine the ProjectStage itself.</p> * * @param key * @param property the property to look up first and use as the parameter for the main lookup * @param defaultValue fallback value * * @return the configured value or if non found the defaultValue * */ public static String getPropertyAwarePropertyValue(String key, String property, String defaultValue) { return getConfigProvider().getConfig().resolve(key) .withCurrentProjectStage(true) .parameterizedBy(property) .withDefault(defaultValue) .evaluateVariables(true) .getValue(); }
@Test public void testGets() { ConfigResolver.TypedResolver<String> resolver = ConfigResolver.resolve("dataSource") .withCurrentProjectStage(true) .parameterizedBy("dbvendor") .withDefault("TESTDEFAULT"); Assert.assertEquals("TestDataSource", resolver.getValue()); Assert.assertEquals("dataSource", resolver.getKey()); Assert.assertEquals("TESTDEFAULT", resolver.getDefaultValue()); Assert.assertEquals("dataSource.mysql.UnitTest", resolver.getResolvedKey()); ConfigResolver.TypedResolver<String> resolver2 = ConfigResolver.resolve("testkey2") .withCurrentProjectStage(true) .parameterizedBy("INVALIDPARAMETER"); Assert.assertEquals("testvalue", resolver2.getValue()); Assert.assertEquals("testkey2", resolver2.getResolvedKey()); }
@Test public void testWithCacheTime() throws Exception { ConfigResolver.TypedResolver<String> resolver = ConfigResolver.resolve("dataSource") .withCurrentProjectStage(true) .parameterizedBy("dbvendor") .cacheFor(TimeUnit.MILLISECONDS, 5) .withDefault("TESTDEFAULT"); Assert.assertEquals("TestDataSource", resolver.getValue()); Assert.assertEquals("TestDataSource", resolver.getValue()); Assert.assertEquals("dataSource", resolver.getKey()); Assert.assertEquals("TESTDEFAULT", resolver.getDefaultValue()); Assert.assertEquals("dataSource.mysql.UnitTest", resolver.getResolvedKey()); // because the clock steps in certain OS is only 16ms Thread.sleep(35L); Assert.assertEquals("TestDataSource", resolver.getValue()); }
/** * {@link #getProjectStageAwarePropertyValue(String)} which returns the provided default value if no configured * value can be found (<code>null</code> or empty). * * @param key * @param defaultValue fallback value * * @return the configured value or if non found the defaultValue * */ public static String getProjectStageAwarePropertyValue(String key, String defaultValue) { return getConfigProvider().getConfig().resolve(key) .withCurrentProjectStage(true) .withDefault(defaultValue) .evaluateVariables(true) .getValue(); }
/** * {@link #getProjectStageAwarePropertyValue(String)} which returns the provided default value if no configured * value can be found (<code>null</code> or empty). * * @param key * @param defaultValue fallback value * * @return the configured value or if non found the defaultValue * */ public static String getProjectStageAwarePropertyValue(String key, String defaultValue) { return getConfigProvider().getConfig().resolve(key) .withCurrentProjectStage(true) .withDefault(defaultValue) .evaluateVariables(true) .getValue(); }
@Test public void testGetProjectStageAwarePropertyValue() { ProjectStageProducer.setProjectStage(ProjectStage.UnitTest); Assert.assertNull(ConfigResolver.getProjectStageAwarePropertyValue("notexisting", null)); Assert.assertEquals("testvalue", ConfigResolver.getPropertyValue("testkey")); Assert.assertEquals("unittestvalue", ConfigResolver.getProjectStageAwarePropertyValue("testkey")); Assert.assertEquals("unittestvalue", ConfigResolver.getProjectStageAwarePropertyValue("testkey", null)); Assert.assertEquals("testvalue", ConfigResolver.getPropertyValue("testkey2")); Assert.assertEquals("testvalue", ConfigResolver.getProjectStageAwarePropertyValue("testkey2")); Assert.assertEquals("testvalue", ConfigResolver.getProjectStageAwarePropertyValue("testkey2", null)); Assert.assertEquals("testvalue", ConfigResolver.getPropertyValue("testkey3")); Assert.assertEquals("", ConfigResolver.getProjectStageAwarePropertyValue("testkey3")); Assert.assertEquals(DEFAULT_VALUE, ConfigResolver.getProjectStageAwarePropertyValue("testkey3", DEFAULT_VALUE)); Assert.assertEquals(DEFAULT_VALUE, ConfigResolver.getProjectStageAwarePropertyValue("deltaspike.test.projectstagefallback", DEFAULT_VALUE)); Assert.assertEquals("", ConfigResolver.getProjectStageAwarePropertyValue("deltaspike.test.projectstagefallback")); Assert.assertEquals(DEFAULT_VALUE, ConfigResolver.resolve("deltaspike.test.projectstagefallback").as(String.class).withDefault(DEFAULT_VALUE).withCurrentProjectStage(true).getValue()); Assert.assertEquals("", ConfigResolver.resolve("deltaspike.test.projectstagefallback").as(String.class).withCurrentProjectStage(true).getValue()); }
@Test public void testDefault() { Assert.assertEquals(10l, (long) ConfigResolver.resolve("INVALIDKEY") .as(Long.class) .withDefault(10l).getValue()); // string default Assert.assertEquals(10l, (long) ConfigResolver.resolve("INVALIDKEY") .as(Long.class) .withStringDefault("10").getValue()); }
@Test public void testConfiguredListValues_WithDefault() { List<Integer> intValues = ConfigResolver.resolve("test.list.not_existing").as(Integer.class).asList().withDefault(Arrays.asList(99, 88, 77)).getValue(); Assert.assertNotNull(intValues); Assert.assertEquals(3, intValues.size()); Assert.assertTrue(intValues.contains(99)); Assert.assertTrue(intValues.contains(88)); Assert.assertTrue(intValues.contains(77)); }