diff --git a/build.gradle b/build.gradle index c84ff70..77d271d 100644 --- a/build.gradle +++ b/build.gradle @@ -50,7 +50,7 @@ dependencies { testImplementation 'junit:junit:4.13.2' } group = "org.bdware.sc" -version = "1.6.1" +version = "1.6.3" tasks.processResources.setDuplicatesStrategy(DuplicatesStrategy.INCLUDE) diff --git a/src/main/base/org/bdware/sc/ContractResult.java b/src/main/base/org/bdware/sc/ContractResult.java index a5fb9ca..97984d0 100644 --- a/src/main/base/org/bdware/sc/ContractResult.java +++ b/src/main/base/org/bdware/sc/ContractResult.java @@ -26,6 +26,10 @@ public class ContractResult { } public enum Status { - Success, Exception, Error, Executing + Success, Exception, Error; + public Status merge(Status status) { + if (status == null) status = Error; + return this.ordinal() < status.ordinal() ? status : this; + } } } \ No newline at end of file diff --git a/src/main/base/org/bdware/sc/node/AnnotationHook.java b/src/main/base/org/bdware/sc/node/AnnotationHook.java index 25e12f3..0cbacc5 100644 --- a/src/main/base/org/bdware/sc/node/AnnotationHook.java +++ b/src/main/base/org/bdware/sc/node/AnnotationHook.java @@ -1,8 +1,7 @@ package org.bdware.sc.node; import org.bdware.sc.JSEngine; -import org.bdware.sc.bean.ContractRequest; public interface AnnotationHook { - Object handle(ContractRequest input, JSEngine desktopEngine, Object ret); + ArgPacks handle(JSEngine desktopEngine, ArgPacks argPacks); } diff --git a/src/main/base/org/bdware/sc/node/ArgPacks.java b/src/main/base/org/bdware/sc/node/ArgPacks.java new file mode 100644 index 0000000..a72bf49 --- /dev/null +++ b/src/main/base/org/bdware/sc/node/ArgPacks.java @@ -0,0 +1,15 @@ +package org.bdware.sc.node; + +import org.bdware.sc.bean.ContractRequest; + +public class ArgPacks { + public Object ret; + public ContractRequest request; + public Object arg; + + public ArgPacks(ContractRequest request, Object arg, Object ret) { + this.request = request; + this.arg = arg; + this.ret = ret; + } +}