Ranides Atterwim 10 лет назад
Родитель
Сommit
4a06752409
18 измененных файлов с 102 добавлено и 313 удалено
  1. 1 2
      assira/src/main/java/net/ranides/assira/reflection/impl/AAnnotations.java
  2. 8 13
      assira/src/main/java/net/ranides/assira/reflection/impl/AClass.java
  3. 1 8
      assira/src/main/java/net/ranides/assira/reflection/impl/AClasses.java
  4. 1 2
      assira/src/main/java/net/ranides/assira/reflection/impl/AElements.java
  5. 1 7
      assira/src/main/java/net/ranides/assira/reflection/impl/AFields.java
  6. 1 1
      assira/src/main/java/net/ranides/assira/reflection/impl/AHints.java
  7. 1 3
      assira/src/main/java/net/ranides/assira/reflection/impl/AMethod.java
  8. 1 7
      assira/src/main/java/net/ranides/assira/reflection/impl/AMethods.java
  9. 1 5
      assira/src/main/java/net/ranides/assira/reflection/impl/RArgument.java
  10. 1 4
      assira/src/main/java/net/ranides/assira/reflection/impl/RArguments.java
  11. 3 44
      assira/src/main/java/net/ranides/assira/reflection/impl/RClass.java
  12. 71 54
      assira/src/main/java/net/ranides/assira/reflection/impl/RCompareUtils.java
  13. 2 6
      assira/src/main/java/net/ranides/assira/reflection/impl/RConstructor.java
  14. 2 65
      assira/src/main/java/net/ranides/assira/reflection/impl/RFClass.java
  15. 2 6
      assira/src/main/java/net/ranides/assira/reflection/impl/RField.java
  16. 1 6
      assira/src/main/java/net/ranides/assira/reflection/impl/RMethod.java
  17. 4 38
      assira/src/main/java/net/ranides/assira/reflection/impl/RWClass.java
  18. 0 42
      assira/src/test/java/net/ranides/assira/reflection/impl/RClassTest.java

+ 1 - 2
assira/src/main/java/net/ranides/assira/reflection/impl/AAnnotations.java

@@ -6,13 +6,12 @@
  */
 package net.ranides.assira.reflection.impl;
 
-import net.ranides.assira.reflection.IHints;
 import java.lang.annotation.Annotation;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
-import net.ranides.assira.reflection.IAnnotations;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 8 - 13
assira/src/main/java/net/ranides/assira/reflection/impl/AClass.java

@@ -11,12 +11,7 @@ import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.stream.Stream;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IClasses;
-import net.ranides.assira.reflection.IFields;
-import net.ranides.assira.reflection.IMethods;
+import net.ranides.assira.reflection.*;
 
 /**
  *
@@ -83,12 +78,12 @@ public class AClass implements IClass {
     }
 
     @Override
-    public boolean isSuper(IClass type) {
+    public final boolean isSuper(IClass type) {
         return RCompareUtils.isSuper(this, type);
     }
 
     @Override
-    public boolean isSubclass(IClass type) {
+    public final boolean isSubclass(IClass type) {
         return RCompareUtils.isSubclass(this, type);
     }
 
@@ -103,7 +98,7 @@ public class AClass implements IClass {
     }
     
     @Override
-    public IClasses collect() {
+    public final IClasses collect() {
         return new AClasses(AHints.EMPTY, Stream.of(this));
     }
 
@@ -123,22 +118,22 @@ public class AClass implements IClass {
     }
 
     @Override
-    public int compareTo(IClass object) {
+    public final int compareTo(IClass object) {
         return RCompareUtils.compare(this, object);
     }
 
     @Override
-    public boolean equals(Object that) {
+    public final boolean equals(Object that) {
         return (that instanceof IClass) && RCompareUtils.equals(this, (IClass)that);
     }
 
     @Override
-    public int hashCode() {
+    public final int hashCode() {
         return RCompareUtils.hashcode(this);
     }
     
     @Override
-    public String toString() {
+    public final String toString() {
         return name();
     }
     

+ 1 - 8
assira/src/main/java/net/ranides/assira/reflection/impl/AClasses.java

@@ -6,7 +6,6 @@
  */
 package net.ranides.assira.reflection.impl;
 
-import net.ranides.assira.reflection.IHints;
 import java.lang.annotation.Annotation;
 import java.util.Arrays;
 import java.util.List;
@@ -15,13 +14,7 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import net.ranides.assira.collection.lists.ListUtils;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IClasses;
-import net.ranides.assira.reflection.IFields;
-import net.ranides.assira.reflection.IMethod;
-import net.ranides.assira.reflection.IMethods;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 1 - 2
assira/src/main/java/net/ranides/assira/reflection/impl/AElements.java

@@ -6,7 +6,6 @@
  */
 package net.ranides.assira.reflection.impl;
 
-import net.ranides.assira.reflection.IHints;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.Function;
@@ -14,7 +13,7 @@ import java.util.function.Predicate;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import net.ranides.assira.reflection.IElements;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 1 - 7
assira/src/main/java/net/ranides/assira/reflection/impl/AFields.java

@@ -6,19 +6,13 @@
  */
 package net.ranides.assira.reflection.impl;
 
-import net.ranides.assira.reflection.IHints;
 import java.lang.annotation.Annotation;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IClasses;
-import net.ranides.assira.reflection.IField;
-import net.ranides.assira.reflection.IFields;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 1 - 1
assira/src/main/java/net/ranides/assira/reflection/impl/AHints.java

@@ -6,11 +6,11 @@
  */
 package net.ranides.assira.reflection.impl;
 
-import net.ranides.assira.reflection.*;
 import java.util.AbstractSet;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.Set;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 1 - 3
assira/src/main/java/net/ranides/assira/reflection/impl/AMethod.java

@@ -11,9 +11,7 @@ import java.lang.invoke.MethodHandle;
 import java.util.function.Function;
 import java.util.stream.Stream;
 import net.ranides.assira.collection.iterators.IteratorUtils;
-import net.ranides.assira.reflection.IClasses;
-import net.ranides.assira.reflection.IMethod;
-import net.ranides.assira.reflection.IMethods;
+import net.ranides.assira.reflection.*;
 import net.ranides.assira.trace.ExceptionUtils;
 
 /**

+ 1 - 7
assira/src/main/java/net/ranides/assira/reflection/impl/AMethods.java

@@ -14,13 +14,7 @@ import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IArguments;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IClasses;
-import net.ranides.assira.reflection.IMethod;
-import net.ranides.assira.reflection.IMethods;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 1 - 5
assira/src/main/java/net/ranides/assira/reflection/impl/RArgument.java

@@ -10,11 +10,7 @@ import java.lang.reflect.Parameter;
 import java.util.Arrays;
 import java.util.Set;
 import java.util.stream.Stream;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IArgument;
-import net.ranides.assira.reflection.IArguments;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 1 - 4
assira/src/main/java/net/ranides/assira/reflection/impl/RArguments.java

@@ -8,10 +8,7 @@ package net.ranides.assira.reflection.impl;
 
 import java.util.List;
 import java.util.stream.Stream;
-import net.ranides.assira.reflection.IArgument;
-import net.ranides.assira.reflection.IArguments;
-import net.ranides.assira.reflection.IClasses;
-import net.ranides.assira.reflection.IHints;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 3 - 44
assira/src/main/java/net/ranides/assira/reflection/impl/RClass.java

@@ -20,20 +20,18 @@ import java.util.Spliterator;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Supplier;
-import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 import net.ranides.assira.collection.iterators.ForwardSpliterator;
 import net.ranides.assira.collection.iterators.IteratorUtils;
 import net.ranides.assira.collection.lists.ListUtils;
 import net.ranides.assira.generic.LazyReference;
 import net.ranides.assira.reflection.*;
-import net.ranides.assira.reflection.util.*;
 
 /**
  *
  * @author Ranides Atterwim <ranides@gmail.com>
  */
-public class RClass implements IClass {
+public class RClass extends AClass {
     
     public static final RClass OBJECT = new RClass(Object.class);
     
@@ -64,11 +62,6 @@ public class RClass implements IClass {
         return (null == object) ? AClass.NULL : new RClass(object.getClass());
     }
     
-    @Override
-    public final IClasses collect() {
-        return new AClasses(AHints.EMPTY, Stream.of(this));
-    }
-
     @Override
     public List<IClass> params() {
         Type gtype = type.getGenericSuperclass();
@@ -129,19 +122,9 @@ public class RClass implements IClass {
         return type;
     }
 
-    @Override
-    public final boolean isSuper(IClass that) {
-        return RCompareUtils.isSuper(this, that);
-    }
-
-    @Override
-    public final boolean isSubclass(IClass that) {
-        return RCompareUtils.isSubclass(this, that);
-    }
-    
     @Override
     public final boolean isPrimitive() {
-        return ClassTraits.isPrimitive(type);
+        return type.isPrimitive();
     }
 
     @Override
@@ -164,26 +147,6 @@ public class RClass implements IClass {
         AHints attr = new AHints();
         return new AAnnotations(attr, StreamSupport.stream(new RAnnotations(attr), false));
     }
-
-    @Override
-    public final int compareTo(IClass that) {
-        return RCompareUtils.compare(this, that);
-    }
-
-    @Override
-    public final int hashCode() {
-        return RCompareUtils.hashcode(this);
-    }
-
-    @Override
-    public final boolean equals(Object that) {
-        return (that instanceof IClass) && RCompareUtils.equals(this, (IClass)that);
-    }
-    
-    @Override
-    public String toString() {
-        return name();
-    }
     
     static abstract class RSpliterator<T> extends ForwardSpliterator<T> {
         
@@ -218,16 +181,12 @@ public class RClass implements IClass {
 
         @Override
         public Spliterator<IMethod> init(AHints hints) {
-            System.out.printf("RClass.hint %s%n", hints);
             if(hints.hintDeclared()) {
-                System.out.printf("hd%n");
                 return map(type.getDeclaredMethods(), RMethod::new);
             } else if(hints.hintNoPublic()) {
-                System.out.printf("hnp%n");
                 Spliterator<Method> raw = flat(new RawAncestors(type), c -> c.getDeclaredMethods());
                 return IteratorUtils.map(raw, RMethod::new);
             } else {
-                System.out.printf("hm%n");
                 return map(type.getMethods(), RMethod::new);
             }
         }
@@ -335,7 +294,7 @@ public class RClass implements IClass {
 
     }
     
-    private static class RPClass extends RClass implements IClass {
+    private static class RPClass extends RClass {
 
         private final ParameterizedType ptype;
 

+ 71 - 54
assira/src/main/java/net/ranides/assira/reflection/impl/RCompareUtils.java

@@ -6,8 +6,11 @@
  */
 package net.ranides.assira.reflection.impl;
 
-import net.ranides.assira.reflection.IClass;
-import static net.ranides.assira.reflection.impl.AClass.NULL;
+import java.io.Serializable;
+import java.util.List;
+import net.ranides.assira.collection.lists.ListUtils;
+import net.ranides.assira.reflection.util.ClassTraits;
+import net.ranides.assira.reflection.*;
 
 /**
  *
@@ -19,32 +22,18 @@ public final class RCompareUtils {
         /* utility class */
     }
     
-    // @todo (assira #0) reflective compare
-    
-    // @todo (assira #0) reflective issubclass
-    
     public static int hashcode(IClass iclass) {
         return iclass.name().hashCode();
     }
         
-    public static int compare(IClass isuper, IClass iclass) {
-        if(isuper == AClass.NULL) {
-            return (NULL==iclass) ? 0 : -1;
-        }
-        boolean sw = (isuper instanceof RWClass);
-        boolean cw = (iclass instanceof RWClass);
-        if(sw && cw) {
-            return compare((RWClass)isuper, (RWClass)iclass);
-        }
-        else if(sw && !cw) {
-            return compare((RWClass)isuper, (RClass)iclass);
+    public static int compare(IClass a, IClass b) {
+        if(a == AClass.NULL) {
+            return (AClass.NULL==b) ? 0 : -1;
         }
-        else if(!sw && cw) {
-            return compare((RClass)isuper, (RWClass)iclass);
-        }
-        else {
-            return compare((RClass)isuper, (RClass)iclass);
+        if(isSuper(a, b)) {
+            return isSuper(b, a) ? a.name().compareTo(b.name()) : -1;
         }
+        return a.name().compareTo(b.name());
     }
     
     public static boolean equals(IClass a, IClass b) {
@@ -52,59 +41,76 @@ public final class RCompareUtils {
     }
     
     public static boolean isSubclass(IClass iclass, IClass isuper) {
-        return isSuper(isuper, iclass);
+        return isSuper(false, isuper, iclass);
     }
     
     public static boolean isSuper(IClass isuper, IClass iclass) {
+        return isSuper(false, isuper, iclass);
+    }
+    
+    public static boolean isInstance(IClass type, Object object) {
+        return isSuper(true, type, IClass.typefor(object));
+    }
+    
+    private static boolean isSuper(boolean box, IClass isuper, IClass iclass) {
         if(isuper == AClass.NULL) {
             return !iclass.isPrimitive();
         }
         boolean sw = (isuper instanceof RWClass);
         boolean cw = (iclass instanceof RWClass);
         if(sw && cw) {
-            return isSuper((RWClass)isuper, (RWClass)iclass);
+            return isSuper(box, (RWClass)isuper, (RWClass)iclass);
         }
         else if(sw && !cw) {
-            return isSuper((RWClass)isuper, (RClass)iclass);
+            return isSuper(box, (RWClass)isuper, (RClass)iclass);
         }
         else if(!sw && cw) {
-            return isSuper((RClass)isuper, (RWClass)iclass);
+            return isSuper(box, (RClass)isuper, (RWClass)iclass);
         }
         else {
-            return isSuper((RClass)isuper, (RClass)iclass);
+            return isSuper(box, (RClass)isuper, (RClass)iclass);
         }
     }
     
-    private static int compare(RWClass a, RWClass b) {
-        throw new UnsupportedOperationException("rw-rw" + a + " " +b);
-    }
-    
-    private static int compare(RWClass a, RClass b) {
-        throw new UnsupportedOperationException("rw-rc" + a + " " +b);
-    }
-    
-    private static int compare(RClass a, RWClass b) {
-        throw new UnsupportedOperationException("rc-rw" + a + " " +b);
-    }
-    
-    private static int compare(RClass a, RClass b) {
-        if(isSuper(a, b)) {
-            return isSuper(b, a) ? a.name().compareTo(b.name()) : -1;
+    private static <T extends String & CharSequence> boolean isSuper(boolean box, RWClass isuper, RWClass iclass) {
+        // czy isuper.lower isSuper iclass.upper ?
+        // czy iclass.lower isSuper isuper.upper ?
+        
+        for(IClass c : isuper.lower()) {
+            for(IClass p : iclass.upper()) {
+                if( !isSuper(c, p) ) {
+                    return false;
+                }
+            }
         }
-        return a.name().compareTo(b.name());
-    }
-    
-    private static boolean isSuper(RWClass isuper, RWClass iclass) {
-        throw new UnsupportedOperationException("rw-rw" + isuper + " "  + iclass);
+        
+        for(IClass c : iclass.lower()) {
+            for(IClass p : isuper.upper()) {
+                if( !isSuper(c, p) ) {
+                    return false;
+                }
+            }
+        }
+        return isSuperList(false, isuper.params(), iclass.params());
     }
     
-    private static boolean isSuper(RWClass isuper, RClass iclass) {
-        throw new UnsupportedOperationException("rw-rc" + isuper + " "  + iclass);
+    private static boolean isSuper(boolean box, RWClass isuper, RClass iclass) {
+        for(IClass c : isuper.lower()) {
+            if(!isSubclass(iclass,c)) {
+                return false;
+            }
+        }
+        for(IClass c : isuper.upper()) {
+            if(!isSuper(iclass, c)) {
+                return false;
+            }
+        }
+        return isSuperList(false, isuper.params(), iclass.params());
     }
     
-    private static boolean isSuper(RClass isuper, RWClass iclass) {
+    private static boolean isSuper(boolean box, RClass isuper, RWClass iclass) {
         for(IClass c : iclass.lower()) {
-            if(!isSuper(isuper, c)) {
+            if(!isSubclass(isuper,c)) {
                 return false;
             }
         }
@@ -113,11 +119,22 @@ public final class RCompareUtils {
                 return false;
             }
         }
-        return true;
+        return isSuperList(false, isuper.params(), iclass.params());
+    }
+    
+    private static boolean isSuper(boolean box, RClass isuper, RClass iclass) {
+        if(!isSuperRaw(box, isuper.reflective(), iclass.reflective())) {
+            return false;
+        }
+        return isSuperList(box, isuper.params(), iclass.params());
+    }
+    
+    private static boolean isSuperRaw(boolean box, Class<?> isuper, Class<?> iclass) {
+        return box ? ClassTraits.isSuper(isuper, iclass) : isuper.isAssignableFrom(iclass);
     }
     
-    private static boolean isSuper(RClass isuper, RClass iclass) {
-        throw new UnsupportedOperationException("rc-rc" + isuper + " "  + iclass);
+    private static boolean isSuperList(boolean box, List<IClass> list1, List<IClass> list2) {
+        return ListUtils.equals(list1, list2, (a,b) -> RCompareUtils.isSuper(box,a,b));
     }
     
 }

+ 2 - 6
assira/src/main/java/net/ranides/assira/reflection/impl/RConstructor.java

@@ -17,14 +17,10 @@ import java.util.Set;
 import java.util.function.Supplier;
 import net.ranides.assira.collection.lists.ListUtils;
 import net.ranides.assira.generic.LazyReference;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IArguments;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IMethod;
+import net.ranides.assira.trace.ExceptionUtils;
 import net.ranides.assira.reflection.util.MethodUtils;
 import net.ranides.assira.reflection.util.ReflectUtils;
-import net.ranides.assira.trace.ExceptionUtils;
+import net.ranides.assira.reflection.*;
 
 /**
  *

+ 2 - 65
assira/src/main/java/net/ranides/assira/reflection/impl/RFClass.java

@@ -12,22 +12,15 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 import java.util.Spliterator;
-import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
-import net.ranides.assira.collection.lists.ListUtils;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IClasses;
-import net.ranides.assira.reflection.IFields;
-import net.ranides.assira.reflection.IMethods;
+import net.ranides.assira.reflection.*;
 
 /**
  *
  * @author Ranides Atterwim <ranides@gmail.com>
  */
-public class RFClass implements IClass {
+public class RFClass extends AClass {
     
     private final IClass itype;
     private final AnnotatedType atype;
@@ -37,11 +30,6 @@ public class RFClass implements IClass {
         this.atype = atype;
     }
 
-    @Override
-    public IClasses collect() {
-        return new AClasses(AHints.EMPTY, Stream.of(this));
-    }
-
     @Override
     public List<IClass> params() {
         return itype.params();
@@ -92,16 +80,6 @@ public class RFClass implements IClass {
         return itype.reflective();
     }
 
-    @Override
-    public boolean isSuper(IClass type) {
-        return itype.isSuper(type);
-    }
-
-    @Override
-    public boolean isSubclass(IClass type) {
-        return itype.isSubclass(type);
-    }
-
     @Override
     public boolean isPrimitive() {
         return itype.isPrimitive();
@@ -132,47 +110,6 @@ public class RFClass implements IClass {
         return new AAnnotations(attr, stream);
     }
 
-    @Override
-    public int compareTo(IClass o) {
-        int c = itype.compareTo(o);
-        if(c != 0) {
-            return c;
-        }
-        List<String> list1 = itype.annotations().stream().map(a -> a.annotationType().getName()).sorted().collect(Collectors.toList());
-        List<String> list2 = o.annotations().stream().map(a -> a.annotationType().getName()).sorted().collect(Collectors.toList());
-        return ListUtils.compare(list1, list2, String::compareTo);
-    }
-
-    @Override
-    public int hashCode() {
-        return itype.hashCode();
-    }
-    
-    @Override
-    public String toString() {
-        return name();
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object == null) {
-            return false;
-        }
-        if(object instanceof IClass) {
-            IClass that = (IClass)object;
-            if(!itype.equals(that)) {
-                return false;
-            }
-            List<String> list1 = itype.annotations().stream().map(a -> a.annotationType().getName()).sorted().collect(Collectors.toList());
-            List<String> list2 = that.annotations().stream().map(a -> a.annotationType().getName()).sorted().collect(Collectors.toList());
-            return list1.equals(list2);
-        }
-        return false;
-    }
-    
     private class RFAnnotations extends RClass.RSpliterator<Annotation> {
 
         public RFAnnotations(AHints hints) {

+ 2 - 6
assira/src/main/java/net/ranides/assira/reflection/impl/RField.java

@@ -15,13 +15,9 @@ import java.util.function.Supplier;
 import java.util.stream.Stream;
 import net.ranides.assira.generic.LazyReference;
 import net.ranides.assira.generic.Wrapper;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IField;
-import net.ranides.assira.reflection.IFields;
-import net.ranides.assira.reflection.util.ReflectUtils;
 import net.ranides.assira.trace.ExceptionUtils;
+import net.ranides.assira.reflection.*;
+import net.ranides.assira.reflection.util.ReflectUtils;
 
 /**
  *

+ 1 - 6
assira/src/main/java/net/ranides/assira/reflection/impl/RMethod.java

@@ -18,14 +18,9 @@ import java.util.function.Supplier;
 import java.util.stream.Collectors;
 import net.ranides.assira.collection.lists.ListUtils;
 import net.ranides.assira.generic.LazyReference;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IArguments;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IMethod;
+import net.ranides.assira.reflection.*;
 import net.ranides.assira.reflection.util.MethodUtils;
 import net.ranides.assira.reflection.util.ReflectUtils;
-import net.ranides.assira.system.RuntimeUtils;
 import net.ranides.assira.trace.ExceptionUtils;
 
 /**

+ 4 - 38
assira/src/main/java/net/ranides/assira/reflection/impl/RWClass.java

@@ -17,17 +17,13 @@ import java.util.Spliterator;
 import java.util.function.Consumer;
 import java.util.stream.StreamSupport;
 import net.ranides.assira.collection.iterators.ForwardSpliterator;
-import net.ranides.assira.reflection.IAnnotations;
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IClasses;
-import static net.ranides.assira.reflection.impl.RClass.OBJECT;
+import net.ranides.assira.reflection.*;
 
 /**
  *
  * @author Ranides Atterwim <ranides@gmail.com>
  */
-public class RWClass extends AClass implements IClass {
+public class RWClass extends AClass {
     
     private static final Set<IAttribute> WATTRS = IAttribute.constantOf(IAttribute.PUBLIC);
     
@@ -72,7 +68,7 @@ public class RWClass extends AClass implements IClass {
     
     @Override
     public IClass parent() {
-        return new AClasses(upper).discard(IAttribute.INTERFACE).first().orElse(OBJECT);
+        return new AClasses(upper).discard(IAttribute.INTERFACE).first().orElse(RClass.OBJECT);
     }
     
     @Override
@@ -92,19 +88,9 @@ public class RWClass extends AClass implements IClass {
         throw new UnsupportedOperationException("IClass<Wildcard> is not reflective");
     }
 
-    @Override
-    public boolean isSuper(IClass type) {
-        return RCompareUtils.isSuper(this, type);
-    }
-
-    @Override
-    public boolean isSubclass(IClass type) {
-        return RCompareUtils.isSubclass(this, type);
-    }
-
     @Override
     public boolean isInstance(Object value) {
-        return RCompareUtils.isSubclass(this, IClass.typefor(value));
+        return RCompareUtils.isInstance(this, value);
     }
 
     @Override
@@ -117,26 +103,6 @@ public class RWClass extends AClass implements IClass {
         return WATTRS;
     }
 
-    @Override
-    public int compareTo(IClass object) {
-        return RCompareUtils.compare(this, object);
-    }
-
-    @Override
-    public boolean equals(Object that) {
-        return (that instanceof IClass) && RCompareUtils.equals(this, (IClass)that);
-    }
-
-    @Override
-    public int hashCode() {
-        return RCompareUtils.hashcode(this);
-    }
-    
-    @Override
-    public String toString() {
-        return name();
-    }
-    
     private class RWAnnotations extends RClass.RSpliterator<Annotation> {
 
         public RWAnnotations(AHints hints) {

+ 0 - 42
assira/src/test/java/net/ranides/assira/reflection/impl/RClassTest.java

@@ -1,42 +0,0 @@
-/*
- * @author Ranides Atterwim <ranides@gmail.com>
- * @copyright Ranides Atterwim
- * @license WTFPL
- * @url http://ranides.net/projects/assira
- */
-package net.ranides.assira.reflection.impl;
-
-import net.ranides.assira.reflection.IAttribute;
-import net.ranides.assira.reflection.IClass;
-import net.ranides.assira.reflection.IMethod;
-import net.ranides.assira.reflection.mockup.ForMethodUtils;
-import org.junit.Test;
-
-/**
- *
- * @author Ranides Atterwim <ranides@gmail.com>
- */
-public class RClassTest {
-    
-    
-    public RClassTest() {
-    }
-
-    @Test
-    public void testMethods() {
-        IClass ic = IClass.typeinfo(ForMethodUtils.A.class);
-        System.out.printf("%n");
-        ic.methods().require(IAttribute.PRIVATE).stream().forEach(this::print);
-        
-        System.out.printf("%n");
-        ic.methods().require(IAttribute.DECLARED).stream().forEach(this::print);
-        
-        System.out.printf("%n");
-        ic.methods().require(IAttribute.PUBLIC).stream().forEach(this::print);
-    }
-    
-    private void print(IMethod m) {
-        System.out.printf(" # %s.%s %s%n", m.parent().name(), m.name(), m.arguments().list());
-    }
-    
-}