[Mulgara-svn] r1032 - in trunk/src/jar: itql/java/org/mulgara/itql rdql/java/org/mulgara/rdql
ronald at mulgara.org
ronald at mulgara.org
Mon Jun 30 13:02:20 UTC 2008
Author: ronald
Date: 2008-06-30 06:02:19 -0700 (Mon, 30 Jun 2008)
New Revision: 1032
Modified:
trunk/src/jar/itql/java/org/mulgara/itql/TqlInterpreter.java
trunk/src/jar/rdql/java/org/mulgara/rdql/RdqlInterpreter.java
Log:
Fix spurious lexer and parser failures. The constructors of the generated
lexers and parsers are not thread safe as they set a static variable without
any form of synchronization. By creating an instance of these in a static
initializer we are guaranteed the necessary synchronization.
Modified: trunk/src/jar/itql/java/org/mulgara/itql/TqlInterpreter.java
===================================================================
--- trunk/src/jar/itql/java/org/mulgara/itql/TqlInterpreter.java 2008-06-27 20:23:34 UTC (rev 1031)
+++ trunk/src/jar/itql/java/org/mulgara/itql/TqlInterpreter.java 2008-06-30 13:02:19 UTC (rev 1032)
@@ -74,6 +74,11 @@
/** The logger */
static final Logger logger = Logger.getLogger(TqlInterpreter.class.getName());
+ static {
+ // force initialization of static, unsynchronized variables inside these classes
+ new Parser(new Lexer2());
+ }
+
/** A constraint expression builder. */
private ConstraintExpressionBuilder builder = new ConstraintExpressionBuilder(this);
@@ -1509,7 +1514,7 @@
return o;
}
- private class Lexer2 extends Lexer {
+ private static class Lexer2 extends Lexer {
int commandCount = 0;
final LinkedList<Token> leftoverTokenList = new LinkedList<Token>();
Modified: trunk/src/jar/rdql/java/org/mulgara/rdql/RdqlInterpreter.java
===================================================================
--- trunk/src/jar/rdql/java/org/mulgara/rdql/RdqlInterpreter.java 2008-06-27 20:23:34 UTC (rev 1031)
+++ trunk/src/jar/rdql/java/org/mulgara/rdql/RdqlInterpreter.java 2008-06-30 13:02:19 UTC (rev 1032)
@@ -78,6 +78,11 @@
private final static Logger logger =
Logger.getLogger(RdqlInterpreter.class.getName());
+ static {
+ // force initialization of static, unsynchronized variables inside these classes
+ new Parser(new RdqlLexer());
+ }
+
//
// Members
//
More information about the Mulgara-svn
mailing list