diff --git a/language/buildNumber.properties b/language/buildNumber.properties index e3bbe9169..7af689389 100644 --- a/language/buildNumber.properties +++ b/language/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Thu Nov 16 10:12:17 CST 2023 -buildNumber\\d*=12623 +#Tue Dec 05 14:58:52 CST 2023 +buildNumber\\d*=12624 diff --git a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/JavaModule.java b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/JavaModule.java index ee55d41c4..f9593898d 100644 --- a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/JavaModule.java +++ b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/JavaModule.java @@ -202,4 +202,20 @@ public void setDocumentation(List documentation) { public List getDocumentation() { return documentation; } + + public QDLModuleMetaClass getMetaClass() { + return metaClass; + } + + public void setMetaClass(QDLModuleMetaClass metaClass) { + this.metaClass = metaClass; + } + + QDLModuleMetaClass metaClass = null; + + public boolean hasMetaClass() { + return metaClass != null; + } + + } diff --git a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/QDLModuleMetaClass.java b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/QDLModuleMetaClass.java index cf2d633c6..2b92d2387 100644 --- a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/QDLModuleMetaClass.java +++ b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/QDLModuleMetaClass.java @@ -1,5 +1,7 @@ package edu.uiuc.ncsa.qdl.extensions; +import net.sf.json.JSONObject; + import java.io.Serializable; /** @@ -12,4 +14,14 @@ * on 10/4/21 at 6:58 AM */ public interface QDLModuleMetaClass extends Serializable { + /** + * Send back a serialization of state for this object. This allows for the state + * you choose to be serialized and then reloaded. + *

NOTE

+ * There is no canonical form for this. Set it how you will and deserialize it + * accordingly. + * @return + */ + JSONObject serializeToJSON(); + void deserializeFromJSON(JSONObject json); } diff --git a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/convert/QDLConvert.java b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/convert/QDLConvert.java index 8c4a1e1c5..10f055cf6 100644 --- a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/convert/QDLConvert.java +++ b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/convert/QDLConvert.java @@ -8,6 +8,7 @@ import edu.uiuc.ncsa.qdl.expressions.ConstantNode; import edu.uiuc.ncsa.qdl.expressions.Polyad; import edu.uiuc.ncsa.qdl.extensions.QDLFunction; +import edu.uiuc.ncsa.qdl.extensions.QDLModuleMetaClass; import edu.uiuc.ncsa.qdl.state.State; import edu.uiuc.ncsa.qdl.util.InputFormUtil; import edu.uiuc.ncsa.qdl.util.QDLFileUtil; @@ -37,7 +38,7 @@ *

Created by Jeff Gaynor
* on 2/13/23 at 7:33 AM */ -public class QDLConvert { +public class QDLConvert implements QDLModuleMetaClass { public static final String XML_IMPORT_NAME = "xml_in"; public static final String XML_EXPORT_NAME = "xml_out"; public static final int XML_IMPORT_LEVEL_FLATTEN = 0; // no @'s, ignore most structures, attributes flattened to properties @@ -1130,6 +1131,16 @@ public List getDocumentation(int argCount) { return null; } } + + @Override + public JSONObject serializeToJSON() { + return null; + } + + @Override + public void deserializeFromJSON(JSONObject json) { + + } } /* module_load(info().lib.xml, 'java') =: q; module_import(q); diff --git a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/crypto/Crypto.java b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/crypto/Crypto.java index 31266bbc9..d73fd4dc1 100644 --- a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/crypto/Crypto.java +++ b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/crypto/Crypto.java @@ -694,4 +694,14 @@ protected boolean isSingleKey(QDLStem stem) { SecureRandom secureRandom = new SecureRandom(); + + @Override + public JSONObject serializeToJSON() { + return null; + } + + @Override + public void deserializeFromJSON(JSONObject json) { + + } } diff --git a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/database/QDLDB.java b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/database/QDLDB.java index bc4129374..c9e51bcc4 100644 --- a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/database/QDLDB.java +++ b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/database/QDLDB.java @@ -550,7 +550,16 @@ protected List getArgStatement() { return argStatement; } - /* Handy dandy table of SQL types and calls. + @Override + public JSONObject serializeToJSON() { + return null; + } + + @Override + public void deserializeFromJSON(JSONObject json) { + + } +/* Handy dandy table of SQL types and calls. SQL JDBC/Java setXXX updateXXX VARCHAR java.lang.String setString updateString CHAR java.lang.String setString updateString diff --git a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/http/HTTPClient.java b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/http/HTTPClient.java index db3b7c880..784797671 100644 --- a/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/http/HTTPClient.java +++ b/language/src/main/java/edu/uiuc/ncsa/qdl/extensions/http/HTTPClient.java @@ -85,7 +85,7 @@ Ex. Doing a DB service (to CILogon) all to my local box with a self-signed cert. Which returns a status of 0 (so all ok), the client_id and the current base 32 encoded grant. */ public class HTTPClient implements QDLModuleMetaClass { - CloseableHttpClient httpClient = null; + transient CloseableHttpClient httpClient = null; String host = null; public String HOST_METHOD = "host"; public String GET_METHOD = "get"; @@ -426,7 +426,7 @@ public Object evaluate(Object[] objects, State state) { boolean doInsecure = false; if (objects.length == 1) { if (!(objects[0] instanceof Boolean)) { - throw new IllegalArgumentException(getName() + " retuires a boolean argument if present"); + throw new IllegalArgumentException(getName() + " requires a boolean argument if present"); } doInsecure = (Boolean) objects[0]; } @@ -466,6 +466,7 @@ public List getDocumentation(int argCount) { doxx.add("This boosts neither speed nor performance and turns off essential security."); break; } + doxx.add("NOTE that if you serialize this workspace, you must re-open the connection on loading"); return doxx; } @@ -929,4 +930,26 @@ protected String getActualHost(String uriPath) { // Fixes https://github.com/ncsa/qdl/issues/35 return actualHost + (uriPath.startsWith("/") ? uriPath.substring(1) : uriPath); } + + @Override + public JSONObject serializeToJSON() { + JSONObject json = new JSONObject(); + if(!StringUtils.isTrivial(host)){ + json.put("host", host); + } + if(headers!=null){ + json.put("headers", headers); + } + return json; + } + + @Override + public void deserializeFromJSON(JSONObject json) { + if(json.containsKey("host")){ + host = json.getString("host"); + } + if(json.containsKey("headers")){ + headers = json.getJSONObject("headers"); + } + } }