Instantiate DecreeParameter with @param stored + exception when not decl

This commit is contained in:
CocoTheOwner 2021-08-12 23:25:12 +02:00
parent 326bf39bed
commit b64a9b7a44
3 changed files with 23 additions and 13 deletions

View File

@ -21,6 +21,7 @@ package com.volmit.iris.util.decree;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.annotations.Decree; import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param; 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.Method;
import java.lang.reflect.Parameter; import java.lang.reflect.Parameter;
@ -44,9 +45,9 @@ public class DecreeNode {
for(Parameter i : method.getParameters()) for(Parameter i : method.getParameters())
{ {
if (i.getDeclaredAnnotation(Param.class) != null) { try {
p.add(new DecreeParameter(i)); p.add(new DecreeParameter(i));
} else { } catch (DecreeInstanceException ignored) {
return null; return null;
} }
} }

View File

@ -20,16 +20,22 @@ package com.volmit.iris.util.decree;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.annotations.Param; 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.lang.reflect.Parameter;
import java.util.Arrays; import java.util.Arrays;
public class DecreeParameter { public class DecreeParameter {
private final Parameter parameter; private final Parameter parameter;
private final Param param;
public DecreeParameter(Parameter parameter) public DecreeParameter(Parameter parameter) throws DecreeInstanceException {
{
this.parameter = parameter; 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() public DecreeParameterHandler<?> getHandler()
@ -44,32 +50,28 @@ public class DecreeParameter {
public String getName() public String getName()
{ {
Param p = parameter.getDeclaredAnnotation(Param.class); return param.name().isEmpty() ? parameter.getName() : param.name();
return p == null ? parameter.getName() : p.name().isEmpty() ? parameter.getName() : p.name();
} }
public String getDescription() public String getDescription()
{ {
Param p = parameter.getDeclaredAnnotation(Param.class); return param.description().isEmpty() ? Param.DEFAULT_DESCRIPTION : param.description();
return p.name().isEmpty() ? parameter.getName() : p.name();
} }
public boolean isRequired() public boolean isRequired()
{ {
Param p = parameter.getDeclaredAnnotation(Param.class); return param.value().equals(Param.REQUIRED);
return p == null || p.value().equals(Param.REQUIRED);
} }
public KList<String> getAliases() public KList<String> getAliases()
{ {
Param p = parameter.getDeclaredAnnotation(Param.class);
KList<String> d = new KList<>(); KList<String> 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; return d;
} }
for(String i : p.aliases()) for(String i : param.aliases())
{ {
if(i.isEmpty()) if(i.isEmpty())
{ {

View File

@ -0,0 +1,7 @@
package com.volmit.iris.util.decree.exceptions;
public class DecreeInstanceException extends Exception {
public DecreeInstanceException(String message){
super(message);
}
}