From 035b72bc58084b6a8c5116d5587a4416414bc188 Mon Sep 17 00:00:00 2001 From: Argan Date: Thu, 11 Jun 2015 09:43:05 +0800 Subject: [PATCH 1/3] enhance GetterMatcher to match boolean getter 'isSomething' --- src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java b/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java index 2425863..38b3e1c 100644 --- a/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java +++ b/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java @@ -7,7 +7,8 @@ final public class GetterMatcher implements Matcher { public boolean accepts(final Method element) { - return element.getName().startsWith("get") && (element.getParameterTypes().length == 0) - && (!element.getReturnType().equals(void.class)); + return (element.getName().startsWith("get") || (element.getName().startsWith("is") + && (element.getReturnType() == boolean.class || element.getReturnType() == Boolean.class))) + && (element.getParameterTypes().length == 0) && (!element.getReturnType().equals(void.class)); } } From 2e8dfe27850f07580a3a50a998fa6db4fe4b6121 Mon Sep 17 00:00:00 2001 From: Argan Date: Fri, 12 Jun 2015 09:06:19 +0800 Subject: [PATCH 2/3] enhance GetterMatcher to match boolean getter 'isSomething' --- .../java/net/vidageek/mirror/matcher/GetterMatcher.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java b/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java index 38b3e1c..11466eb 100644 --- a/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java +++ b/src/main/java/net/vidageek/mirror/matcher/GetterMatcher.java @@ -7,8 +7,8 @@ final public class GetterMatcher implements Matcher { public boolean accepts(final Method element) { - return (element.getName().startsWith("get") || (element.getName().startsWith("is") - && (element.getReturnType() == boolean.class || element.getReturnType() == Boolean.class))) - && (element.getParameterTypes().length == 0) && (!element.getReturnType().equals(void.class)); + return (element.getParameterTypes().length == 0) && (!element.getReturnType().equals(void.class)) + && (element.getName().startsWith("get") + || (element.getName().startsWith("is") && element.getReturnType() == boolean.class)); } } From a37c3f53bc7cf51608121d9d7632e7a9ae07bebc Mon Sep 17 00:00:00 2001 From: Argan Date: Fri, 12 Jun 2015 09:08:55 +0800 Subject: [PATCH 3/3] enhance GetterMatcher to match boolean getter 'isSomething',add test case --- .../mirror/matcher/GetterMatcherTest.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/test/java/net/vidageek/mirror/matcher/GetterMatcherTest.java diff --git a/src/test/java/net/vidageek/mirror/matcher/GetterMatcherTest.java b/src/test/java/net/vidageek/mirror/matcher/GetterMatcherTest.java new file mode 100644 index 0000000..876bd1b --- /dev/null +++ b/src/test/java/net/vidageek/mirror/matcher/GetterMatcherTest.java @@ -0,0 +1,81 @@ +package net.vidageek.mirror.matcher; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.Method; + +import org.junit.Test; + +public class GetterMatcherTest { + + @Test + public void testGetter() throws Exception { + Method method = Bean.class.getMethod("isValid"); + assertTrue(new GetterMatcher().accepts(method)); + method = Bean.class.getMethod("getSomeFlag"); + assertTrue(new GetterMatcher().accepts(method)); + method = Bean.class.getMethod("getName"); + assertTrue(new GetterMatcher().accepts(method)); + } + + @Test + public void testNotGetter() throws Exception { + Method method = Bean.class.getMethod("getSomething"); + assertFalse(new GetterMatcher().accepts(method)); + method = Bean.class.getMethod("getSomeOther", String.class); + assertFalse(new GetterMatcher().accepts(method)); + method = Bean.class.getMethod("getSomeStrange", String.class); + assertFalse(new GetterMatcher().accepts(method)); + method = Bean.class.getMethod("setValid", boolean.class); + assertFalse(new GetterMatcher().accepts(method)); + method = Bean.class.getMethod("isSomeOtherFlag"); + assertFalse(new GetterMatcher().accepts(method)); + } + + private static class Bean { + private boolean valid; + private Boolean someFlag; + private String name; + + public Boolean isSomeOtherFlag() { + return someFlag; + } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + this.valid = valid; + } + + public Boolean getSomeFlag() { + return someFlag; + } + + public void setSomeFlag(Boolean someFlag) { + this.someFlag = someFlag; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public void getSomething() { + } + + public String getSomeOther(String thing) { + return thing; + } + + public void getSomeStrange(String x) { + + } + + } +}