Repository: incubator-tamaya-extensions
Updated Branches:
  refs/heads/master 8fc2efbdb -> 2a70bd635


[TAMAYA-290] Added tests and improved the implementation of 
ConfiguredVetoExtension.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/2a70bd63
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/2a70bd63
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/2a70bd63

Branch: refs/heads/master
Commit: 2a70bd6356e473590f8e4a89230b11fd6e6cfb01
Parents: 8fc2efb
Author: Oliver B. Fischer <ple...@apache.org>
Authored: Fri Sep 29 12:40:15 2017 +0200
Committer: Oliver B. Fischer <ple...@apache.org>
Committed: Fri Sep 29 12:40:15 2017 +0200

----------------------------------------------------------------------
 modules/injection/cdi/pom.xml                   |   4 +
 .../cdi/extra/ConfiguredVetoExtension.java      |   7 +-
 .../tamaya/cdi/CDIAwareServiceContextTest.java  |  23 ++++
 .../tamaya/cdi/CDIConfiguredMethodTest.java     |  74 +++++++++++
 .../tamaya/cdi/CDIConfiguredTypeTest.java       |  25 ++++
 .../cdi/extra/ConfiguredVetoExtensionTest.java  | 124 +++++++++++++++++++
 .../org/apache/tamaya/cdi/extra/TestKlazz.java  |  22 ++++
 .../org/apache/tamaya/cdi/extra/TestKlazz2.java |  22 ++++
 8 files changed, 298 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/pom.xml
----------------------------------------------------------------------
diff --git a/modules/injection/cdi/pom.xml b/modules/injection/cdi/pom.xml
index ad11948..8f970e3 100644
--- a/modules/injection/cdi/pom.xml
+++ b/modules/injection/cdi/pom.xml
@@ -128,6 +128,10 @@ under the License.
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+        </dependency>
     </dependencies>
     <profiles>
         <profile>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtension.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtension.java
 
b/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtension.java
index a4c1489..e86ee89 100644
--- 
a/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtension.java
+++ 
b/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtension.java
@@ -30,11 +30,12 @@ import javax.enterprise.inject.spi.ProcessAnnotatedType;
  */
 public class ConfiguredVetoExtension implements Extension {
 
-    public void observesBean(@Observes ProcessAnnotatedType<?> type){
+    public void observesBean(@Observes ProcessAnnotatedType<?> type) {
         String vetoedTypesVal = 
ConfigurationProvider.getConfiguration().get("javax.enterprise.inject.vetoed");
         String[] vetoedTypes = vetoedTypesVal.split(",");
-        for(String typeExpr:vetoedTypes){
-            
if(type.getAnnotatedType().getJavaClass().getName().matches(typeExpr)){
+        for (String typeExpr : vetoedTypes) {
+            String typeExprTrimmed = typeExpr.trim();
+            if 
(type.getAnnotatedType().getJavaClass().getName().matches(typeExprTrimmed)) {
                 type.veto();
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIAwareServiceContextTest.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIAwareServiceContextTest.java
 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIAwareServiceContextTest.java
new file mode 100644
index 0000000..5616b00
--- /dev/null
+++ 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIAwareServiceContextTest.java
@@ -0,0 +1,23 @@
+/*
+ * 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.tamaya.cdi;
+
+public class CDIAwareServiceContextTest {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredMethodTest.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredMethodTest.java
 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredMethodTest.java
new file mode 100644
index 0000000..1818c5b
--- /dev/null
+++ 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredMethodTest.java
@@ -0,0 +1,74 @@
+/*
+ * 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.tamaya.cdi;
+
+import org.hamcrest.Matchers;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import javax.enterprise.inject.spi.InjectionPoint;
+import java.lang.reflect.Method;
+import java.util.List;
+
+import static java.util.Arrays.asList;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.mockito.Mockito.when;
+
+public class CDIConfiguredMethodTest {
+
+    @Test
+    public void returnsTheConfiguredKeys() {
+        List<String> keys = asList("rate", "weight");
+        InjectionPoint ip = Mockito.mock(InjectionPoint.class);
+
+        CDIConfiguredMethod ccm = new CDIConfiguredMethod(ip, keys);
+
+        assertThat(ccm.getConfiguredKeys(), 
Matchers.containsInAnyOrder("rate", "weight"));
+    }
+
+    @Test
+    public void returnsTheNameOfTheGivenMethod() throws NoSuchMethodException {
+        Method method = Klazz.class.getMethod("getValue");
+        List<String> keys = asList("rate", "weight");
+        InjectionPoint ip = Mockito.mock(InjectionPoint.class);
+
+        when(ip.getMember()).thenReturn(method);
+
+        CDIConfiguredMethod ccm = new CDIConfiguredMethod(ip, keys);
+
+        assertThat(ccm.getName(), equalTo("getValue"));
+    }
+
+    public static class Klazz {
+        private OtherKlazz<String> value;
+
+        public OtherKlazz<String> getValue() {
+            return value;
+        }
+
+        public void setValue(OtherKlazz<String> value) {
+            this.value = value;
+        }
+    }
+
+    public static class OtherKlazz<T> {
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredTypeTest.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredTypeTest.java
 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredTypeTest.java
new file mode 100644
index 0000000..0d6e422
--- /dev/null
+++ 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/CDIConfiguredTypeTest.java
@@ -0,0 +1,25 @@
+/*
+ * 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.tamaya.cdi;
+
+import static org.junit.Assert.*;
+
+public class CDIConfiguredTypeTest {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtensionTest.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtensionTest.java
 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtensionTest.java
new file mode 100644
index 0000000..11f7dfd
--- /dev/null
+++ 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/ConfiguredVetoExtensionTest.java
@@ -0,0 +1,124 @@
+/*
+ * 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.tamaya.cdi.extra;
+
+import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.spi.ConfigurationContext;
+import org.junit.Test;
+
+
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+
+import static org.mockito.Mockito.*;
+
+public class ConfiguredVetoExtensionTest {
+    ConfiguredVetoExtension extension = new ConfiguredVetoExtension();
+
+    @Test
+    public void willBeVetoedIfTypeHasBeenConfiguredAsConcreteClassName() {
+        ConfigurationContext context = mock(ConfigurationContext.class);
+        Configuration configuration = mock(Configuration.class);
+
+        when(configuration.getContext()).thenReturn(context);
+        
when(configuration.get("javax.enterprise.inject.vetoed")).thenReturn("org.apache.tamaya.cdi.extra.TestKlazz");
+
+        ConfigurationProvider.setConfiguration(configuration);
+
+        AnnotatedType<TestKlazz> annotatedType = mock(AnnotatedType.class);
+        when(annotatedType.getJavaClass()).thenReturn(TestKlazz.class);
+
+        ProcessAnnotatedType<TestKlazz> processAnnotatedType = 
mock(ProcessAnnotatedType.class);
+        
when(processAnnotatedType.getAnnotatedType()).thenReturn(annotatedType);
+
+        extension.observesBean(processAnnotatedType);
+
+        (processAnnotatedType).veto();
+    }
+
+    @Test
+    public void willNotBeVetoedIfTypeHasNotBeenConfigured() {
+        ConfigurationContext context = mock(ConfigurationContext.class);
+        Configuration configuration = mock(Configuration.class);
+
+        when(configuration.getContext()).thenReturn(context);
+        
when(configuration.get("javax.enterprise.inject.vetoed")).thenReturn("org.apache.tamaya.cdi.extra.O");
+
+        ConfigurationProvider.setConfiguration(configuration);
+
+        AnnotatedType<TestKlazz> annotatedType = mock(AnnotatedType.class);
+        when(annotatedType.getJavaClass()).thenReturn(TestKlazz.class);
+
+        ProcessAnnotatedType<TestKlazz> processAnnotatedType = 
mock(ProcessAnnotatedType.class);
+        
when(processAnnotatedType.getAnnotatedType()).thenReturn(annotatedType);
+
+        extension.observesBean(processAnnotatedType);
+
+        verify(processAnnotatedType, never()).veto();
+    }
+
+    @Test
+    public void handlesPropertyWithWhitespacesCorrectly() {
+        String configuredValue = "  " + TestKlazz.class.getName() +
+                                 ",\t" + TestKlazz2.class.getName();
+
+        ConfigurationContext context = mock(ConfigurationContext.class);
+        Configuration configuration = mock(Configuration.class);
+
+        when(configuration.getContext()).thenReturn(context);
+        
when(configuration.get("javax.enterprise.inject.vetoed")).thenReturn(configuredValue);
+
+        ConfigurationProvider.setConfiguration(configuration);
+
+        AnnotatedType<TestKlazz> annotatedType = mock(AnnotatedType.class);
+        when(annotatedType.getJavaClass()).thenReturn(TestKlazz.class);
+
+        ProcessAnnotatedType<TestKlazz> processAnnotatedType = 
mock(ProcessAnnotatedType.class);
+        
when(processAnnotatedType.getAnnotatedType()).thenReturn(annotatedType);
+
+        extension.observesBean(processAnnotatedType);
+
+        verify(processAnnotatedType).veto();
+    }
+
+    @Test
+    public void useOfRegexPattersWorks() {
+        String configuredValue = "  " + TestKlazz.class.getPackage().getName() 
+
+                                 "\\..+";
+
+        ConfigurationContext context = mock(ConfigurationContext.class);
+        Configuration configuration = mock(Configuration.class);
+
+        when(configuration.getContext()).thenReturn(context);
+        
when(configuration.get("javax.enterprise.inject.vetoed")).thenReturn(configuredValue);
+
+        ConfigurationProvider.setConfiguration(configuration);
+
+        AnnotatedType<TestKlazz> annotatedType = mock(AnnotatedType.class);
+        when(annotatedType.getJavaClass()).thenReturn(TestKlazz.class);
+
+        ProcessAnnotatedType<TestKlazz> processAnnotatedType = 
mock(ProcessAnnotatedType.class);
+        
when(processAnnotatedType.getAnnotatedType()).thenReturn(annotatedType);
+
+        extension.observesBean(processAnnotatedType);
+
+        verify(processAnnotatedType).veto();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz.java
 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz.java
new file mode 100644
index 0000000..345ff12
--- /dev/null
+++ 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz.java
@@ -0,0 +1,22 @@
+/*
+ * 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.tamaya.cdi.extra;
+
+public class TestKlazz {
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2a70bd63/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz2.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz2.java
 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz2.java
new file mode 100644
index 0000000..3cd67e8
--- /dev/null
+++ 
b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/extra/TestKlazz2.java
@@ -0,0 +1,22 @@
+/*
+ * 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.tamaya.cdi.extra;
+
+public class TestKlazz2 {
+}

Reply via email to