diff --git a/common/.classpath b/common/.classpath index ac1214e7bf805fa2d58fa060dadd812500601e69..df9d86de38585f0d17b5a5b65d9d8b2bdbc598c7 100644 --- a/common/.classpath +++ b/common/.classpath @@ -20,7 +20,7 @@ <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base-test.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> <classpathentry kind="lib" path="/libraries/fast-md5/fast-md5.jar" sourcepath="/libraries/fast-md5/src.zip"/> - <classpathentry kind="lib" path="/libraries/jython/jython.jar" sourcepath="/libraries/jython/src.zip"/> + <classpathentry kind="lib" path="/libraries/jython/jython.jar" sourcepath="/libraries/jython/jython_src.zip"/> <classpathentry kind="lib" path="/libraries/commons-httpclient/commons-httpclient.jar" sourcepath="/libraries/commons-httpclient/src.zip"/> <classpathentry kind="lib" path="/libraries/commons-logging/commons-logging.jar" sourcepath="/libraries/commons-logging/src.zip"/> <classpathentry kind="lib" path="/libraries/jaxb/jaxb-api.jar" sourcepath="/libraries/jaxb/jaxb-api-src.zip"/> diff --git a/common/source/java/ch/systemsx/cisd/common/evaluator/Evaluator.java b/common/source/java/ch/systemsx/cisd/common/evaluator/Evaluator.java index ed543e06047fde81f59b4870c28d429e8e2fa349..54c7166f9a6e848686ef369ba21916d8f46c03a8 100644 --- a/common/source/java/ch/systemsx/cisd/common/evaluator/Evaluator.java +++ b/common/source/java/ch/systemsx/cisd/common/evaluator/Evaluator.java @@ -1,5 +1,3 @@ -package ch.systemsx.cisd.common.evaluator; - /* * Copyright 2009 ETH Zuerich, CISD * @@ -16,25 +14,26 @@ package ch.systemsx.cisd.common.evaluator; * limitations under the License. */ +package ch.systemsx.cisd.common.evaluator; + import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; import org.apache.commons.lang.StringUtils; +import org.python.core.CompileMode; +import org.python.core.CompilerFlags; +import org.python.core.Py; +import org.python.core.PyBoolean; import org.python.core.PyCode; import org.python.core.PyException; import org.python.core.PyFloat; import org.python.core.PyFunction; import org.python.core.PyInteger; -import org.python.core.PyJavaInstance; -import org.python.core.PyList; import org.python.core.PyLong; import org.python.core.PyNone; import org.python.core.PyObject; import org.python.core.PyString; import org.python.core.PyStringMap; import org.python.core.PySystemState; -import org.python.core.__builtin__; import org.python.util.PythonInterpreter; /** @@ -73,7 +72,7 @@ public final class Evaluator */ public enum ReturnType { - INTEGER_OR_BOOLEAN, BIGINT, DOUBLE, STRING, OTHER + BOOLEAN, INTEGER, BIGINT, DOUBLE, STRING, OTHER } /** @@ -173,7 +172,7 @@ public final class Evaluator if (pyObject instanceof PyFunction == false) { throw new PyException(new PyString("Not a function"), "'" + functionName - + "' is of type " + pyObject.getType().getFullName() + "."); + + "' is of type " + pyObject.getType().getName() + "."); } PyFunction func = (PyFunction) pyObject; PyObject[] pyArgs = new PyObject[args.length]; @@ -204,7 +203,7 @@ public final class Evaluator { return new PyString((String) javaObject); } - return new PyJavaInstance(javaObject); + return Py.java2py(javaObject); } /** @@ -215,8 +214,8 @@ public final class Evaluator { try { - return __builtin__.compile("__result__=(" + expression + ")", "expression: " - + expression, "exec"); + return Py.compile_flags("__result__=(" + expression + ")", "expression: " + expression, + CompileMode.exec, new CompilerFlags()); } catch (PyException ex) { throw toEvaluatorException(ex, expression); @@ -255,9 +254,12 @@ public final class Evaluator { doEval(); final Object obj = getInterpreterResult(); - if (obj instanceof PyInteger) + if (obj instanceof PyBoolean) + { + return ReturnType.BOOLEAN; + } else if (obj instanceof PyInteger) { - return ReturnType.INTEGER_OR_BOOLEAN; + return ReturnType.INTEGER; } else if (obj instanceof PyLong) { return ReturnType.BIGINT; @@ -296,35 +298,7 @@ public final class Evaluator private Object translateToJava(final PyObject obj) { - if (obj instanceof PyInteger) - { - return new Long(((PyInteger) obj).getValue()); - } else if (obj instanceof PyLong) - { - return new Long(((PyLong) obj).getValue().longValue()); - } else if (obj instanceof PyFloat) - { - return new Double(((PyFloat) obj).getValue()); - } else if (obj instanceof PyNone) - { - return null; - } else if (obj instanceof PyList) - { - PyList pyList = (PyList) obj; - PyObject[] array = pyList.getArray(); - List<Object> list = new ArrayList<Object>(); - for (int i = 0, n = pyList.size(); i < n; i++) - { - list.add(translateToJava(array[i])); - } - return list; - } else if (obj instanceof PyJavaInstance) - { - return ((PyJavaInstance) obj).__tojava__(Object.class); - } else - { - return obj == null ? null : obj.toString(); - } + return (obj == null) ? null : obj.__tojava__(Object.class); } private PyObject getInterpreterResult() @@ -346,7 +320,7 @@ public final class Evaluator { final ReturnType type = getType(); throw new EvaluatorException("Expected a result of type " - + ReturnType.INTEGER_OR_BOOLEAN + ", found " + type); + + ReturnType.INTEGER + ", found " + type); } } @@ -364,7 +338,7 @@ public final class Evaluator { final ReturnType type = getType(); throw new EvaluatorException("Expected a result of type " - + ReturnType.INTEGER_OR_BOOLEAN + ", found " + type); + + ReturnType.INTEGER + ", found " + type); } } @@ -436,13 +410,10 @@ public final class Evaluator { Exception exception = null; PyObject value = ex.value; - if (value instanceof PyJavaInstance) + Object object = value.__tojava__(Object.class); + if (object instanceof Exception) { - Object object = ((PyJavaInstance) value).__tojava__(Object.class); - if (object instanceof Exception) - { - exception = (Exception) object; - } + exception = (Exception) object; } String msg = extractExceptionMessage(ex); if (expressionOrNull != null) diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/evaluator/EvaluatorTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/evaluator/EvaluatorTest.java index f113c15bcfc6f3f94af709931305dc35004b0513..77d6e320df1ed707c8fa36cd5a2a88266b69a9d9 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/evaluator/EvaluatorTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/evaluator/EvaluatorTest.java @@ -99,12 +99,12 @@ public class EvaluatorTest extends AssertJUnit public static class Functions { - public static double Min(double a, double b) + public static double MinDbl(double a, double b) { return (a < b) ? a : b; } - public static double Min(double... vals) + public static double MinDbl(double[] vals) { double result = Double.MAX_VALUE; for (double v : vals) @@ -117,20 +117,21 @@ public class EvaluatorTest extends AssertJUnit return result; } - public static int Min(int a, int b) + public static int MinInt(int a, int b) { return (a < b) ? a : b; } + } @Test public void testFunctionEval() { - Evaluator eval = new Evaluator("Min(1,2)", Functions.class, null); + Evaluator eval = new Evaluator("MinInt(1,2)", Functions.class, null); assertEquals(1, eval.evalToInt()); - eval = new Evaluator("Min([1,2,0.1])", Functions.class, null); + eval = new Evaluator("MinDbl([1,2,0.1])", Functions.class, null); assertEquals(0.1, eval.evalToDouble(), 1e-15); - eval = new Evaluator("Min(v)", Functions.class, null); + eval = new Evaluator("MinDbl(v)", Functions.class, null); eval.set("v", new double[] { 1, 2, -99.9, 3 }); assertEquals(-99.9, eval.evalToDouble(), 1e-15); @@ -149,7 +150,7 @@ public class EvaluatorTest extends AssertJUnit { final Evaluator eval = new Evaluator("a"); eval.set("a", 2); - assertEquals(ReturnType.INTEGER_OR_BOOLEAN, eval.getType()); + assertEquals(ReturnType.INTEGER, eval.getType()); eval.set("a", "2"); assertEquals(ReturnType.STRING, eval.getType()); } @@ -178,15 +179,16 @@ public class EvaluatorTest extends AssertJUnit { final Evaluator eval = new Evaluator("a"); eval.set("a", true); - assertEquals(ReturnType.INTEGER_OR_BOOLEAN, eval.getType()); - assertEquals("1", eval.evalAsString()); + assertEquals(ReturnType.BOOLEAN, eval.getType()); + assertEquals("true", eval.evalAsString()); try { eval.evalToDouble(); + fail("Type mismatch not detected."); } catch (EvaluatorException ex) { assertEquals(ex.getMessage(), - "Expected a result of type DOUBLE, found INTEGER_OR_BOOLEAN", ex.getMessage()); + "Expected a result of type DOUBLE, found BOOLEAN", ex.getMessage()); } } @@ -245,7 +247,7 @@ public class EvaluatorTest extends AssertJUnit Evaluator evaluator = new Evaluator("", null, "def get():\n return ['a','b']"); Object result = evaluator.evalFunction("get"); assertEquals("Result " + result.getClass(), true, result instanceof List); - assertEquals("[a, b]", result.toString()); + assertEquals("['a', 'b']", result.toString()); } @Test @@ -258,7 +260,9 @@ public class EvaluatorTest extends AssertJUnit fail("EvaluatorException expected"); } catch (EvaluatorException ex) { - assertEquals("Error evaluating 'hello(world)': NameError: unknown", ex.getMessage()); + assertEquals( + "Error evaluating 'hello(world)': NameError: global name 'unknown' is not defined", + ex.getMessage()); } } @@ -316,7 +320,7 @@ public class EvaluatorTest extends AssertJUnit } catch (EvaluatorException ex) { assertEquals("Error evaluating 'hello()': TypeError: " - + "hello() takes at least 1 argument (0 given)", ex.getMessage()); + + "hello() takes exactly 1 argument (0 given)", ex.getMessage()); } } @@ -331,7 +335,7 @@ public class EvaluatorTest extends AssertJUnit } catch (EvaluatorException ex) { assertEquals("Error evaluating 'hello(world, universe)': TypeError: " - + "hello() too many arguments; expected 1 got 2", ex.getMessage()); + + "hello() takes exactly 1 argument (2 given)", ex.getMessage()); } } @@ -347,7 +351,7 @@ public class EvaluatorTest extends AssertJUnit } catch (EvaluatorException ex) { assertEquals("Error evaluating 'get(world, universe)': AttributeError: " - + "'string' object has no attribute 'get'", ex.getMessage()); + + "'str' object has no attribute 'get'", ex.getMessage()); } } diff --git a/datastore_server/.classpath b/datastore_server/.classpath index 6f8cb8ff0360c2606619b4b46636be9038132412..14e4742a6c6e51e3e90e16f02d75b91558a268f7 100644 --- a/datastore_server/.classpath +++ b/datastore_server/.classpath @@ -4,7 +4,6 @@ <classpathentry kind="src" path="resource"/> <classpathentry kind="src" path="sourceTest/java"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="lib" path="/libraries/jython/standalone/jython.jar" sourcepath="/Users/gpawel/Downloads/jython_installer-2.2.1.jar"/> <classpathentry combineaccessrules="false" exported="true" kind="src" path="/common"/> <classpathentry kind="lib" path="/libraries/log4j/log4j.jar" sourcepath="/libraries/log4j/src.zip"/> <classpathentry kind="lib" path="/libraries/commons-lang/commons-lang.jar" sourcepath="/libraries/commons-lang/src.zip"/> @@ -71,5 +70,6 @@ <classpathentry kind="lib" path="/libraries/poi/ooxml-lib/xmlbeans-2.3.0.jar"/> <classpathentry kind="lib" path="/libraries/ftpserver/ftpserver-core.jar"/> <classpathentry kind="lib" path="/libraries/mina/mina-core.jar"/> + <classpathentry kind="lib" path="/libraries/jython/jython.jar" sourcepath="/libraries/jython/jython_src.zip"/> <classpathentry kind="output" path="targets/classes"/> </classpath> diff --git a/datastore_server/build/build.xml b/datastore_server/build/build.xml index 784f88a139653c6bb00763bdbadaeb8775f4656d..99b94a69f8047c5a472d8230780021947f03d329 100644 --- a/datastore_server/build/build.xml +++ b/datastore_server/build/build.xml @@ -150,9 +150,6 @@ <copy file="${lib}/jython/jython.jar" todir="${dist.datastore_server.lib}" /> <copy file="${lib}/mina/mina-core.jar" todir="${dist.datastore_server.lib}" /> <copy file="${lib}/ftpserver/ftpserver-core.jar" todir="${dist.datastore_server.lib}" /> - <copy todir="${dist.datastore_server.lib}/jython-lib" > - <fileset dir="${lib}/jython/jython-lib" /> - </copy> <copy file="${lib}/truezip/truezip.jar" todir="${dist.datastore_server.lib}" /> <copy todir="${dist.datastore_server.lib}/${dss_upload_gui}" > <fileset dir="${dist.dss_upload_gui.lib}" /> @@ -283,7 +280,7 @@ <copy file="${lib}/commons-httpclient/commons-httpclient.jar" todir="${dist.dss_client.lib}" /> <copy file="${lib}/spring/spring.jar" todir="${dist.dss_client.lib}" /> <copy file="${lib}/jline/jline.jar" todir="${dist.dss_client.lib}" /> - <copy file="${lib}/jython/standalone/jython.jar" todir="${dist.dss_client.lib}" /> + <copy file="${lib}/jython/jython.jar" todir="${dist.dss_client.lib}" /> <copy file="${lib}/poi/poi-3.7-20101029.jar" todir="${dist.dss_client.lib}" /> <copy file="${lib}/poi/poi-ooxml-3.7-20101029.jar" todir="${dist.dss_client.lib}" /> <copy file="${lib}/poi/poi-ooxml-schemas-3.7-20101029.jar" todir="${dist.dss_client.lib}" /> @@ -400,7 +397,7 @@ <param name="jar" value="stream-supporting-httpinvoker.jar" /> </antcall> <antcall target="copy-and-sign-jar"> - <param name="dir" value="${lib}/jython/standalone" /> + <param name="dir" value="${lib}/jython" /> <param name="jar" value="jython.jar" /> </antcall> <antcall target="copy-and-sign-jar"> diff --git a/openbis/build/build.xml b/openbis/build/build.xml index a4e192fcf6edadc523671a963fc4c8dd17165a55..b739cdb300f7bc355baf59c0d913c0c4e8d72b96 100644 --- a/openbis/build/build.xml +++ b/openbis/build/build.xml @@ -723,10 +723,6 @@ <lib dir="${lib}/jython"> <include name="jython.jar" /> </lib> - <!-- modules for jython scripting --> - <webinf dir="${lib}/jython/"> - <include name="jython-lib/**/*.*" /> - </webinf> </war> <!-- Does some cleaning. --> <delete file="${jar.file}" failonerror="true" /> diff --git a/sanofi/.classpath b/sanofi/.classpath index dc1aac1a05c9f18d34503f26441c2ecaa11697f0..b33c8c47a8d577a2558a2e91e97b70f7a5ec7e70 100644 --- a/sanofi/.classpath +++ b/sanofi/.classpath @@ -21,9 +21,9 @@ <classpathentry kind="lib" path="/libraries/spring/spring.jar" sourcepath="/libraries/spring/src.jar"/> <classpathentry kind="lib" path="/libraries/cisd-args4j/cisd-args4j.jar" sourcepath="/libraries/cisd-args4j/cisd-args4j-src.zip"/> <classpathentry kind="lib" path="/libraries/poi/poi-3.7-20101029.jar"/> - <classpathentry kind="lib" path="/libraries/jython/standalone/jython.jar" sourcepath="/Users/gpawel/Downloads/jython_installer-2.2.1.jar"/> <classpathentry combineaccessrules="false" kind="src" path="/datastore_server"/> <classpathentry combineaccessrules="false" kind="src" path="/openbis"/> <classpathentry kind="lib" path="/libraries/eodsql/eodsql.jar" sourcepath="/libraries/eodsql/eodsql_src.zip"/> + <classpathentry kind="lib" path="/libraries/jython/jython.jar" sourcepath="/libraries/jython/jython_src.zip"/> <classpathentry kind="output" path="targets/classes"/> </classpath> diff --git a/screening/build/build.xml b/screening/build/build.xml index 7826973eb4cee48a336e84fd0db38dcb170196ae..5a04c171121a9427b2431ced2bdb441410e53a11 100644 --- a/screening/build/build.xml +++ b/screening/build/build.xml @@ -353,7 +353,7 @@ <param name="jar" value="ij.jar" /> </antcall> <antcall target="copy-and-sign-jar"> - <param name="dir" value="${lib}/jython/standalone" /> + <param name="dir" value="${lib}/jython" /> <param name="jar" value="jython.jar" /> </antcall> <zip destfile="${jars.to.be.signed.zip}" @@ -501,7 +501,7 @@ <zipfileset src="${lib}/jline/jline.jar" /> <zipfileset src="${lib}/cisd-args4j/cisd-args4j.jar" /> <zipfileset src="${lib}/cisd-base/cisd-base.jar" /> - <zipfileset src="${lib}/jython/standalone/jython.jar" /> + <zipfileset src="${lib}/jython/jython.jar" /> </recursive-jar> <recursive-jar destfile="${dist.screening-api-batteries-included.jar}"> <zipfileset src="${dist.screening-api.lib}/spring-ext.jar" /> @@ -570,7 +570,7 @@ <zipfileset src="${lib}/jline/jline.jar" /> <zipfileset src="${lib}/cisd-args4j/cisd-args4j.jar" /> <zipfileset src="${lib}/cisd-base/cisd-base.jar" /> - <zipfileset src="${lib}/jython/standalone/jython.jar" /> + <zipfileset src="${lib}/jython/jython.jar" /> </recursive-jar> <recursive-jar destfile="${dist.screening-api-batteries-included.jar}"> <zipfileset src="${dist.screening-api.lib}/spring-ext.jar" />