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