From b64a9b7a44ffcc8501a2e1973aae50ab6428c8c9 Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Thu, 12 Aug 2021 23:25:12 +0200 Subject: [PATCH] Instantiate DecreeParameter with @param stored + exception when not decl --- .../volmit/iris/util/decree/DecreeNode.java | 5 ++-- .../iris/util/decree/DecreeParameter.java | 24 ++++++++++--------- .../exceptions/DecreeInstanceException.java | 7 ++++++ 3 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/volmit/iris/util/decree/exceptions/DecreeInstanceException.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeNode.java b/src/main/java/com/volmit/iris/util/decree/DecreeNode.java index bcddd94dd..7100c095f 100644 --- a/src/main/java/com/volmit/iris/util/decree/DecreeNode.java +++ b/src/main/java/com/volmit/iris/util/decree/DecreeNode.java @@ -21,6 +21,7 @@ package com.volmit.iris.util.decree; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.decree.annotations.Decree; import com.volmit.iris.util.decree.annotations.Param; +import com.volmit.iris.util.decree.exceptions.DecreeInstanceException; import java.lang.reflect.Method; import java.lang.reflect.Parameter; @@ -44,9 +45,9 @@ public class DecreeNode { for(Parameter i : method.getParameters()) { - if (i.getDeclaredAnnotation(Param.class) != null) { + try { p.add(new DecreeParameter(i)); - } else { + } catch (DecreeInstanceException ignored) { return null; } } diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeParameter.java b/src/main/java/com/volmit/iris/util/decree/DecreeParameter.java index f54a88882..0c4efc3e1 100644 --- a/src/main/java/com/volmit/iris/util/decree/DecreeParameter.java +++ b/src/main/java/com/volmit/iris/util/decree/DecreeParameter.java @@ -20,16 +20,22 @@ package com.volmit.iris.util.decree; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.decree.annotations.Param; +import com.volmit.iris.util.decree.exceptions.DecreeInstanceException; +import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import java.lang.reflect.Parameter; import java.util.Arrays; public class DecreeParameter { private final Parameter parameter; + private final Param param; - public DecreeParameter(Parameter parameter) - { + public DecreeParameter(Parameter parameter) throws DecreeInstanceException { this.parameter = parameter; + this.param = parameter.getDeclaredAnnotation(Param.class); + if (param == null){ + throw new DecreeInstanceException("Cannot instantiate DecreeParameter on parameter not annotated by @Param"); + } } public DecreeParameterHandler getHandler() @@ -44,32 +50,28 @@ public class DecreeParameter { public String getName() { - Param p = parameter.getDeclaredAnnotation(Param.class); - return p == null ? parameter.getName() : p.name().isEmpty() ? parameter.getName() : p.name(); + return param.name().isEmpty() ? parameter.getName() : param.name(); } public String getDescription() { - Param p = parameter.getDeclaredAnnotation(Param.class); - return p.name().isEmpty() ? parameter.getName() : p.name(); + return param.description().isEmpty() ? Param.DEFAULT_DESCRIPTION : param.description(); } public boolean isRequired() { - Param p = parameter.getDeclaredAnnotation(Param.class); - return p == null || p.value().equals(Param.REQUIRED); + return param.value().equals(Param.REQUIRED); } public KList getAliases() { - Param p = parameter.getDeclaredAnnotation(Param.class); KList d = new KList<>(); - if (p == null || Arrays.equals(p.aliases(), new String[]{Param.NO_ALIAS})){ + if (Arrays.equals(param.aliases(), new String[]{Param.NO_ALIAS})){ return d; } - for(String i : p.aliases()) + for(String i : param.aliases()) { if(i.isEmpty()) { diff --git a/src/main/java/com/volmit/iris/util/decree/exceptions/DecreeInstanceException.java b/src/main/java/com/volmit/iris/util/decree/exceptions/DecreeInstanceException.java new file mode 100644 index 000000000..11bf3f1e7 --- /dev/null +++ b/src/main/java/com/volmit/iris/util/decree/exceptions/DecreeInstanceException.java @@ -0,0 +1,7 @@ +package com.volmit.iris.util.decree.exceptions; + +public class DecreeInstanceException extends Exception { + public DecreeInstanceException(String message){ + super(message); + } +}