From fc43e580c7b33874cc2148bf1c0b21e1214cccda Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Sat, 6 Aug 2011 19:32:12 +0000
Subject: [PATCH] upgrade: jython to 2.5.2

SVN: 22395
---
 common/.classpath                             |  2 +-
 .../cisd/common/evaluator/Evaluator.java      | 73 ++++++-------------
 .../cisd/common/evaluator/EvaluatorTest.java  | 34 +++++----
 datastore_server/.classpath                   |  2 +-
 datastore_server/build/build.xml              |  7 +-
 openbis/build/build.xml                       |  4 -
 sanofi/.classpath                             |  2 +-
 screening/build/build.xml                     |  6 +-
 8 files changed, 49 insertions(+), 81 deletions(-)

diff --git a/common/.classpath b/common/.classpath
index ac1214e7bf8..df9d86de385 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 ed543e06047..54c7166f9a6 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 f113c15bcfc..77d6e320df1 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 6f8cb8ff036..14e4742a6c6 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 784f88a1396..99b94a69f80 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 a4e192fcf6e..b739cdb300f 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 dc1aac1a05c..b33c8c47a8d 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 7826973eb4c..5a04c171121 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" />
-- 
GitLab