You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by pl...@apache.org on 2017/10/01 20:12:14 UTC
incubator-tamaya-extensions git commit: [TAMAYA-291] Implemented
ConfiguredMethod#getSignature(). Tests included.
Repository: incubator-tamaya-extensions
Updated Branches:
refs/heads/master 9bdbac3ed -> 22c0faaf9
[TAMAYA-291] Implemented ConfiguredMethod#getSignature(). Tests included.
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/22c0faaf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/22c0faaf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/22c0faaf
Branch: refs/heads/master
Commit: 22c0faaf94fade8abf926803153a0f9a54c3a134
Parents: 9bdbac3
Author: Oliver B. Fischer <pl...@apache.org>
Authored: Sun Oct 1 22:12:08 2017 +0200
Committer: Oliver B. Fischer <pl...@apache.org>
Committed: Sun Oct 1 22:12:08 2017 +0200
----------------------------------------------------------------------
.../apache/tamaya/cdi/CDIConfiguredMethod.java | 15 ++-
.../tamaya/cdi/CDIConfiguredMethodTest.java | 130 +++++++++++++++++--
.../test/java/org/apache/tamaya/cdi/Klazz.java | 59 +++++++++
.../java/org/apache/tamaya/cdi/OtherKlazz.java | 21 +++
.../tamaya/inject/spi/ConfiguredMethod.java | 2 +-
5 files changed, 216 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/22c0faaf/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/CDIConfiguredMethod.java
----------------------------------------------------------------------
diff --git a/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/CDIConfiguredMethod.java b/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/CDIConfiguredMethod.java
index e7f30f5..c38fc23 100644
--- a/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/CDIConfiguredMethod.java
+++ b/modules/injection/cdi/src/main/java/org/apache/tamaya/cdi/CDIConfiguredMethod.java
@@ -26,6 +26,8 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import static java.lang.String.format;
+
/**
* Implementation of a configured methods for CDI module.
*/
@@ -62,7 +64,18 @@ public class CDIConfiguredMethod implements ConfiguredMethod{
@Override
public String getSignature() {
- return null;
+ String className = getAnnotatedMethod().getDeclaringClass().getName();
+ String methodName = getAnnotatedMethod().getName();
+ String anchor = format(".%s(", methodName);
+
+ StringBuilder sb = new StringBuilder();
+ sb.append(getAnnotatedMethod().toGenericString());
+
+ int anchorStart = sb.indexOf(anchor);
+
+ sb.delete(anchorStart - className.length(), anchorStart + 1);
+
+ return sb.toString();
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/22c0faaf/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
index 1818c5b..27d1a5c 100644
--- 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
@@ -23,7 +23,9 @@ import org.junit.Test;
import org.mockito.Mockito;
import javax.enterprise.inject.spi.InjectionPoint;
+import java.io.File;
import java.lang.reflect.Method;
+import java.util.Collection;
import java.util.List;
import static java.util.Arrays.asList;
@@ -56,19 +58,129 @@ public class CDIConfiguredMethodTest {
assertThat(ccm.getName(), equalTo("getValue"));
}
- public static class Klazz {
- private OtherKlazz<String> value;
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethod1() throws Exception {
+ String expectedSignature = "public org.apache.tamaya.cdi.OtherKlazz<java.lang.String> getValue()";
+
+ 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.getSignature(), equalTo(expectedSignature));
+ }
+
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethod2() throws Exception {
+ String expectedSignature = "public int getPrimitiveIntValue()";
+
+ Method method = Klazz.class.getMethod("getPrimitiveIntValue");
+ 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.getSignature(), equalTo(expectedSignature));
+ }
+
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethodReturnTypeIsVoid() throws Exception {
+ String expectedSignature = "public void voidMethod()";
+
+ Method method = Klazz.class.getMethod("voidMethod");
+ 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.getSignature(), equalTo(expectedSignature));
+ }
+
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethodWithExceptions() throws Exception {
+ String expectedSignature = "public void methodWithExceptions() " +
+ "throws java.io.FileNotFoundException," +
+ "java.nio.file.AccessDeniedException";
+
+ Method method = Klazz.class.getMethod("methodWithExceptions");
+ List<String> keys = asList("rate", "weight");
+ InjectionPoint ip = Mockito.mock(InjectionPoint.class);
+
+ when(ip.getMember()).thenReturn(method);
+
+ CDIConfiguredMethod ccm = new CDIConfiguredMethod(ip, keys);
- public OtherKlazz<String> getValue() {
- return value;
- }
+ assertThat(ccm.getSignature(), equalTo(expectedSignature));
+ }
+
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethodWithOneException() throws Exception {
+ String expectedSignature = "public void methodWithException() " +
+ "throws java.io.FileNotFoundException";
+
+ Method method = Klazz.class.getMethod("methodWithException");
+ 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.getSignature(), equalTo(expectedSignature));
+ }
+
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethodWithOneParameter() throws Exception {
+ String expectedSignature = "public void methodWithOneParameter(java.lang.String)";
+
+ Method method = Klazz.class.getMethod("methodWithOneParameter", String.class);
+ List<String> keys = asList("rate", "weight");
+ InjectionPoint ip = Mockito.mock(InjectionPoint.class);
+
+ when(ip.getMember()).thenReturn(method);
+
+ CDIConfiguredMethod ccm = new CDIConfiguredMethod(ip, keys);
- public void setValue(OtherKlazz<String> value) {
- this.value = value;
- }
+ assertThat(ccm.getSignature(), equalTo(expectedSignature));
}
- public static class OtherKlazz<T> {
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethodWithTwoParameters() throws Exception {
+ String expectedSignature = "public void methodWithTwoParameters(java.lang.String,java.io.File)";
+
+ Method method = Klazz.class.getMethod("methodWithTwoParameters", String.class, File.class);
+ 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.getSignature(), equalTo(expectedSignature));
}
+
+ @Test
+ public void returnsCorrectSignatureOfTheGivenMethodWithOneTypeParameter() throws Exception {
+ String expectedSignature = "public <T> java.util.Collection<T> methodWithTypeParameter" +
+ "(java.util.Collection<T>)";
+
+ Method method = Klazz.class.getMethod("methodWithTypeParameter", Collection.class);
+
+ 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.getSignature(), equalTo(expectedSignature));
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/22c0faaf/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/Klazz.java
----------------------------------------------------------------------
diff --git a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/Klazz.java b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/Klazz.java
new file mode 100644
index 0000000..c597547
--- /dev/null
+++ b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/Klazz.java
@@ -0,0 +1,59 @@
+/*
+ * 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 java.io.File;
+import java.io.FileNotFoundException;
+import java.nio.file.AccessDeniedException;
+import java.util.Collection;
+import java.util.Collections;
+
+public class Klazz {
+ private OtherKlazz<String> value;
+
+ public <T> Collection<T> methodWithTypeParameter(Collection<T> in) {
+ return Collections.emptyList();
+ }
+
+ public void methodWithOneParameter(String p) {
+ }
+
+ public void methodWithTwoParameters(String p, File f) {
+ }
+
+ public void voidMethod() {
+ }
+
+ public int getPrimitiveIntValue() {
+ return 1;
+ }
+
+ public OtherKlazz<String> getValue() {
+ return value;
+ }
+
+ public void setValue(OtherKlazz<String> value) {
+ this.value = value;
+ }
+
+ public void methodWithExceptions() throws FileNotFoundException, AccessDeniedException {
+ }
+
+ public void methodWithException() throws FileNotFoundException {
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/22c0faaf/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/OtherKlazz.java
----------------------------------------------------------------------
diff --git a/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/OtherKlazz.java b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/OtherKlazz.java
new file mode 100644
index 0000000..6777be1
--- /dev/null
+++ b/modules/injection/cdi/src/test/java/org/apache/tamaya/cdi/OtherKlazz.java
@@ -0,0 +1,21 @@
+/*
+ * 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 OtherKlazz<T> {
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/22c0faaf/modules/injection/injection-api/src/main/java/org/apache/tamaya/inject/spi/ConfiguredMethod.java
----------------------------------------------------------------------
diff --git a/modules/injection/injection-api/src/main/java/org/apache/tamaya/inject/spi/ConfiguredMethod.java b/modules/injection/injection-api/src/main/java/org/apache/tamaya/inject/spi/ConfiguredMethod.java
index 128946e..d8b0d09 100644
--- a/modules/injection/injection-api/src/main/java/org/apache/tamaya/inject/spi/ConfiguredMethod.java
+++ b/modules/injection/injection-api/src/main/java/org/apache/tamaya/inject/spi/ConfiguredMethod.java
@@ -54,7 +54,7 @@ public interface ConfiguredMethod {
/**
* Get the methods signature, e.g. {@code void setName(String)}.
- * @return he signature, never null.
+ * @return the signature, never {@code null}.
*/
String getSignature();