Przeglądaj źródła

new: IExecutable#exceptions
fix: RArgument#name / #toString

Mariusz Sieroń 6 lat temu
rodzic
commit
28edf4b364

+ 6 - 0
assira.lambda/src/main/java/net/ranides/assira/reflection/impl/LMethod.java

@@ -13,6 +13,7 @@ import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Set;
 import net.ranides.assira.collection.query.CQuery;
+import net.ranides.assira.collection.query.CQueryBuilder;
 import net.ranides.assira.reflection.*;
 import net.ranides.assira.reflection.util.ReflectUtils;
 import net.ranides.assira.trace.ExceptionUtils;
@@ -57,6 +58,11 @@ public final class LMethod extends AMethod implements IMethod {
 	public IClass<?> returns() {
         return typeinfo.returns();
 	}
+
+    @Override
+    public List<IClass<?>> exceptions() {
+	    return typeinfo.exceptions();
+    }
     
 	@Override
 	public String name() {

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

@@ -24,7 +24,9 @@ public interface IExecutable extends IElement {
     IClass<?> returns();
     
     IArguments arguments();
-    
+
+    List<IClass<?>> exceptions();
+
     @Override
     IClass<?> parent();
     

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

@@ -6,12 +6,12 @@
  */
 package net.ranides.assira.reflection.impl;
 
+import net.ranides.assira.collection.query.CQueryBuilder;
+import net.ranides.assira.reflection.*;
+
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Parameter;
 import java.util.Optional;
-import java.util.Set;
-import net.ranides.assira.reflection.*;
-import net.ranides.assira.collection.query.CQueryBuilder;
 
 /**
  *
@@ -59,25 +59,14 @@ public class RArgument implements IArgument {
     public String name() {
         if(!param.isNamePresent()) {
             String[] names = parent.$debugParams();
-            if(null == names) {
+            if(null == names || null == names[index]) {
                 return "arg"+index;
-//                throw new UnsupportedOperationException("You have to compile class with -parameters or -g switch");
             }
             return names[index];
         }
         return param.getName();
     }
 
-    private String iname() {
-        if(!param.isNamePresent()) {
-            String[] names = parent.$debugParams();
-            if(null != names) {
-                return names[index];
-            }
-        }
-        return param.getName();
-    }
-
     @Override
     public IExecutable parent() {
         return parent;
@@ -110,7 +99,7 @@ public class RArgument implements IArgument {
 
     @Override
     public String toString() {
-        return type() + " " + iname();
+        return type() + " " + name();
     }
     
 }

+ 7 - 0
assira/src/main/java/net/ranides/assira/reflection/impl/RConstructor.java

@@ -23,6 +23,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 /**
  *
@@ -57,6 +58,12 @@ public final class RConstructor<T> extends AConstructor<T> {
         return parent();
 	}
 
+	@Override
+	public List<IClass<?>> exceptions() {
+		IContext c = context();
+		return Arrays.stream(method.getExceptionTypes()).map(v -> FClass.newClass(c, v)).collect(Collectors.toList());
+	}
+
 	@Override
 	public IArguments arguments() {
         IContext c = context();

+ 15 - 8
assira/src/main/java/net/ranides/assira/reflection/impl/RMethod.java

@@ -7,20 +7,21 @@
 
 package net.ranides.assira.reflection.impl;
 
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Supplier;
 import net.ranides.assira.collection.lists.ListUtils;
+import net.ranides.assira.collection.query.CQueryBuilder;
 import net.ranides.assira.generic.LazyReference;
 import net.ranides.assira.reflection.*;
 import net.ranides.assira.reflection.util.MethodUtils;
 import net.ranides.assira.reflection.util.ReflectUtils;
 import net.ranides.assira.trace.ExceptionUtils;
-import net.ranides.assira.collection.query.CQueryBuilder;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 /**
  *
@@ -59,6 +60,12 @@ public class RMethod extends AMethod implements IMethod {
         return FClass.newClass(c, method.getGenericReturnType(), method.getAnnotatedReturnType());
 	}
 
+	@Override
+	public List<IClass<?>> exceptions() {
+		IContext c = context();
+		return Arrays.stream(method.getExceptionTypes()).map(v -> FClass.newClass(c, v)).collect(Collectors.toList());
+	}
+
 	@Override
 	public IArguments arguments() {
         IContext c = context();