From 3de1087868789eea90df383d96b53feac85097fd Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 11:17:14 +0200 Subject: [PATCH 01/13] feat: added @NotNull and @Nullable annotations in code --- .../api/script/constant/ScriptConstant.java | 9 ++++++--- .../api/script/constant/ScriptConstantManager.java | 4 +++- .../api/script/function/ScriptFunction.java | 6 ++++-- .../api/script/function/ScriptFunctionManager.java | 4 +++- .../constant/impl/ScriptConstantBaseDir.java | 3 ++- .../script/constant/impl/ScriptConstantOsName.java | 3 ++- .../script/function/impl/ScriptFunctionPrint.java | 3 ++- .../function/impl/ScriptFunctionShuffleArray.java | 3 ++- .../impl/crypto/ScriptFunctionBase64Decode.java | 3 ++- .../impl/crypto/ScriptFunctionBase64Encode.java | 3 ++- .../function/impl/crypto/ScriptFunctionMD5.java | 3 ++- .../function/impl/crypto/ScriptFunctionSHA256.java | 3 ++- .../impl/file/ScriptFunctionDeleteFile.java | 3 ++- .../impl/file/ScriptFunctionDownloadFromUrl.java | 3 ++- .../impl/file/ScriptFunctionExistsFile.java | 3 ++- .../function/impl/file/ScriptFunctionJoinPath.java | 3 ++- .../impl/file/ScriptFunctionListFiles.java | 3 ++- .../function/impl/file/ScriptFunctionMoveFile.java | 3 ++- .../impl/file/ScriptFunctionNormalizePath.java | 3 ++- .../function/impl/file/ScriptFunctionReadFile.java | 3 ++- .../impl/file/ScriptFunctionWriteFile.java | 3 ++- .../script/function/impl/os/ScriptFunctionEnv.java | 3 ++- .../impl/os/ScriptFunctionExecCommand.java | 3 ++- .../impl/random/ScriptFunctionRandomDouble.java | 3 ++- .../impl/random/ScriptFunctionRandomFloat.java | 3 ++- .../impl/random/ScriptFunctionRandomInteger.java | 3 ++- .../impl/random/ScriptFunctionRandomLong.java | 3 ++- .../impl/random/ScriptFunctionRandomUUID.java | 3 ++- .../impl/zip/ScriptFunctionSmartUnzipFile.java | 3 ++- .../impl/zip/ScriptFunctionSmartZipFile.java | 3 ++- .../function/impl/zip/ScriptFunctionUnzipFile.java | 3 ++- .../function/impl/zip/ScriptFunctionZipFile.java | 3 ++- .../java/com/instancify/scriptify/script/Test.java | 14 ++++++++++++++ 33 files changed, 86 insertions(+), 35 deletions(-) create mode 100644 script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java diff --git a/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstant.java b/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstant.java index c1aeaf4..08cab7c 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstant.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstant.java @@ -1,5 +1,8 @@ package com.instancify.scriptify.api.script.constant; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + /** * Represents a constant that can be used within scripts. */ @@ -10,14 +13,14 @@ public interface ScriptConstant { * * @return The name of the constant */ - String getName(); + @NotNull String getName(); /** * Gets the value of the constant. * * @return The value of the constant */ - Object getValue(); + @Nullable Object getValue(); /** * Creates a new ScriptConstant instance with the given name and value. @@ -29,7 +32,7 @@ public interface ScriptConstant { static ScriptConstant of(String name, Object value) { return new ScriptConstant() { @Override - public String getName() { + public @NotNull String getName() { return name; } diff --git a/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java b/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java index d7fc9fb..ec4b2b7 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java @@ -1,5 +1,7 @@ package com.instancify.scriptify.api.script.constant; +import org.jetbrains.annotations.Nullable; + import java.util.Map; /** @@ -20,7 +22,7 @@ public interface ScriptConstantManager { * @param name The name of the constant to retrieve * @return The ScriptConstant associated with the name, or null if not found */ - default ScriptConstant getConstant(String name) { + default @Nullable ScriptConstant getConstant(String name) { return this.getConstants().get(name); } diff --git a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java index cb746c0..b024d3d 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java @@ -2,6 +2,8 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * Represents a function that can be used within scripts. @@ -13,7 +15,7 @@ public interface ScriptFunction { * * @return The function's name */ - String getName(); + @NotNull String getName(); /** * Invokes the function with the provided arguments. @@ -23,5 +25,5 @@ public interface ScriptFunction { * @return The result of the function execution * @throws ScriptFunctionException If there's an error during invocation */ - Object invoke(Script script, Object[] args) throws ScriptFunctionException; + @Nullable Object invoke(Script script, Object[] args) throws ScriptFunctionException; } diff --git a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java index 2150a64..4213adf 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java @@ -1,5 +1,7 @@ package com.instancify.scriptify.api.script.function; +import org.jetbrains.annotations.Nullable; + import java.util.Map; /** @@ -20,7 +22,7 @@ public interface ScriptFunctionManager { * @param name The name of the function to retrieve * @return The ScriptFunction associated with the name, or null if not found */ - default ScriptFunction getFunction(String name) { + default @Nullable ScriptFunction getFunction(String name) { return this.getFunctions().get(name); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantBaseDir.java b/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantBaseDir.java index c43d6d3..f300d65 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantBaseDir.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantBaseDir.java @@ -1,6 +1,7 @@ package com.instancify.scriptify.core.script.constant.impl; import com.instancify.scriptify.api.script.constant.ScriptConstant; +import org.jetbrains.annotations.NotNull; import java.nio.file.Paths; @@ -10,7 +11,7 @@ public class ScriptConstantBaseDir implements ScriptConstant { @Override - public String getName() { + public @NotNull String getName() { return "baseDir"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantOsName.java b/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantOsName.java index 1786fc8..63c659d 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantOsName.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/constant/impl/ScriptConstantOsName.java @@ -1,6 +1,7 @@ package com.instancify.scriptify.core.script.constant.impl; import com.instancify.scriptify.api.script.constant.ScriptConstant; +import org.jetbrains.annotations.NotNull; /** * Represents a constant with os name @@ -8,7 +9,7 @@ public class ScriptConstantOsName implements ScriptConstant { @Override - public String getName() { + public @NotNull String getName() { return "osName"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java index d9c7888..17fe46a 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java @@ -2,6 +2,7 @@ import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.stream.Collectors; @@ -12,7 +13,7 @@ public class ScriptFunctionPrint implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "print"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java index a33ffc1..9b62343 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Collections; @@ -16,7 +17,7 @@ public class ScriptFunctionShuffleArray implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "shuffleArray"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java index 670a32e..5490c69 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -14,7 +15,7 @@ */ public class ScriptFunctionBase64Decode implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "base64decode"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java index 425d431..4f2bbec 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.Base64; @@ -13,7 +14,7 @@ */ public class ScriptFunctionBase64Encode implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "base64encode"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java index 5a1dd0e..b2ecaad 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.math.BigInteger; import java.nio.charset.StandardCharsets; @@ -16,7 +17,7 @@ */ public class ScriptFunctionMD5 implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "md5"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java index ce14e97..919bd6d 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.math.BigInteger; import java.nio.charset.StandardCharsets; @@ -16,7 +17,7 @@ */ public class ScriptFunctionSHA256 implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "sha256"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java index 33418c4..b225c9d 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; @@ -14,7 +15,7 @@ public class ScriptFunctionDeleteFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "deleteFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java index 8f1e226..4cc1ee7 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; @@ -18,7 +19,7 @@ public class ScriptFunctionDownloadFromUrl implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "downloadFromUrl"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java index d6b55fe..161d5c8 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.nio.file.Files; import java.nio.file.Path; @@ -15,7 +16,7 @@ public class ScriptFunctionExistsFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "existsFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java index abb45a8..6438ce5 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java @@ -4,6 +4,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; /** * Represents a function to join path @@ -11,7 +12,7 @@ public class ScriptFunctionJoinPath implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "joinPath"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java index f87119c..99f3ad6 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.nio.file.Paths; @@ -16,7 +17,7 @@ public class ScriptFunctionListFiles implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "listFiles"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java index c6c4149..60a6ccf 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; @@ -14,7 +15,7 @@ public class ScriptFunctionMoveFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "moveFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java index 0aa0a56..b0f1b02 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java @@ -5,11 +5,12 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; public class ScriptFunctionNormalizePath implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "normalizePath"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java index 73d4d25..1e26a09 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.Files; @@ -16,7 +17,7 @@ public class ScriptFunctionReadFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "readFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java index 7f479b9..2ad1a6a 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.Files; @@ -16,7 +17,7 @@ public class ScriptFunctionWriteFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "writeFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java index c33334b..6c6ae78 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; /** * Represents a function to get environment variable value @@ -12,7 +13,7 @@ public class ScriptFunctionEnv implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "env"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java index 039942f..609c554 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.BufferedReader; import java.io.IOException; @@ -16,7 +17,7 @@ public class ScriptFunctionExecCommand implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "execCommand"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java index e478c62..31f5295 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -14,7 +15,7 @@ public class ScriptFunctionRandomDouble implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "randomDouble"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java index 631fa32..f28ca47 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -14,7 +15,7 @@ public class ScriptFunctionRandomFloat implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "randomFloat"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java index 0ee82de..d67464b 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -14,7 +15,7 @@ public class ScriptFunctionRandomInteger implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "randomInt"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java index 7823c14..96f8d98 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -14,7 +15,7 @@ public class ScriptFunctionRandomLong implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "randomLong"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java index 8329e12..4471083 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java @@ -3,6 +3,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -12,7 +13,7 @@ public class ScriptFunctionRandomUUID implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "randomUUID"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java index 8c275aa..1e37789 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.FileInputStream; @@ -21,7 +22,7 @@ public class ScriptFunctionSmartUnzipFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "smartUnzipFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java index d88781e..572c3ad 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.FileInputStream; @@ -21,7 +22,7 @@ public class ScriptFunctionSmartZipFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "smartZipFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java index 65333f7..edf6d09 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.FileInputStream; @@ -19,7 +20,7 @@ public class ScriptFunctionUnzipFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "unzipFile"; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java index c41026e..907d5a1 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.FileInputStream; @@ -19,7 +20,7 @@ public class ScriptFunctionZipFile implements ScriptFunction { @Override - public String getName() { + public @NotNull String getName() { return "zipFile"; } diff --git a/script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java b/script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java new file mode 100644 index 0000000..6a880ec --- /dev/null +++ b/script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java @@ -0,0 +1,14 @@ +package com.instancify.scriptify.script; + +import com.instancify.scriptify.core.script.function.StandardFunctionManager; + +public class Test { + + public static void main(String[] args) { + JsScript script = new JsScript(); +// script.getFunctionManager().register(null); + + script.setFunctionManager(new StandardFunctionManager()); + script.getFunctionManager().register(null); + } +} From b90e1d47c4eda3546fa006d208dbced0a2b00710 Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 11:20:59 +0200 Subject: [PATCH 02/13] feat: added return value on script evaluation --- .../instancify/scriptify/api/script/Script.java | 4 ++-- .../com/instancify/scriptify/script/JsScript.java | 6 +++--- .../com/instancify/scriptify/script/JsScript.java | 6 +++--- .../java/com/instancify/scriptify/script/Test.java | 14 -------------- 4 files changed, 8 insertions(+), 22 deletions(-) delete mode 100644 script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java diff --git a/api/src/main/java/com/instancify/scriptify/api/script/Script.java b/api/src/main/java/com/instancify/scriptify/api/script/Script.java index cf0333d..b88c802 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/Script.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/Script.java @@ -6,7 +6,7 @@ /** * Defines the structure of a script that can be executed. */ -public interface Script { +public interface Script { /** * Retrieves the function manager associated with this script. @@ -43,5 +43,5 @@ public interface Script { /** * Evaluates and executes this script. */ - void eval(String script); + T eval(String script); } diff --git a/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java b/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java index 9f3b06a..1f5797d 100644 --- a/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java +++ b/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java @@ -7,7 +7,7 @@ import com.instancify.scriptify.api.script.function.ScriptFunctionManager; import org.graalvm.polyglot.*; -public class JsScript implements Script { +public class JsScript implements Script { private final Context context = Context.create(); private ScriptFunctionManager functionManager; @@ -34,7 +34,7 @@ public void setConstantManager(ScriptConstantManager constantManager) { } @Override - public void eval(String script) { + public Value eval(String script) { Value bindings = context.getBindings("js"); if (functionManager != null) { @@ -49,6 +49,6 @@ public void eval(String script) { } } - context.eval("js", script); + return context.eval("js", script); } } diff --git a/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java b/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java index 3ef0c9e..dcf3a9e 100644 --- a/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java +++ b/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java @@ -8,7 +8,7 @@ import org.mozilla.javascript.Context; import org.mozilla.javascript.ScriptableObject; -public class JsScript implements Script { +public class JsScript implements Script { private final Context context = Context.enter(); private final ScriptableObject scope = context.initStandardObjects(); @@ -36,7 +36,7 @@ public void setConstantManager(ScriptConstantManager constantManager) { } @Override - public void eval(String script) { + public Object eval(String script) { if (functionManager != null) { for (ScriptFunction function : functionManager.getFunctions().values()) { scope.put(function.getName(), scope, new JsFunction(this, function)); @@ -49,6 +49,6 @@ public void eval(String script) { } } - context.evaluateString(scope, script, null, 1, null); + return context.evaluateString(scope, script, null, 1, null); } } diff --git a/script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java b/script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java deleted file mode 100644 index 6a880ec..0000000 --- a/script-js-rhino/src/main/java/com/instancify/scriptify/script/Test.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.instancify.scriptify.script; - -import com.instancify.scriptify.core.script.function.StandardFunctionManager; - -public class Test { - - public static void main(String[] args) { - JsScript script = new JsScript(); -// script.getFunctionManager().register(null); - - script.setFunctionManager(new StandardFunctionManager()); - script.getFunctionManager().register(null); - } -} From fcdfb991d5219101a321247da2216e3c1704168c Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 11:22:59 +0200 Subject: [PATCH 03/13] docs(javadoc): update javadoc for script --- .../main/java/com/instancify/scriptify/api/script/Script.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/src/main/java/com/instancify/scriptify/api/script/Script.java b/api/src/main/java/com/instancify/scriptify/api/script/Script.java index b88c802..9df02b9 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/Script.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/Script.java @@ -5,6 +5,8 @@ /** * Defines the structure of a script that can be executed. + * + * @param Type of value returned by the script after evaluation */ public interface Script { From 337e43a69b500795efa140ad8a0bb33fc3543e25 Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 11:34:46 +0200 Subject: [PATCH 04/13] feat: remove methods for function and constant manager + exception when registering a function or constant that already exists --- .../script/constant/ScriptConstantManager.java | 7 +++++++ .../script/function/ScriptFunctionManager.java | 7 +++++++ .../script/constant/StandardConstantManager.java | 15 ++++++++++++++- .../script/function/StandardFunctionManager.java | 15 ++++++++++++++- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java b/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java index ec4b2b7..0141ba1 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/constant/ScriptConstantManager.java @@ -32,4 +32,11 @@ public interface ScriptConstantManager { * @param constant The constant to be registered */ void register(ScriptConstant constant); + + /** + * Removes an existing constant in the manager. + * + * @param name The name of the constant to remove + */ + void remove(String name); } diff --git a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java index 4213adf..62cc0f9 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunctionManager.java @@ -32,4 +32,11 @@ public interface ScriptFunctionManager { * @param function The function to be registered */ void register(ScriptFunction function); + + /** + * Removes an existing function in the manager. + * + * @param name The name of the function to remove + */ + void remove(String name); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/constant/StandardConstantManager.java b/core/src/main/java/com/instancify/scriptify/core/script/constant/StandardConstantManager.java index f3356b9..e889c42 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/constant/StandardConstantManager.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/constant/StandardConstantManager.java @@ -24,6 +24,19 @@ public Map getConstants() { @Override public void register(ScriptConstant constant) { - constants.put(constant.getName(), constant); + if (!constants.containsKey(constant.getName())) { + constants.put(constant.getName(), constant); + } else { + throw new IllegalStateException("The constant with this name already exists"); + } + } + + @Override + public void remove(String name) { + if (constants.containsKey(name)) { + constants.remove(name); + } else { + throw new IllegalArgumentException("The constant with this name does not exist"); + } } } \ No newline at end of file diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/StandardFunctionManager.java b/core/src/main/java/com/instancify/scriptify/core/script/function/StandardFunctionManager.java index 93db8ea..a241662 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/StandardFunctionManager.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/StandardFunctionManager.java @@ -60,6 +60,19 @@ public Map getFunctions() { @Override public void register(ScriptFunction function) { - functions.put(function.getName(), function); + if (!functions.containsKey(function.getName())) { + functions.put(function.getName(), function); + } else { + throw new IllegalStateException("The function with this name already exists"); + } + } + + @Override + public void remove(String name) { + if (functions.containsKey(name)) { + functions.remove(name); + } else { + throw new IllegalArgumentException("The function with this name does not exist"); + } } } \ No newline at end of file From 09ce39ceed4922aa6c7def54d69b4848a5fbc7d4 Mon Sep 17 00:00:00 2001 From: Koshak_Mine <52908036+KoshakMineDEV@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:45:12 +0300 Subject: [PATCH 05/13] fix: Script with generic --- .../scriptify/api/script/function/ScriptFunction.java | 2 +- .../core/script/function/impl/ScriptFunctionPrint.java | 2 +- .../core/script/function/impl/ScriptFunctionShuffleArray.java | 2 +- .../script/function/impl/crypto/ScriptFunctionBase64Decode.java | 2 +- .../script/function/impl/crypto/ScriptFunctionBase64Encode.java | 2 +- .../core/script/function/impl/crypto/ScriptFunctionMD5.java | 2 +- .../core/script/function/impl/crypto/ScriptFunctionSHA256.java | 2 +- .../script/function/impl/file/ScriptFunctionDeleteFile.java | 2 +- .../function/impl/file/ScriptFunctionDownloadFromUrl.java | 2 +- .../script/function/impl/file/ScriptFunctionExistsFile.java | 2 +- .../core/script/function/impl/file/ScriptFunctionJoinPath.java | 2 +- .../core/script/function/impl/file/ScriptFunctionListFiles.java | 2 +- .../core/script/function/impl/file/ScriptFunctionMoveFile.java | 2 +- .../script/function/impl/file/ScriptFunctionNormalizePath.java | 2 +- .../core/script/function/impl/file/ScriptFunctionReadFile.java | 2 +- .../core/script/function/impl/file/ScriptFunctionWriteFile.java | 2 +- .../core/script/function/impl/os/ScriptFunctionEnv.java | 2 +- .../core/script/function/impl/os/ScriptFunctionExecCommand.java | 2 +- .../script/function/impl/random/ScriptFunctionRandomDouble.java | 2 +- .../script/function/impl/random/ScriptFunctionRandomFloat.java | 2 +- .../function/impl/random/ScriptFunctionRandomInteger.java | 2 +- .../script/function/impl/random/ScriptFunctionRandomLong.java | 2 +- .../script/function/impl/random/ScriptFunctionRandomUUID.java | 2 +- .../script/function/impl/zip/ScriptFunctionSmartUnzipFile.java | 2 +- .../script/function/impl/zip/ScriptFunctionSmartZipFile.java | 2 +- .../core/script/function/impl/zip/ScriptFunctionUnzipFile.java | 2 +- .../core/script/function/impl/zip/ScriptFunctionZipFile.java | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java index b024d3d..79a8c51 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java @@ -25,5 +25,5 @@ public interface ScriptFunction { * @return The result of the function execution * @throws ScriptFunctionException If there's an error during invocation */ - @Nullable Object invoke(Script script, Object[] args) throws ScriptFunctionException; + @Nullable Object invoke(Script script, Object[] args) throws ScriptFunctionException; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java index 17fe46a..dc75db0 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java @@ -18,7 +18,7 @@ public class ScriptFunctionPrint implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) { + public Object invoke(Script script, Object[] args) { System.out.println(Arrays.stream(args).map(String::valueOf).collect(Collectors.joining(" "))); return null; } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java index 9b62343..122eef5 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java @@ -22,7 +22,7 @@ public class ScriptFunctionShuffleArray implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java index 5490c69..5533964 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java @@ -20,7 +20,7 @@ public class ScriptFunctionBase64Decode implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java index 4f2bbec..28f35a7 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java @@ -19,7 +19,7 @@ public class ScriptFunctionBase64Encode implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java index b2ecaad..35a8a26 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java @@ -22,7 +22,7 @@ public class ScriptFunctionMD5 implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java index 919bd6d..6f9a323 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java @@ -22,7 +22,7 @@ public class ScriptFunctionSHA256 implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java index b225c9d..6dbb05f 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java @@ -20,7 +20,7 @@ public class ScriptFunctionDeleteFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length > 2 || args.length < 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java index 4cc1ee7..133acd9 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java @@ -24,7 +24,7 @@ public class ScriptFunctionDownloadFromUrl implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java index 161d5c8..60cbddb 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java @@ -21,7 +21,7 @@ public class ScriptFunctionExistsFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length == 1) { if (args[0] instanceof String filePath) { return Files.exists(Path.of(filePath)); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java index 6438ce5..4d1dbdf 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java @@ -17,7 +17,7 @@ public class ScriptFunctionJoinPath implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { String path = ""; for (Object arg : args) { if (arg instanceof String segment) { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java index 99f3ad6..cc6e388 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java @@ -22,7 +22,7 @@ public class ScriptFunctionListFiles implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length == 1) { if (args[0] instanceof String filePath) { File folder = Paths.get(filePath).toAbsolutePath().toFile(); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java index 60a6ccf..4a9f3d0 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java @@ -20,7 +20,7 @@ public class ScriptFunctionMoveFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java index b0f1b02..2ae4f17 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java @@ -15,7 +15,7 @@ public class ScriptFunctionNormalizePath implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java index 1e26a09..cc527bd 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java @@ -22,7 +22,7 @@ public class ScriptFunctionReadFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length == 1) { if (args[0] instanceof String filePath) { try { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java index 2ad1a6a..3b70be0 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java @@ -22,7 +22,7 @@ public class ScriptFunctionWriteFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length == 2) { if (args[0] instanceof String filePath && args[1] instanceof String fileContent) { try { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java index 6c6ae78..b93efb5 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java @@ -18,7 +18,7 @@ public class ScriptFunctionEnv implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java index 609c554..890bd29 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java @@ -22,7 +22,7 @@ public class ScriptFunctionExecCommand implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java index 31f5295..cc7cd76 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java @@ -20,7 +20,7 @@ public class ScriptFunctionRandomDouble implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java index f28ca47..75c14f3 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java @@ -20,7 +20,7 @@ public class ScriptFunctionRandomFloat implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java index d67464b..50f4a78 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java @@ -20,7 +20,7 @@ public class ScriptFunctionRandomInteger implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java index 96f8d98..6119dbe 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java @@ -20,7 +20,7 @@ public class ScriptFunctionRandomLong implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java index 4471083..691d5a1 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java @@ -18,7 +18,7 @@ public class ScriptFunctionRandomUUID implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { return UUID.randomUUID().toString(); } } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java index 1e37789..234cc29 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java @@ -27,7 +27,7 @@ public class ScriptFunctionSmartUnzipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 3) { throw new ScriptFunctionArgsCountException(3, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java index 572c3ad..0348253 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java @@ -27,7 +27,7 @@ public class ScriptFunctionSmartZipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 3) { throw new ScriptFunctionArgsCountException(3, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java index edf6d09..0ef0559 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java @@ -25,7 +25,7 @@ public class ScriptFunctionUnzipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java index 907d5a1..1dba5db 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java @@ -25,7 +25,7 @@ public class ScriptFunctionZipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, Object[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } From 051f78ca773c68b3ca5ea4c3923a35126b3e14de Mon Sep 17 00:00:00 2001 From: Koshak_Mine <52908036+KoshakMineDEV@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:49:31 +0300 Subject: [PATCH 06/13] chore: update rhino --- script-js-rhino/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script-js-rhino/build.gradle.kts b/script-js-rhino/build.gradle.kts index 9b9455c..0e1519b 100644 --- a/script-js-rhino/build.gradle.kts +++ b/script-js-rhino/build.gradle.kts @@ -8,5 +8,5 @@ repositories { dependencies { api(project(":core")) - api("org.mozilla:rhino:1.7.15") + api("org.mozilla:rhino:1.8.0") } \ No newline at end of file From e0b1a397659eb24a58b78950fe383a78795df828 Mon Sep 17 00:00:00 2001 From: Koshak_Mine <52908036+KoshakMineDEV@users.noreply.github.com> Date: Sat, 4 Jan 2025 13:03:08 +0300 Subject: [PATCH 07/13] feat: introduce ScriptFunctionArgument Co-authored-by: MEFRREEX classOf) { + return classOf.isInstance(getValue()); + } + + /** + * Casts the value of this argument to the specified class type. + * + * @param The type to cast to + * @param classOf The class representing the type to cast to + * @return The value cast to the specified type + * @throws ClassCastException if the value cannot be cast to the specified type + */ + default T as(Class classOf) { + return classOf.cast(getValue()); + } + + /** + * Creates a new ScriptFunctionArgument with the given value. + * + * @param value The value to be wrapped as an argument + * @return A new ScriptFunctionArgument instance + */ + static ScriptFunctionArgument of(Object value) { + return () -> value; + } +} \ No newline at end of file From 989e289dc9faf88db6aad7ee4cc9cad47dfc0dfb Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 12:17:28 +0200 Subject: [PATCH 08/13] feat: start working on ScriptFunctionArgument --- .../api/script/function/ScriptFunction.java | 3 +- .../argument/ScriptFunctionArgument.java | 46 +++++++++++++++++++ .../function/impl/ScriptFunctionPrint.java | 5 +- .../impl/ScriptFunctionShuffleArray.java | 7 +-- .../scriptify/script/JsFunction.java | 9 ++-- .../scriptify/script/JsFunction.java | 7 ++- 6 files changed, 66 insertions(+), 11 deletions(-) create mode 100644 api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java diff --git a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java index 79a8c51..a6c86b3 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/function/ScriptFunction.java @@ -2,6 +2,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -25,5 +26,5 @@ public interface ScriptFunction { * @return The result of the function execution * @throws ScriptFunctionException If there's an error during invocation */ - @Nullable Object invoke(Script script, Object[] args) throws ScriptFunctionException; + @Nullable Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException; } diff --git a/api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java b/api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java new file mode 100644 index 0000000..fc047be --- /dev/null +++ b/api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java @@ -0,0 +1,46 @@ +package com.instancify.scriptify.api.script.function.argument; + +/** + * Represents an argument that can be passed to a script function. + */ +public interface ScriptFunctionArgument { + + /** + * Retrieves the value of this argument. + * + * @return The value of the argument + */ + Object getValue(); + + /** + * Checks if the value of this argument is an instance of the specified class. + * + * @param classOf The class to check against + * @return true if the value is an instance of the given class, false otherwise + */ + default boolean is(Class classOf) { + return classOf.isInstance(getValue()); + } + + /** + * Casts the value of this argument to the specified class type. + * + * @param The type to cast to + * @param classOf The class representing the type to cast to + * @return The value cast to the specified type + * @throws ClassCastException if the value cannot be cast to the specified type + */ + default T as(Class classOf) { + return classOf.cast(getValue()); + } + + /** + * Creates a new ScriptFunctionArgument with the given value. + * + * @param value The value to be wrapped as an argument + * @return A new ScriptFunctionArgument instance + */ + static ScriptFunctionArgument of(Object value) { + return () -> value; + } +} diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java index dc75db0..7da002e 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionPrint.java @@ -2,6 +2,7 @@ import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -18,8 +19,8 @@ public class ScriptFunctionPrint implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) { - System.out.println(Arrays.stream(args).map(String::valueOf).collect(Collectors.joining(" "))); + public Object invoke(Script script, ScriptFunctionArgument[] args) { + System.out.println(Arrays.stream(args).map(arg -> arg.getValue().toString()).collect(Collectors.joining(" "))); return null; } } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java index 122eef5..f4aea90 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -22,13 +23,13 @@ public class ScriptFunctionShuffleArray implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof List array)) { - throw new ScriptFunctionArgTypeException(List.class, args[0].getClass()); + if (!(args[0].getValue() instanceof List array)) { + throw new ScriptFunctionArgTypeException(List.class, args[0].getValue().getClass()); } List list = new ArrayList(array); diff --git a/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsFunction.java b/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsFunction.java index 7646ed7..5e344e4 100644 --- a/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsFunction.java +++ b/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsFunction.java @@ -3,24 +3,25 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.graalvm.polyglot.proxy.ProxyExecutable; import org.graalvm.polyglot.Value; public class JsFunction implements ProxyExecutable { - private final Script script; + private final Script script; private final ScriptFunction function; - public JsFunction(Script script, ScriptFunction function) { + public JsFunction(Script script, ScriptFunction function) { this.script = script; this.function = function; } @Override public Object execute(Value... arguments) { - Object[] args = new Object[arguments.length]; + ScriptFunctionArgument[] args = new ScriptFunctionArgument[arguments.length]; for (int i = 0; i < arguments.length; i++) { - args[i] = arguments[i].as(Object.class); + args[i] = ScriptFunctionArgument.of(arguments[i].as(Object.class)); } try { return function.invoke(script, args); diff --git a/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsFunction.java b/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsFunction.java index 899537a..2fc0c75 100644 --- a/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsFunction.java +++ b/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsFunction.java @@ -2,6 +2,7 @@ import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.mozilla.javascript.Context; import org.mozilla.javascript.Function; import org.mozilla.javascript.Scriptable; @@ -17,7 +18,11 @@ public JsFunction(Script script, ScriptFunction function) { } @Override - public Object call(Context context, Scriptable scriptable, Scriptable scriptable1, Object[] args) { + public Object call(Context context, Scriptable scriptable, Scriptable scriptable1, Object[] arguments) { + ScriptFunctionArgument[] args = new ScriptFunctionArgument[arguments.length]; + for (int i = 0; i < arguments.length; i++) { + args[i] = ScriptFunctionArgument.of(arguments[i]); + } try { return function.invoke(script, args); } catch (Exception e) { From 02e27d09c082cbb4b4c5891ffa080416c82b6487 Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 12:21:06 +0200 Subject: [PATCH 09/13] feat: added ScriptFunctionArgument#getType --- .../script/function/argument/ScriptFunctionArgument.java | 9 +++++++++ .../script/function/impl/ScriptFunctionShuffleArray.java | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java b/api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java index fc047be..43ed30f 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/function/argument/ScriptFunctionArgument.java @@ -12,6 +12,15 @@ public interface ScriptFunctionArgument { */ Object getValue(); + /** + * Retrieves type the of value of this argument. + * + * @return Type the value of the argument + */ + default Class getType() { + return this.getValue().getClass(); + } + /** * Checks if the value of this argument is an instance of the specified class. * diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java index f4aea90..9a86472 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/ScriptFunctionShuffleArray.java @@ -29,7 +29,7 @@ public Object invoke(Script script, ScriptFunctionArgument[] args) throws Scr } if (!(args[0].getValue() instanceof List array)) { - throw new ScriptFunctionArgTypeException(List.class, args[0].getValue().getClass()); + throw new ScriptFunctionArgTypeException(List.class, args[0].getType()); } List list = new ArrayList(array); From 120008608997114c357a02373e799b5819cd6d9f Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 12:24:27 +0200 Subject: [PATCH 10/13] fix: use ScriptFunctionArgument for crypto function --- .../function/impl/crypto/ScriptFunctionBase64Decode.java | 5 +++-- .../function/impl/crypto/ScriptFunctionBase64Encode.java | 7 ++++--- .../script/function/impl/crypto/ScriptFunctionMD5.java | 7 ++++--- .../script/function/impl/crypto/ScriptFunctionSHA256.java | 7 ++++--- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java index 5533964..274c166 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Decode.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.nio.charset.StandardCharsets; @@ -20,12 +21,12 @@ public class ScriptFunctionBase64Decode implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String str)) { + if (!(args[0].getValue() instanceof String str)) { throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java index 28f35a7..7c30e0c 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionBase64Encode.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.Base64; @@ -19,13 +20,13 @@ public class ScriptFunctionBase64Encode implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String str)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String str)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } return Base64.getEncoder().encodeToString(str.getBytes()); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java index 35a8a26..824f3b7 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionMD5.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.math.BigInteger; @@ -22,13 +23,13 @@ public class ScriptFunctionMD5 implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String input)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String input)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } try { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java index 6f9a323..08ac8b0 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/crypto/ScriptFunctionSHA256.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.math.BigInteger; @@ -22,13 +23,13 @@ public class ScriptFunctionSHA256 implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String input)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String input)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } try { From cdedd574788884ec4f2098b64132590b4b34032b Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 12:31:11 +0200 Subject: [PATCH 11/13] fix: use ScriptFunctionArgument for os and zip functions --- .../function/impl/os/ScriptFunctionEnv.java | 7 ++++--- .../impl/os/ScriptFunctionExecCommand.java | 7 ++++--- .../impl/zip/ScriptFunctionSmartUnzipFile.java | 15 ++++++++------- .../impl/zip/ScriptFunctionSmartZipFile.java | 15 ++++++++------- .../impl/zip/ScriptFunctionUnzipFile.java | 11 ++++++----- .../function/impl/zip/ScriptFunctionZipFile.java | 11 ++++++----- 6 files changed, 36 insertions(+), 30 deletions(-) diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java index b93efb5..2d11365 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionEnv.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; /** @@ -18,13 +19,13 @@ public class ScriptFunctionEnv implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String name)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String name)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } return System.getenv(name); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java index 890bd29..1a8c884 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/os/ScriptFunctionExecCommand.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.BufferedReader; @@ -22,13 +23,13 @@ public class ScriptFunctionExecCommand implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String input)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String input)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } try { Process process = Runtime.getRuntime().exec(input); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java index 234cc29..a3fc5f2 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartUnzipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -27,19 +28,19 @@ public class ScriptFunctionSmartUnzipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 3) { throw new ScriptFunctionArgsCountException(3, args.length); } - if (!(args[0] instanceof String compressedFilePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String compressedFilePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } - if (!(args[1] instanceof String decompressedPath)) { - throw new ScriptFunctionArgTypeException(String.class, args[1].getClass()); + if (!(args[1].getValue() instanceof String decompressedPath)) { + throw new ScriptFunctionArgTypeException(String.class, args[1].getType()); } - if (!(args[2] instanceof List patterns)) { - throw new ScriptFunctionArgTypeException(List.class, args[2].getClass()); + if (!(args[2].getValue() instanceof List patterns)) { + throw new ScriptFunctionArgTypeException(List.class, args[2].getType()); } try { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java index 0348253..c658a6f 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionSmartZipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -27,19 +28,19 @@ public class ScriptFunctionSmartZipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 3) { throw new ScriptFunctionArgsCountException(3, args.length); } - if (!(args[0] instanceof String filesPath)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String filesPath)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } - if (!(args[1] instanceof String compressedFilePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[1].getClass()); + if (!(args[1].getValue() instanceof String compressedFilePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[1].getType()); } - if (!(args[2] instanceof List patterns)) { - throw new ScriptFunctionArgTypeException(List.class, args[2].getClass()); + if (!(args[2].getValue() instanceof List patterns)) { + throw new ScriptFunctionArgTypeException(List.class, args[2].getType()); } try { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java index 0ef0559..60f6580 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionUnzipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -25,16 +26,16 @@ public class ScriptFunctionUnzipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } - if (!(args[0] instanceof String compressedFilePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String compressedFilePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } - if (!(args[1] instanceof String decompressedPath)) { - throw new ScriptFunctionArgTypeException(String.class, args[1].getClass()); + if (!(args[1].getValue() instanceof String decompressedPath)) { + throw new ScriptFunctionArgTypeException(String.class, args[1].getType()); } try { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java index 1dba5db..f93cb86 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/zip/ScriptFunctionZipFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -25,16 +26,16 @@ public class ScriptFunctionZipFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } - if (!(args[0] instanceof String filePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String filePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } - if (!(args[1] instanceof String compressedFilePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[1].getClass()); + if (!(args[1].getValue() instanceof String compressedFilePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[1].getType()); } try { From 35ccdc226e44c98d301ff0a5c23ac0b1fa9629f9 Mon Sep 17 00:00:00 2001 From: Koshak_Mine <52908036+KoshakMineDEV@users.noreply.github.com> Date: Sat, 4 Jan 2025 13:33:19 +0300 Subject: [PATCH 12/13] refactor: use ScriptFunctionArgument in file & random --------- Co-authored-by: MEFRREEX --- .../impl/file/ScriptFunctionDeleteFile.java | 11 ++++++----- .../impl/file/ScriptFunctionDownloadFromUrl.java | 11 ++++++----- .../impl/file/ScriptFunctionExistsFile.java | 7 ++++--- .../impl/file/ScriptFunctionJoinPath.java | 9 +++++---- .../impl/file/ScriptFunctionListFiles.java | 7 ++++--- .../impl/file/ScriptFunctionMoveFile.java | 11 ++++++----- .../impl/file/ScriptFunctionNormalizePath.java | 7 ++++--- .../impl/file/ScriptFunctionReadFile.java | 7 ++++--- .../impl/file/ScriptFunctionWriteFile.java | 7 ++++--- .../impl/random/ScriptFunctionRandomDouble.java | 15 ++++++++------- .../impl/random/ScriptFunctionRandomFloat.java | 15 ++++++++------- .../impl/random/ScriptFunctionRandomInteger.java | 15 ++++++++------- .../impl/random/ScriptFunctionRandomLong.java | 15 ++++++++------- .../impl/random/ScriptFunctionRandomUUID.java | 3 ++- 14 files changed, 77 insertions(+), 63 deletions(-) diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java index 6dbb05f..0ded336 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDeleteFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -20,20 +21,20 @@ public class ScriptFunctionDeleteFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length > 2 || args.length < 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String filePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String filePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } if (args.length == 1) { return new File(filePath).delete(); } - if (!(args[1] instanceof Boolean recursive)) { - throw new ScriptFunctionArgTypeException(Boolean.class, args[1].getClass()); + if (!(args[1].getValue() instanceof Boolean recursive)) { + throw new ScriptFunctionArgTypeException(Boolean.class, args[1].getType()); } File file = new File(filePath); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java index 133acd9..d659cf1 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionDownloadFromUrl.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -24,16 +25,16 @@ public class ScriptFunctionDownloadFromUrl implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } - if (!(args[0] instanceof String url)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String url)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } - if (!(args[1] instanceof String filePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[1].getClass()); + if (!(args[1].getValue() instanceof String filePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[1].getType()); } try (InputStream in = new URL(url).openStream()) { diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java index 60cbddb..41f5726 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionExistsFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.nio.file.Files; @@ -21,12 +22,12 @@ public class ScriptFunctionExistsFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length == 1) { - if (args[0] instanceof String filePath) { + if (args[0].getValue() instanceof String filePath) { return Files.exists(Path.of(filePath)); } else { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } } else { throw new ScriptFunctionArgsCountException(1, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java index 4d1dbdf..55ee2f8 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionJoinPath.java @@ -4,6 +4,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; /** @@ -17,17 +18,17 @@ public class ScriptFunctionJoinPath implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { String path = ""; - for (Object arg : args) { - if (arg instanceof String segment) { + for (ScriptFunctionArgument arg : args) { + if (arg.getValue() instanceof String segment) { if (path.isEmpty()) { path += segment; } else { path += '/' + segment; } } else { - throw new ScriptFunctionArgTypeException(String.class, args[1].getClass()); + throw new ScriptFunctionArgTypeException(String.class, args[1].getType()); } } return path; diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java index cc6e388..14ceb6e 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionListFiles.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -22,9 +23,9 @@ public class ScriptFunctionListFiles implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length == 1) { - if (args[0] instanceof String filePath) { + if (args[0].getValue() instanceof String filePath) { File folder = Paths.get(filePath).toAbsolutePath().toFile(); if (folder.isDirectory()) { return Arrays.stream(folder.listFiles()).map(File::getAbsolutePath).toList(); @@ -32,7 +33,7 @@ public Object invoke(Script script, Object[] args) throws ScriptFunctionExcep throw new ScriptFunctionException("File is not a folder"); } } else { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } } else { throw new ScriptFunctionArgsCountException(1, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java index 4a9f3d0..3174c48 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionMoveFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.File; @@ -20,16 +21,16 @@ public class ScriptFunctionMoveFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 2) { throw new ScriptFunctionArgsCountException(2, args.length); } - if (!(args[0] instanceof String originalFilePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String originalFilePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } - if (!(args[1] instanceof String targetFilePath)) { - throw new ScriptFunctionArgTypeException(String.class, args[1].getClass()); + if (!(args[1].getValue() instanceof String targetFilePath)) { + throw new ScriptFunctionArgTypeException(String.class, args[1].getType()); } File fileToMove = new File(originalFilePath); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java index 2ae4f17..890cd1c 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionNormalizePath.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; public class ScriptFunctionNormalizePath implements ScriptFunction { @@ -15,13 +16,13 @@ public class ScriptFunctionNormalizePath implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length != 1) { throw new ScriptFunctionArgsCountException(1, args.length); } - if (!(args[0] instanceof String path)) { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + if (!(args[0].getValue() instanceof String path)) { + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } return path.replace('\\', '/'); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java index cc527bd..7bc6261 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionReadFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -22,16 +23,16 @@ public class ScriptFunctionReadFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length == 1) { - if (args[0] instanceof String filePath) { + if (args[0].getValue() instanceof String filePath) { try { return Files.readString(Path.of(filePath)); } catch (IOException e) { throw new ScriptFunctionException(e); } } else { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } } else { throw new ScriptFunctionArgsCountException(1, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java index 3b70be0..69c881d 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/file/ScriptFunctionWriteFile.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -22,16 +23,16 @@ public class ScriptFunctionWriteFile implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { if (args.length == 2) { - if (args[0] instanceof String filePath && args[1] instanceof String fileContent) { + if (args[0].getValue() instanceof String filePath && args[1].getValue() instanceof String fileContent) { try { return Files.writeString(Path.of(filePath), fileContent); } catch (IOException e) { throw new ScriptFunctionException(e); } } else { - throw new ScriptFunctionArgTypeException(String.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(String.class, args[0].getType()); } } else { throw new ScriptFunctionArgsCountException(2, args.length); diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java index cc7cd76..3c7d8bc 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomDouble.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -20,26 +21,26 @@ public class ScriptFunctionRandomDouble implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); if (args.length == 1) { - if (args[0] instanceof Number max) { + if (args[0].getValue() instanceof Number max) { return random.nextDouble(max.doubleValue()); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } - if (args[0] instanceof Number min) { - if (args[1] instanceof Number max) { + if (args[0].getValue() instanceof Number min) { + if (args[1].getValue() instanceof Number max) { return random.nextDouble(max.doubleValue() - min.doubleValue()) + min.doubleValue(); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[1].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[1].getType()); } } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java index 75c14f3..7201231 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomFloat.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -20,26 +21,26 @@ public class ScriptFunctionRandomFloat implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); if (args.length == 1) { - if (args[0] instanceof Number max) { + if (args[0].getValue() instanceof Number max) { return random.nextFloat(max.floatValue()); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } - if (args[0] instanceof Number min) { - if (args[1] instanceof Number max) { + if (args[0].getValue() instanceof Number min) { + if (args[1].getValue() instanceof Number max) { return random.nextFloat(max.floatValue() - min.floatValue()) + min.floatValue(); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[1].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[1].getType()); } } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java index 50f4a78..a7c4ab8 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomInteger.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -20,26 +21,26 @@ public class ScriptFunctionRandomInteger implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); if (args.length == 1) { - if (args[0] instanceof Number max) { + if (args[0].getValue() instanceof Number max) { return random.nextInt(max.intValue()); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } - if (args[0] instanceof Number min) { - if (args[1] instanceof Number max) { + if (args[0].getValue() instanceof Number min) { + if (args[1].getValue() instanceof Number max) { return random.nextInt(max.intValue() - min.intValue()) + min.intValue(); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[1].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[1].getType()); } } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java index 6119dbe..123555f 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomLong.java @@ -5,6 +5,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -20,26 +21,26 @@ public class ScriptFunctionRandomLong implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { Random random = new Random(); if (args.length > 2 || args.length < 1) throw new ScriptFunctionArgsCountException(1, args.length); if (args.length == 1) { - if (args[0] instanceof Number max) { + if (args[0].getValue() instanceof Number max) { return random.nextLong(max.longValue()); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } - if (args[0] instanceof Number min) { - if (args[1] instanceof Number max) { + if (args[0].getValue() instanceof Number min) { + if (args[1].getValue() instanceof Number max) { return random.nextLong(max.longValue() - min.longValue()) + min.longValue(); } else { - throw new ScriptFunctionArgTypeException(Number.class, args[1].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[1].getType()); } } else { - throw new ScriptFunctionArgTypeException(Number.class, args[0].getClass()); + throw new ScriptFunctionArgTypeException(Number.class, args[0].getType()); } } } diff --git a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java index 691d5a1..34762b9 100644 --- a/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java +++ b/core/src/main/java/com/instancify/scriptify/core/script/function/impl/random/ScriptFunctionRandomUUID.java @@ -3,6 +3,7 @@ import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.function.ScriptFunction; +import com.instancify.scriptify.api.script.function.argument.ScriptFunctionArgument; import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -18,7 +19,7 @@ public class ScriptFunctionRandomUUID implements ScriptFunction { } @Override - public Object invoke(Script script, Object[] args) throws ScriptFunctionException { + public Object invoke(Script script, ScriptFunctionArgument[] args) throws ScriptFunctionException { return UUID.randomUUID().toString(); } } From 218391753db1b611a5f6da53764637c74a20177c Mon Sep 17 00:00:00 2001 From: MEFRREEX Date: Sat, 4 Jan 2025 12:42:58 +0200 Subject: [PATCH 13/13] feat: added ScriptException + ScriptException throws in Script#eval --- .../api/exception/ScriptException.java | 35 +++++++++++++++++++ .../exception/ScriptFunctionException.java | 2 +- .../scriptify/api/script/Script.java | 6 +++- .../instancify/scriptify/script/JsScript.java | 9 +++-- .../instancify/scriptify/script/JsScript.java | 9 +++-- 5 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 api/src/main/java/com/instancify/scriptify/api/exception/ScriptException.java diff --git a/api/src/main/java/com/instancify/scriptify/api/exception/ScriptException.java b/api/src/main/java/com/instancify/scriptify/api/exception/ScriptException.java new file mode 100644 index 0000000..be11d99 --- /dev/null +++ b/api/src/main/java/com/instancify/scriptify/api/exception/ScriptException.java @@ -0,0 +1,35 @@ +package com.instancify.scriptify.api.exception; + +/** + * Custom exception for errors in script functions. + */ +public class ScriptException extends Exception { + + /** + * Creates a new ScriptException with the specified message. + * + * @param message the detail message + */ + public ScriptException(String message) { + super(message); + } + + /** + * Creates a new ScriptException with the specified message and cause. + * + * @param message the detail message + * @param cause the cause of the exception + */ + public ScriptException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Creates a new ScriptException with the specified cause. + * + * @param cause the cause of the exception + */ + public ScriptException(Throwable cause) { + super(cause); + } +} diff --git a/api/src/main/java/com/instancify/scriptify/api/exception/ScriptFunctionException.java b/api/src/main/java/com/instancify/scriptify/api/exception/ScriptFunctionException.java index 6084628..7d1c5ca 100644 --- a/api/src/main/java/com/instancify/scriptify/api/exception/ScriptFunctionException.java +++ b/api/src/main/java/com/instancify/scriptify/api/exception/ScriptFunctionException.java @@ -3,7 +3,7 @@ /** * Custom exception for errors in script functions. */ -public class ScriptFunctionException extends Exception { +public class ScriptFunctionException extends ScriptException { /** * Creates a new ScriptFunctionException with the specified message. diff --git a/api/src/main/java/com/instancify/scriptify/api/script/Script.java b/api/src/main/java/com/instancify/scriptify/api/script/Script.java index 9df02b9..0240a0b 100644 --- a/api/src/main/java/com/instancify/scriptify/api/script/Script.java +++ b/api/src/main/java/com/instancify/scriptify/api/script/Script.java @@ -1,5 +1,7 @@ package com.instancify.scriptify.api.script; +import com.instancify.scriptify.api.exception.ScriptException; +import com.instancify.scriptify.api.exception.ScriptFunctionException; import com.instancify.scriptify.api.script.constant.ScriptConstantManager; import com.instancify.scriptify.api.script.function.ScriptFunctionManager; @@ -44,6 +46,8 @@ public interface Script { /** * Evaluates and executes this script. + * + * @throws ScriptFunctionException If there's an error during script evaluation */ - T eval(String script); + T eval(String script) throws ScriptException; } diff --git a/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java b/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java index 1f5797d..8801278 100644 --- a/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java +++ b/script-js-graalvm/src/main/java/com/instancify/scriptify/script/JsScript.java @@ -1,5 +1,6 @@ package com.instancify.scriptify.script; +import com.instancify.scriptify.api.exception.ScriptException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.constant.ScriptConstant; import com.instancify.scriptify.api.script.constant.ScriptConstantManager; @@ -34,7 +35,7 @@ public void setConstantManager(ScriptConstantManager constantManager) { } @Override - public Value eval(String script) { + public Value eval(String script) throws ScriptException { Value bindings = context.getBindings("js"); if (functionManager != null) { @@ -49,6 +50,10 @@ public Value eval(String script) { } } - return context.eval("js", script); + try { + return context.eval("js", script); + } catch (Exception e) { + throw new ScriptException(e); + } } } diff --git a/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java b/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java index dcf3a9e..5175383 100644 --- a/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java +++ b/script-js-rhino/src/main/java/com/instancify/scriptify/script/JsScript.java @@ -1,5 +1,6 @@ package com.instancify.scriptify.script; +import com.instancify.scriptify.api.exception.ScriptException; import com.instancify.scriptify.api.script.Script; import com.instancify.scriptify.api.script.constant.ScriptConstant; import com.instancify.scriptify.api.script.constant.ScriptConstantManager; @@ -36,7 +37,7 @@ public void setConstantManager(ScriptConstantManager constantManager) { } @Override - public Object eval(String script) { + public Object eval(String script) throws ScriptException { if (functionManager != null) { for (ScriptFunction function : functionManager.getFunctions().values()) { scope.put(function.getName(), scope, new JsFunction(this, function)); @@ -49,6 +50,10 @@ public Object eval(String script) { } } - return context.evaluateString(scope, script, null, 1, null); + try { + return context.evaluateString(scope, script, null, 1, null); + } catch (Exception e) { + throw new ScriptException(e); + } } }