You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by rm...@apache.org on 2016/11/09 11:52:31 UTC
[2/5] deltaspike git commit: cdi source and filter detection
cdi source and filter detection
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/0cb288d0
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/0cb288d0
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/0cb288d0
Branch: refs/heads/master
Commit: 0cb288d092ef8131c84dfab33870a65331ecd079
Parents: 6d0c4a2
Author: rmannibucau <rm...@apache.org>
Authored: Mon Nov 7 09:35:09 2016 +0100
Committer: rmannibucau <rm...@apache.org>
Committed: Mon Nov 7 09:35:09 2016 +0100
----------------------------------------------------------------------
.../impl/config/ConfigurationExtension.java | 29 +++++++++++++
.../core/api/config/injectable/CdiFilter.java | 39 +++++++++++++++++
.../core/api/config/injectable/CdiSource.java | 44 ++++++++++++++++++++
.../InjectableConfigPropertyTest.java | 10 ++++-
.../api/config/injectable/SettingsBean.java | 8 ++++
5 files changed, 129 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/0cb288d0/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
index accabae..63b1867 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
@@ -47,8 +47,10 @@ import org.apache.deltaspike.core.api.config.ConfigProperty;
import org.apache.deltaspike.core.api.config.ConfigResolver;
import org.apache.deltaspike.core.api.config.PropertyFileConfig;
import org.apache.deltaspike.core.api.exclude.Exclude;
+import org.apache.deltaspike.core.api.provider.BeanProvider;
import org.apache.deltaspike.core.spi.activation.Deactivatable;
import org.apache.deltaspike.core.spi.config.BaseConfigPropertyProducer;
+import org.apache.deltaspike.core.spi.config.ConfigFilter;
import org.apache.deltaspike.core.spi.config.ConfigSource;
import org.apache.deltaspike.core.spi.config.ConfigValidator;
import org.apache.deltaspike.core.util.ClassDeactivationUtils;
@@ -85,6 +87,9 @@ public class ConfigurationExtension implements Extension, Deactivatable
private final Set<Type> dynamicConfigTypes = new HashSet<Type>();
private Bean<DynamicBeanProducer> dynamicProducer;
+ private final List<Bean<? extends ConfigSource>> cdiSources = new ArrayList<Bean<? extends ConfigSource>>();
+ private final List<Bean<? extends ConfigFilter>> cdiFilters = new ArrayList<Bean<? extends ConfigFilter>>();
+
@SuppressWarnings("UnusedDeclaration")
protected void init(@Observes BeforeBeanDiscovery beforeBeanDiscovery)
{
@@ -120,6 +125,21 @@ public class ConfigurationExtension implements Extension, Deactivatable
propertyFileConfigClasses.add(pcsClass);
}
+ public void findSources(@Observes ProcessBean<? extends ConfigSource> source)
+ {
+ final Class<?> beanClass = source.getBean().getBeanClass();
+ if (beanClass != null && beanClass.getName().startsWith("org.apache.deltaspike.core.impl.config.")) // built-in
+ {
+ return;
+ }
+ cdiSources.add(source.getBean());
+ }
+
+ public void findFilters(@Observes ProcessBean<? extends ConfigFilter> filter)
+ {
+ cdiFilters.add(filter.getBean());
+ }
+
public void findDynamicProducer(@Observes ProcessBean<DynamicBeanProducer> processBean)
{
dynamicProducer = processBean.getBean();
@@ -178,10 +198,19 @@ public class ConfigurationExtension implements Extension, Deactivatable
configSources.addAll(createPropertyConfigSource(propertyFileConfigClass));
}
+ for (final Bean bean : cdiSources)
+ {
+ configSources.add(BeanProvider.getContextualReference(ConfigSource.class, bean));
+ }
// finally add all
ConfigResolver.addConfigSources(configSources);
+ for (final Bean bean : cdiFilters)
+ {
+ ConfigResolver.addConfigFilter(BeanProvider.getContextualReference(ConfigFilter.class, bean));
+ }
+
processConfigurationValidation(adv);
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/0cb288d0/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiFilter.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiFilter.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiFilter.java
new file mode 100644
index 0000000..8ca6031
--- /dev/null
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiFilter.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.test.core.api.config.injectable;
+
+import org.apache.deltaspike.core.spi.config.ConfigFilter;
+
+import javax.enterprise.context.ApplicationScoped;
+
+@ApplicationScoped
+public class CdiFilter implements ConfigFilter
+{
+ @Override
+ public String filterValue(final String key, final String value)
+ {
+ return "custom-source.test".equals(key) ? new StringBuilder(value).reverse().toString() : value;
+ }
+
+ @Override
+ public String filterValueForLog(final String key, final String value)
+ {
+ return value;
+ }
+}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/0cb288d0/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiSource.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiSource.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiSource.java
new file mode 100644
index 0000000..facd83f
--- /dev/null
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/CdiSource.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.test.core.api.config.injectable;
+
+import org.apache.deltaspike.core.impl.config.MapConfigSource;
+
+import javax.enterprise.context.ApplicationScoped;
+import java.util.HashMap;
+import java.util.Map;
+
+@ApplicationScoped
+public class CdiSource extends MapConfigSource
+{
+ public CdiSource() {
+ super(create());
+ }
+
+ private static Map<String, String> create() {
+ final Map<String, String> map = new HashMap<String, String>();
+ map.put("custom-source.test", "eulav");
+ return map;
+ }
+
+ @Override
+ public String getConfigName() {
+ return "cdi-test";
+ }
+}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/0cb288d0/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/InjectableConfigPropertyTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/InjectableConfigPropertyTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/InjectableConfigPropertyTest.java
index d6f11c2..aea89ed 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/InjectableConfigPropertyTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/InjectableConfigPropertyTest.java
@@ -111,9 +111,17 @@ public class InjectableConfigPropertyTest
}
@Test
- public void checkDynamicConvertedInjections() throws MalformedURLException {
+ public void checkDynamicConvertedInjections() throws MalformedURLException
+ {
SettingsBean settingsBean = BeanProvider.getContextualReference(SettingsBean.class, false);
assertEquals(asList(new URL("http://localhost"), new URL("http://127.0.0.1")), settingsBean.getUrlList());
assertEquals(singletonList(new URL("http://127.0.0.2")), settingsBean.getUrlListFromProperties());
}
+
+ @Test
+ public void checkCdiSourceFilter() throws MalformedURLException
+ {
+ SettingsBean settingsBean = BeanProvider.getContextualReference(SettingsBean.class, false);
+ assertEquals("value", settingsBean.getCustomSourceValue());
+ }
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/0cb288d0/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/SettingsBean.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/SettingsBean.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/SettingsBean.java
index b542e77..b8848e4 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/SettingsBean.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/injectable/SettingsBean.java
@@ -105,6 +105,10 @@ public class SettingsBean
@ConfigProperty(name = "urlListFromProperties", converter = UrlList.class)
private List<URL> urlListFromProperties;
+ @Inject
+ @ConfigProperty(name = "custom-source.test")
+ private String customSourceValue;
+
protected SettingsBean()
{
}
@@ -215,6 +219,10 @@ public class SettingsBean
return urlListFromProperties;
}
+ public String getCustomSourceValue() {
+ return customSourceValue;
+ }
+
public static class UrlList implements ConfigResolver.Converter<List<URL>>
{
@Override