From 2255b825567d7f4cbfb221a2aedf7df4b742c9ed Mon Sep 17 00:00:00 2001 From: Daniel Ecer Date: Fri, 26 Jul 2019 13:13:48 +0100 Subject: [PATCH 1/4] added workaround for setting JEP value with very special characters --- .../java/org/grobid/core/jni/DeLFTModel.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java index 2ce1f4711b..135f93079f 100644 --- a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java +++ b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java @@ -4,6 +4,7 @@ import org.grobid.core.GrobidModels; import org.grobid.core.exceptions.GrobidException; import org.grobid.core.utilities.GrobidProperties; +import org.grobid.core.utilities.IOUtilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,8 +70,25 @@ public LabelTask(String modelName, String data) { //System.out.println("label thread: " + Thread.currentThread().getId()); this.modelName = modelName; this.data = data; - } - + } + + private void setJepStringValueWithFileFallback( + Jep jep, String name, String value + ) throws JepException, IOException { + try { + jep.set(name, value); + } catch(JepException e) { + LOGGER.debug("exception setting value, falling back to. exception: {}", e); + File tempFile = IOUtilities.newTempFile(name, "data"); + IOUtilities.writeInFile(tempFile.getAbsolutePath(), value); + jep.eval("from pathlib import Path"); + jep.eval( + name + " = Path('" + tempFile.getAbsolutePath() + + "').read_text(encoding='utf-8')" + ); + } + } + @Override public String call() { Jep jep = JEPThreadPool.getInstance().getJEPInstance(); @@ -79,7 +97,7 @@ public String call() { //System.out.println(this.data); // load and tag - jep.set("input", this.data); + this.setJepStringValueWithFileFallback(jep, "input", this.data); jep.eval("x_all, f_all = load_data_crf_string(input)"); Object objectResults = jep.getValue(this.modelName+".tag(x_all, None)"); From aff3a3d604f758b04af61b09c29ad44952ee6f9a Mon Sep 17 00:00:00 2001 From: Daniel Ecer Date: Fri, 26 Jul 2019 13:17:00 +0100 Subject: [PATCH 2/4] delete temp file --- grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java index 135f93079f..fc03ae4c7e 100644 --- a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java +++ b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java @@ -86,6 +86,7 @@ private void setJepStringValueWithFileFallback( name + " = Path('" + tempFile.getAbsolutePath() + "').read_text(encoding='utf-8')" ); + tempFile.delete(); } } From c3322d9dc5c63d5fcdfeeda7265934c114c5471b Mon Sep 17 00:00:00 2001 From: Daniel Ecer Date: Fri, 26 Jul 2019 13:22:48 +0100 Subject: [PATCH 3/4] revised logging message --- .../src/main/java/org/grobid/core/jni/DeLFTModel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java index fc03ae4c7e..6d62257e4a 100644 --- a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java +++ b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java @@ -78,8 +78,11 @@ private void setJepStringValueWithFileFallback( try { jep.set(name, value); } catch(JepException e) { - LOGGER.debug("exception setting value, falling back to. exception: {}", e); File tempFile = IOUtilities.newTempFile(name, "data"); + LOGGER.debug( + "Falling back to file {} due to exception: {}", + tempFile, e.toString() + ); IOUtilities.writeInFile(tempFile.getAbsolutePath(), value); jep.eval("from pathlib import Path"); jep.eval( From e40f620e9e1e23294b438a90a8cec78592bc3cdd Mon Sep 17 00:00:00 2001 From: Daniel Ecer Date: Fri, 26 Jul 2019 13:24:04 +0100 Subject: [PATCH 4/4] added dot to temp file extension --- grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java index 6d62257e4a..c1b835b086 100644 --- a/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java +++ b/grobid-core/src/main/java/org/grobid/core/jni/DeLFTModel.java @@ -78,7 +78,7 @@ private void setJepStringValueWithFileFallback( try { jep.set(name, value); } catch(JepException e) { - File tempFile = IOUtilities.newTempFile(name, "data"); + File tempFile = IOUtilities.newTempFile(name, ".data"); LOGGER.debug( "Falling back to file {} due to exception: {}", tempFile, e.toString()