Ranides Atterwim 10 lat temu
rodzic
commit
dbe5091bc9

+ 0 - 5
assira/pom.xml

@@ -33,11 +33,6 @@
                                 <include>net/ranides/assira/awt/AWTInvoker*</include>
                                 <include>net/ranides/assira/awt/AWTInvoker*</include>
                                 <include>net/ranides/assira/generic/SerializationUtils*</include>
                                 <include>net/ranides/assira/generic/SerializationUtils*</include>
                                 <include>net/ranides/assira/lexer/**</include>
                                 <include>net/ranides/assira/lexer/**</include>
-<!--                                <include>net/ranides/assira/reflection/InspectException*</include>-->
-<!--                                <include>net/ranides/assira/reflection/InvokeException*</include>-->
-                                <include>net/ranides/assira/reflection/util/ClassUtils*</include>
-                                <include>net/ranides/assira/reflection/util/MemberUtils*</include>
-                                <include>net/ranides/assira/reflection/util/MethodUtils*</include>
                                 <include>net/ranides/assira/reflection/util/ReflectUtils*</include>
                                 <include>net/ranides/assira/reflection/util/ReflectUtils*</include>
                             </includes>
                             </includes>
 						</configuration>
 						</configuration>

+ 22 - 7
assira/src/main/java/net/ranides/assira/reflection/util/MemberUtils.java

@@ -14,11 +14,11 @@ import java.lang.reflect.Modifier;
  *
  *
  * @author ranides
  * @author ranides
  */
  */
-public final class MemberUtils {
+public final class MemberTraits {
     
     
     private static final int ACCESS_ANY = Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE;
     private static final int ACCESS_ANY = Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE;
     
     
-    private MemberUtils() { /* utility class */ }
+    private MemberTraits() { /* utility class */ }
     
     
     public static boolean isVolatile(Member member) {
     public static boolean isVolatile(Member member) {
         return Modifier.isVolatile(member.getModifiers());
         return Modifier.isVolatile(member.getModifiers());
@@ -75,15 +75,20 @@ public final class MemberUtils {
      * @param text
      * @param text
      * @return
      * @return
      */
      */
+    public static boolean isGetter(Member method) { 
+        return (method instanceof Method) && isGetter((Method)method);
+    }
+    
     @SuppressWarnings("PMD")
     @SuppressWarnings("PMD")
-    public static boolean isGetter(Method method) {
+    private static boolean isGetter(Method method) {
         final Class<?> ctype = method.getDeclaringClass();
         final Class<?> ctype = method.getDeclaringClass();
         final Class<?> rtype = method.getReturnType();
         final Class<?> rtype = method.getReturnType();
         
         
-        // eliminacja na podstawie deklaracji
+        // eliminacja metod wbudowanych, w szczególności Object#getClass
         if(Object.class.equals(ctype)) {
         if(Object.class.equals(ctype)) {
             return false;
             return false;
         }
         }
+        // eliminacja na podstawie deklaracji
         if(method.getParameterTypes().length != 0) {
         if(method.getParameterTypes().length != 0) {
             return false;
             return false;
         }
         }
@@ -107,18 +112,28 @@ public final class MemberUtils {
      * @param text
      * @param text
      * @return
      * @return
      */
      */
-    public static boolean isSetter(Method method) {
+    public static boolean isSetter(Member method) { 
+        return (method instanceof Method) && isSetter((Method)method);
+    }
+    
+    private static boolean isSetter(Method method) {
         final Class<?> ctype = method.getDeclaringClass();
         final Class<?> ctype = method.getDeclaringClass();
         final Class<?> rtype = method.getReturnType(); //NOPMD
         final Class<?> rtype = method.getReturnType(); //NOPMD
         
         
-        // eliminacja na podstawie deklaracji
+        System.out.printf("issetter ... %s%n", method);
+        
+        // eliminacja metod wbudowanych
         if(Object.class.equals(ctype)) {
         if(Object.class.equals(ctype)) {
             return false;
             return false;
         }
         }
+        // eliminacja na podstawie deklaracji
         if(method.getParameterTypes().length != 1) {
         if(method.getParameterTypes().length != 1) {
             return false;
             return false;
         }
         }
-        if(!Void.class.equals(rtype) && !void.class.equals(rtype) && !ctype.equals(rtype)) {
+        System.out.printf("ctype = %s%n", ctype);
+        System.out.printf("rtype = %s%n", rtype);
+        System.out.printf("      ? %s%n", ctype.isAssignableFrom(rtype));
+        if(!Void.class.equals(rtype) && !void.class.equals(rtype) && !ctype.isAssignableFrom(rtype)) {
             return false;
             return false;
         }
         }
         String name = method.getName();
         String name = method.getName();

+ 3 - 3
assira/src/main/java/net/ranides/assira/reflection/util/MethodUtils.java

@@ -35,7 +35,7 @@ public final class MethodUtils {
         if( !original.getName().equals(candidate.getName()) ) {
         if( !original.getName().equals(candidate.getName()) ) {
             return false;
             return false;
         }
         }
-        if( MemberUtils.isPrivate(original) ) {
+        if( MemberTraits.isPrivate(original) ) {
             return false;
             return false;
         }
         }
         Class<?> otype = original.getDeclaringClass();
         Class<?> otype = original.getDeclaringClass();
@@ -45,7 +45,7 @@ public final class MethodUtils {
         }
         }
 
 
         // package scope check
         // package scope check
-        if( MemberUtils.isPackage(original)) {
+        if( MemberTraits.isPackage(original)) {
             Package opackage = otype.getPackage();
             Package opackage = otype.getPackage();
             Package cpackage = ctype.getPackage();
             Package cpackage = ctype.getPackage();
             if( !opackage.equals(cpackage) ) {
             if( !opackage.equals(cpackage) ) {
@@ -64,7 +64,7 @@ public final class MethodUtils {
      * @throws InspectException
      * @throws InspectException
      */
      */
     public static Object invoke(Method method, Object that, Object... arguments) {
     public static Object invoke(Method method, Object that, Object... arguments) {
-        assert that != null || MemberUtils.isStatic(method) : "non-static method require this!=null";
+        assert that != null || MemberTraits.isStatic(method) : "non-static method require this!=null";
         try {
         try {
             return method.invoke(that, arguments);
             return method.invoke(that, arguments);
         } catch (InvocationTargetException ex) {
         } catch (InvocationTargetException ex) {

+ 145 - 0
assira/src/test/java/net/ranides/assira/reflection/mockup/ForMemberTraits.java

@@ -0,0 +1,145 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.reflection.mockup;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import net.ranides.assira.trace.ExceptionUtils;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+@SuppressWarnings("PMD")
+public abstract class ForMemberTraits {
+    
+    public static final Member PUBLIC       = $field("f_public");
+    public static final Member PROTECTED    = $field("f_protected");
+    public static final Member PRIVATE      = $field("f_private");
+    public static final Member FINAL        = $field("f_final");
+    public static final Member STATIC       = $field("f_static");
+    public static final Member VOLATILE     = $field("f_volatile");
+    public static final Member TRANSIENT    = $field("f_transient");
+    public static final Member ABSTRACT     = $method("m_abstract");
+    public static final Member METHOD       = $method("m_no_abstract");
+    public static final Member SYNCHRONIZED = $method("m_synchronized");
+    public static final Member STRICT       = $method("m_strict");
+    public static final Member NATIVE       = $method("m_native");
+    public static final Member NOTHING      = $field("f_nothing");
+    
+    public static final Member GETTER      = $field("getLength");
+    public static final Member SETTER      = $field("setLength");
+  
+    public int getLength;
+    
+    public Void setLength;
+    
+    public int f_public;
+    
+    protected int f_protected;
+    
+    private int f_private;
+    
+    int f_nothing;
+    
+    public final int f_final = 0;
+    
+    static int f_static;
+    
+    volatile int f_volatile;
+    
+    transient int f_transient;
+    
+    public abstract void m_abstract();
+    
+    public void m_no_abstract() { }
+    
+    public synchronized void m_synchronized() { }
+    
+    public strictfp void m_strict() { }
+    
+    public native void m_native();
+    
+    public static class Bean {
+        
+        public void getName1() { }
+        
+        public Void getName2() { return null; }
+        
+        public String getName3(int value) { return null; }
+        
+        public String getName4() { return null; }
+        
+        public String get() { return null; }
+        
+        public String name6() { return null; }
+        
+        public String getname5() { return null; }
+        
+        public String isVisible1() { return null; }
+        
+        public boolean isVisible2() { return false; }
+        
+        public Boolean isVisible3() { return false; }
+        
+        public boolean isvisible4() { return false; }
+        
+        public boolean is() { return false; }
+        
+        public void setName1(int value) { }
+        
+        public Bean setName2(int value) { return this; }
+        
+        public Bean setName3(int value) { return this; }
+        
+        public void name5(int value) { }
+        
+        public void setName6() { }
+        
+        public void set(int value) { }
+        
+        public void setname7(int value) { }
+        
+        public Void setName8(int value) { return null; }
+        
+    }
+    
+    public static class Bean2 extends Bean {
+        
+        @Override
+        public Bean setName2(int value) { return this; }
+        
+        @Override
+        public Bean2 setName3(int value) { return this; }
+        
+        public Bean2 setName4(int value) { return this; }
+        
+    }
+    
+    public static Field $field(String name) {
+        try {
+            return ForMemberTraits.class.getDeclaredField(name);
+        } catch(ReflectiveOperationException cause) {
+            throw ExceptionUtils.rethrow(cause);
+        }
+    }
+    
+    public static Method $method(String name) {
+        return $method(ForMemberTraits.class, name);
+    }
+    
+    public static Method $method(Class<?> clazz, String name) {
+        for(Method m : clazz.getDeclaredMethods()) {
+            if(name.equals(m.getName())) {
+                return m;
+            }
+        }
+        throw new AssertionError("Method not found: " + name + " in class: " + clazz);
+    }
+    
+}

+ 0 - 78
assira/src/test/java/net/ranides/assira/reflection/mockup/ForMemberUtils.java

@@ -1,78 +0,0 @@
-/*
- * @author Ranides Atterwim <ranides@gmail.com>
- * @copyright Ranides Atterwim
- * @license WTFPL
- * @url http://ranides.net/projects/assira
- */
-package net.ranides.assira.reflection.mockup;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import net.ranides.assira.trace.ExceptionUtils;
-
-/**
- *
- * @author Ranides Atterwim <ranides@gmail.com>
- */
-@SuppressWarnings("PMD")
-public abstract class ForMemberUtils {
-    
-    public static final Member PUBLIC       = $field("f_public");
-    public static final Member PROTECTED    = $field("f_protected");
-    public static final Member PRIVATE      = $field("f_private");
-    public static final Member FINAL        = $field("f_final");
-    public static final Member STATIC       = $field("f_static");
-    public static final Member VOLATILE     = $field("f_volatile");
-    public static final Member TRANSIENT    = $field("f_transient");
-    public static final Member ABSTRACT     = $method("m_abstract");
-    public static final Member METHOD       = $method("m_no_abstract");
-    public static final Member SYNCHRONIZED = $method("m_synchronized");
-    public static final Member STRICT       = $method("m_strict");
-    public static final Member NATIVE       = $method("m_native");
-    public static final Member NOTHING      = $field("f_nothing");
-//    
-    
-    public int f_public;
-    
-    protected int f_protected;
-    
-    private int f_private;
-    
-    int f_nothing;
-    
-    public final int f_final = 0;
-    
-    static int f_static;
-    
-    volatile int f_volatile;
-    
-    transient int f_transient;
-    
-    public abstract void m_abstract();
-    
-    public void m_no_abstract() { }
-    
-    public synchronized void m_synchronized() { }
-    
-    public strictfp void m_strict() { }
-    
-    public native void m_native();
-    
-    private static Field $field(String name) {
-        try {
-            return ForMemberUtils.class.getDeclaredField(name);
-        } catch(ReflectiveOperationException cause) {
-            throw ExceptionUtils.rethrow(cause);
-        }
-    }
-    
-    private static Method $method(String name) {
-        try {
-            return ForMemberUtils.class.getDeclaredMethod(name);
-        } catch(ReflectiveOperationException cause) {
-            throw ExceptionUtils.rethrow(cause);
-        }
-    }
-    
-}

+ 9 - 4
assira/src/test/java/net/ranides/assira/reflection/util/ClassUtilsTest.java

@@ -7,15 +7,16 @@
 package net.ranides.assira.reflection.util;
 package net.ranides.assira.reflection.util;
 
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.IOException;
 import java.util.function.BiFunction;
 import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.function.Function;
 import java.util.function.Supplier;
 import java.util.function.Supplier;
 import net.ranides.assira.ContractTesters;
 import net.ranides.assira.ContractTesters;
 import net.ranides.assira.collection.mockup.TPoint;
 import net.ranides.assira.collection.mockup.TPoint;
-import net.ranides.assira.junit.NewAssert;
 import org.junit.Test;
 import org.junit.Test;
-import static org.junit.Assert.*;
+import static net.ranides.assira.junit.NewAssert.*;
 
 
 /**
 /**
  *
  *
@@ -110,10 +111,10 @@ public class ClassUtilsTest {
 		Supplier<Integer> s2 = f2.apply("net.ranides.assira.test.Type2", loader);
 		Supplier<Integer> s2 = f2.apply("net.ranides.assira.test.Type2", loader);
 		assertEquals(22, s2.get().intValue());
 		assertEquals(22, s2.get().intValue());
 		
 		
-		NewAssert.assertThrows(AssertionError.class, ()->{
+		assertThrows(AssertionError.class, ()->{
 			f2.apply("net.ranides.assira.test.Type3", ClassUtils.loader());
 			f2.apply("net.ranides.assira.test.Type3", ClassUtils.loader());
 		});
 		});
-		NewAssert.assertThrows(AssertionError.class, ()->{
+		assertThrows(AssertionError.class, ()->{
 			f3.apply("net.ranides.assira.test.Type3", ClassUtils::loader);
 			f3.apply("net.ranides.assira.test.Type3", ClassUtils::loader);
 		});
 		});
 		
 		
@@ -141,6 +142,10 @@ public class ClassUtilsTest {
         assertEquals(cname, c1.getName());
         assertEquals(cname, c1.getName());
         assertEquals(cname, c2.getName());
         assertEquals(cname, c2.getName());
         assertNotEquals(c1, c2);
         assertNotEquals(c1, c2);
+        
+        assertThrows(FileNotFoundException.class, () -> {
+            ClassUtils.loader(ClassUtils.loader(), new File("HTTP404"));
+        });
     }
     }
 	
 	
 	@Test
 	@Test

+ 110 - 0
assira/src/test/java/net/ranides/assira/reflection/util/MemberTraitsTest.java

@@ -0,0 +1,110 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.reflection.util;
+
+import net.ranides.assira.reflection.mockup.ForMemberTraits;
+import static net.ranides.assira.reflection.mockup.ForMemberTraits.*;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public class MemberTraitsTest {
+
+    @Test
+    public void testModifiersTrue() throws Exception {
+        assertTrue(MemberTraits.isPublic(PUBLIC) );
+        assertTrue(MemberTraits.isProtected(PROTECTED) );
+        assertTrue(MemberTraits.isPrivate(PRIVATE) );
+        assertTrue(MemberTraits.isStatic(STATIC) );
+        assertTrue(MemberTraits.isVolatile(VOLATILE) );
+        assertTrue(MemberTraits.isTransient(TRANSIENT) );
+        assertTrue(MemberTraits.isFinal(FINAL) );
+        assertTrue(MemberTraits.isAbstract(ABSTRACT) );
+        assertTrue(MemberTraits.isSynchronized(SYNCHRONIZED) );
+        assertTrue(MemberTraits.isStrict(STRICT) );
+        assertTrue(MemberTraits.isNative(NATIVE) );
+    }
+    
+    @Test
+    public void testModifiersFalse() throws Exception {
+        assertFalse(MemberTraits.isPublic(NOTHING) );
+        assertFalse(MemberTraits.isProtected(NOTHING) );
+        assertFalse(MemberTraits.isPrivate(NOTHING) );
+        assertFalse(MemberTraits.isStatic(NOTHING) );
+        assertFalse(MemberTraits.isVolatile(NOTHING) );
+        assertFalse(MemberTraits.isTransient(NOTHING) );
+        assertFalse(MemberTraits.isFinal(NOTHING) );
+        assertFalse(MemberTraits.isAbstract(NOTHING) );
+        assertFalse(MemberTraits.isAbstract(METHOD) );
+        assertFalse(MemberTraits.isAbstract(FINAL) );
+        assertFalse(MemberTraits.isSynchronized(METHOD) );
+        assertFalse(MemberTraits.isStrict(METHOD) );
+        assertFalse(MemberTraits.isNative(METHOD) );
+    }
+    
+    @Test
+    public void testModifiersPackage() throws Exception {
+        assertTrue(MemberTraits.isPackage(NOTHING) );
+        assertFalse(MemberTraits.isPackage(PRIVATE) );
+        assertFalse(MemberTraits.isPackage(PUBLIC) );
+        assertFalse(MemberTraits.isPackage(PROTECTED) );
+    }
+    
+    @Test
+    public void testGetter() throws NoSuchMethodException {
+        assertTrue( MemberTraits.isGetter($method(Bean.class, "getName4")));
+        assertTrue( MemberTraits.isGetter($method(Bean.class, "isVisible2")));
+        assertTrue( MemberTraits.isGetter($method(Bean.class, "isVisible3")));
+        assertTrue( MemberTraits.isGetter($method(Bean.class, "isVisible3")));
+        
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "getName1")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "getName2")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "getName3")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "get")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "name6")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "getname5")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "isVisible1")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "isvisible4")));
+        assertFalse( MemberTraits.isGetter($method(Bean.class, "is")));
+        
+        assertFalse( MemberTraits.isGetter($method(Object.class, "getClass")));
+        assertTrue( MemberTraits.isGetter(String.class.getDeclaredMethod("getBytes")));
+        
+        assertFalse( MemberTraits.isGetter(GETTER));
+    }
+    
+    @Test
+    public void testSetter() throws NoSuchMethodException {
+        assertTrue( MemberTraits.isSetter($method(Bean.class, "setName1")));
+        assertTrue( MemberTraits.isSetter($method(Bean.class, "setName2")));
+        assertTrue( MemberTraits.isSetter($method(Bean.class, "setName8")));
+        
+        assertFalse( MemberTraits.isSetter($method(Bean.class, "getName3")));
+        assertFalse( MemberTraits.isSetter($method(Bean.class, "name5")));
+        assertFalse( MemberTraits.isSetter($method(Bean.class, "setName6")));
+        assertFalse( MemberTraits.isSetter($method(Bean.class, "set")));
+        assertFalse( MemberTraits.isSetter($method(Bean.class, "setname7")));
+        
+        assertFalse( MemberTraits.isSetter($method(Object.class, "getClass")));
+        assertFalse( MemberTraits.isGetter(SETTER));
+    }
+    
+    @Test
+    public void testSetterSelf() throws NoSuchMethodException {
+        assertTrue( MemberTraits.isSetter($method(Bean.class, "setName3")));
+        
+        // overloading
+        assertFalse( MemberTraits.isSetter($method(Bean2.class, "setName2")));
+        assertTrue( MemberTraits.isSetter(Bean2.class.getDeclaredMethod("setName3", int.class)));
+        assertTrue( MemberTraits.isSetter($method(Bean2.class, "setName4")));
+    }
+    
+}

+ 0 - 58
assira/src/test/java/net/ranides/assira/reflection/util/MemberUtilsTest.java

@@ -1,58 +0,0 @@
-/*
- * @author Ranides Atterwim <ranides@gmail.com>
- * @copyright Ranides Atterwim
- * @license WTFPL
- * @url http://ranides.net/projects/assira
- */
-package net.ranides.assira.reflection.util;
-
-import net.ranides.assira.reflection.mockup.ForMemberUtils;
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-/**
- *
- * @author Ranides Atterwim <ranides@gmail.com>
- */
-public class MemberUtilsTest {
-
-    @Test
-    public void testModifiers() throws Exception {
-        
-        
-        
-        assertTrue(MemberUtils.isPublic(ForMemberUtils.PUBLIC) );
-        assertTrue(MemberUtils.isProtected(ForMemberUtils.PROTECTED) );
-        assertTrue(MemberUtils.isPrivate(ForMemberUtils.PRIVATE) );
-        assertTrue(MemberUtils.isStatic(ForMemberUtils.STATIC) );
-        assertTrue(MemberUtils.isVolatile(ForMemberUtils.VOLATILE) );
-        assertTrue(MemberUtils.isTransient(ForMemberUtils.TRANSIENT) );
-        assertTrue(MemberUtils.isFinal(ForMemberUtils.FINAL) );
-        assertTrue(MemberUtils.isAbstract(ForMemberUtils.ABSTRACT) );
-        assertTrue(MemberUtils.isSynchronized(ForMemberUtils.SYNCHRONIZED) );
-        assertTrue(MemberUtils.isStrict(ForMemberUtils.STRICT) );
-        assertTrue(MemberUtils.isNative(ForMemberUtils.NATIVE) );
-        
-        assertFalse(MemberUtils.isPublic(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isProtected(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isPrivate(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isStatic(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isVolatile(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isTransient(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isFinal(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isAbstract(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isAbstract(ForMemberUtils.METHOD) );
-        assertFalse(MemberUtils.isAbstract(ForMemberUtils.FINAL) );
-        assertFalse(MemberUtils.isSynchronized(ForMemberUtils.METHOD) );
-        assertFalse(MemberUtils.isStrict(ForMemberUtils.METHOD) );
-        assertFalse(MemberUtils.isNative(ForMemberUtils.METHOD) );
-                
-//        assertFalse(MemberUtils.isInterface(ForMemberUtils.NOTHING) );
-
-        assertTrue(MemberUtils.isPackage(ForMemberUtils.NOTHING) );
-        assertFalse(MemberUtils.isPackage(ForMemberUtils.PRIVATE) );
-        assertFalse(MemberUtils.isPackage(ForMemberUtils.PUBLIC) );
-        assertFalse(MemberUtils.isPackage(ForMemberUtils.PROTECTED) );
-    }
-    
-}

+ 2 - 10
assira/src/test/java/net/ranides/assira/reflection/util/MethodUtilsTest.java

@@ -10,6 +10,7 @@ import java.lang.reflect.Method;
 import org.junit.Test;
 import org.junit.Test;
 import static net.ranides.assira.junit.NewAssert.*;
 import static net.ranides.assira.junit.NewAssert.*;
 import net.ranides.assira.reflection.mockup.ForMethodUtils.*;
 import net.ranides.assira.reflection.mockup.ForMethodUtils.*;
+import static net.ranides.assira.reflection.mockup.ForMemberTraits.$method;
 
 
 /**
 /**
  *
  *
@@ -108,16 +109,7 @@ public class MethodUtilsTest {
         assertFalse(MethodUtils.overrides($method(B.class, "fun2"), r2));        
         assertFalse(MethodUtils.overrides($method(B.class, "fun2"), r2));        
         
         
     }
     }
-    
-    private static Method $method(Class<?> clazz, String name) {
-        for(Method m : clazz.getDeclaredMethods()) {
-            if(name.equals(m.getName())) {
-                return m;
-            }
-        }
-        throw new AssertionError("Method not found: " + name + " in class: " + clazz);
-    }
-    
+
     public static class B extends Root {
     public static class B extends Root {
         
         
         @Override
         @Override