diff --git a/src/main/java/com/dashjoin/jsonata/Functions.java b/src/main/java/com/dashjoin/jsonata/Functions.java index e0c1fd0..fceca41 100644 --- a/src/main/java/com/dashjoin/jsonata/Functions.java +++ b/src/main/java/com/dashjoin/jsonata/Functions.java @@ -17,6 +17,7 @@ */ package com.dashjoin.jsonata; +import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -63,7 +64,7 @@ import com.dashjoin.jsonata.utils.DateTimeUtils; @SuppressWarnings({"rawtypes", "unchecked"}) -public class Functions { +public class Functions implements Serializable { /** * Sum function @@ -628,7 +629,7 @@ public static String rightPad(final String str, final int size, String padStr) { return str.concat(substr(padding, 0, pads)); } - static class RegexpMatch { + static class RegexpMatch implements Serializable { String match; int index; List groups; diff --git a/src/main/java/com/dashjoin/jsonata/Jsonata.java b/src/main/java/com/dashjoin/jsonata/Jsonata.java index 49587ab..be6bdb0 100644 --- a/src/main/java/com/dashjoin/jsonata/Jsonata.java +++ b/src/main/java/com/dashjoin/jsonata/Jsonata.java @@ -24,6 +24,7 @@ */ package com.dashjoin.jsonata; +import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; @@ -50,19 +51,19 @@ * @description JSON query and transformation language */ @SuppressWarnings({"rawtypes", "unchecked"}) -public class Jsonata { +public class Jsonata implements Serializable { // Start of Evaluator code - public static interface EntryCallback { + public static interface EntryCallback extends Serializable { void callback(Symbol expr, Object input, Frame environment); } - public static interface ExitCallback { + public static interface ExitCallback extends Serializable { void callback(Symbol expr, Object input, Frame environment, Object result); } - public static class Frame { + public static class Frame implements Serializable { final Map bindings = new LinkedHashMap(); final Frame parent; @@ -2099,7 +2100,7 @@ public Frame createFrame(Frame enclosingEnvironment) { // }; } - public static interface JLambda { + public static interface JLambda extends Serializable { } public static interface FnVarArgs extends JLambda, Function, R> { @@ -2173,18 +2174,18 @@ default JFunctionCallable getJFunctionCallable() { /** * JFunction callable Lambda interface */ - public static interface JFunctionCallable { + public static interface JFunctionCallable extends Serializable { Object call(Object input, List args) throws Throwable; } - public static interface JFunctionSignatureValidation { + public static interface JFunctionSignatureValidation extends Serializable { Object validate(Object args, Object context); } /** * JFunction definition class */ - public static class JFunction implements JFunctionCallable, JFunctionSignatureValidation { + public static class JFunction implements JFunctionCallable, JFunctionSignatureValidation, Serializable { JFunctionCallable function; String functionName; Signature signature; diff --git a/src/main/java/com/dashjoin/jsonata/Parser.java b/src/main/java/com/dashjoin/jsonata/Parser.java index 488e2fe..f2f8cdd 100644 --- a/src/main/java/com/dashjoin/jsonata/Parser.java +++ b/src/main/java/com/dashjoin/jsonata/Parser.java @@ -28,6 +28,7 @@ import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -40,7 +41,7 @@ //var parseSignature = require('./signature'); @SuppressWarnings({"unchecked"}) -public class Parser { +public class Parser implements Serializable { boolean dbg = false; @@ -92,7 +93,7 @@ public static T clone(T object) { } } - class Symbol implements Cloneable { + class Symbol implements Cloneable, Serializable { //Symbol s; String id; diff --git a/src/main/java/com/dashjoin/jsonata/Timebox.java b/src/main/java/com/dashjoin/jsonata/Timebox.java index 90ee6da..ea0ca49 100644 --- a/src/main/java/com/dashjoin/jsonata/Timebox.java +++ b/src/main/java/com/dashjoin/jsonata/Timebox.java @@ -19,11 +19,13 @@ import com.dashjoin.jsonata.Jsonata.Frame; +import java.io.Serializable; + /** * Configure max runtime / max recursion depth. * See Frame.setRuntimeBounds - usually not used directly */ -public class Timebox { +public class Timebox implements Serializable { long timeout = 5000L; int maxDepth = 100; diff --git a/src/main/java/com/dashjoin/jsonata/Tokenizer.java b/src/main/java/com/dashjoin/jsonata/Tokenizer.java index 503373d..c60c1c1 100644 --- a/src/main/java/com/dashjoin/jsonata/Tokenizer.java +++ b/src/main/java/com/dashjoin/jsonata/Tokenizer.java @@ -24,11 +24,12 @@ */ package com.dashjoin.jsonata; +import java.io.Serializable; import java.util.HashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class Tokenizer { // = function (path) { +public class Tokenizer implements Serializable { // = function (path) { static HashMap operators = new HashMap() {{ put(".", 75); @@ -91,7 +92,7 @@ public class Tokenizer { // = function (path) { length = path.length(); } - public static class Token { + public static class Token implements Serializable { String type; Object value; int position; diff --git a/src/main/java/com/dashjoin/jsonata/Utils.java b/src/main/java/com/dashjoin/jsonata/Utils.java index 60bd81c..f5eea54 100644 --- a/src/main/java/com/dashjoin/jsonata/Utils.java +++ b/src/main/java/com/dashjoin/jsonata/Utils.java @@ -17,6 +17,7 @@ */ package com.dashjoin.jsonata; +import java.io.Serializable; import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; @@ -28,7 +29,7 @@ import com.dashjoin.jsonata.Jsonata.JFunctionCallable; @SuppressWarnings({"rawtypes"}) -public class Utils { +public class Utils implements Serializable { public static boolean isNumeric(Object v) { if (v instanceof Long) return true; boolean isNum = false; @@ -117,7 +118,7 @@ public static boolean isSequence(Object result) { * * Used for late materialization of ranges. */ - public static class RangeList extends AbstractList { + public static class RangeList extends AbstractList implements Serializable { final long a, b; final int size;