-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Package: antlr
Version: 2.7.5-8
Severity: wishlist
The Hibernate project[0] ran into issues with ANTLR 2.7.5 which resulted
in them submitting a patch to the ANTLR upstream project which is
scheduled to be included in 2.7.6; however, 2.7.6 has not come yet. The
patch can be found in the Hibernate JIRA system, issue #HHH-218[1].
This patch (or 2.7.6) is a dependency for Hibernate. I would like to
see this patch applied for 2.7.5, as it is something that is supposed to
be included in 2.7.6.
I am also willing to do the work to implement this.
[0] - http://www.hibernate.org
[1] - http://opensource2.atlassian.com/projects/hibernate/browse/HHH-218
Regards,
- --
Barry Hawkins
site: www.bytemason.org
weblog: www.yepthatsme.com
Registered Linux User #368650
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFDNcxjHuKcDICy0QoRAglEAJ9uc5FaK7tP5JvANydKDLqEI08L4QCg9edc
EKa9aroa/t1zF6UMn7BfCXE=
=i83z
-----END PGP SIGNATURE-----
diff -ruN ./antlr/ASTFactory.java ../antlr-2.7.5-patched/antlr/ASTFactory.java
--- ./antlr/ASTFactory.java Sat Mar 26 03:57:51 2005
+++ ../antlr-2.7.5-patched/antlr/ASTFactory.java Thu Sep 22 16:23:43 2005
@@ -89,7 +89,7 @@
}
Class c = null;
try {
- c = Class.forName(className);
+ c = ReflectHelper.classForName(className);
tokenTypeToASTClassMap.put(new Integer(tokenType), c);
}
catch (Exception e) {
@@ -217,7 +217,7 @@
public AST create(String className) {
Class c = null;
try {
- c = Class.forName(className);
+ c = ReflectHelper.classForName(className);
}
catch (Exception e) {
throw new IllegalArgumentException("Invalid class, "+className);
@@ -232,7 +232,7 @@
Class c = null;
AST t = null;
try {
- c = Class.forName(className);
+ c = ReflectHelper.classForName(className);
Class[] tokenArgType = new Class[] { antlr.Token.class };
try {
Constructor ctor = c.getConstructor(tokenArgType);
@@ -375,7 +375,7 @@
public void setASTNodeClass(String t) {
theASTNodeType = t;
try {
- theASTNodeTypeClass = Class.forName(t); // get class def
+ theASTNodeTypeClass = ReflectHelper.classForName(t);; // get class def
}
catch (Exception e) {
// either class not found,
diff -ruN ./antlr/CharScanner.java ../antlr-2.7.5-patched/antlr/CharScanner.java
--- ./antlr/CharScanner.java Sat Mar 26 03:57:51 2005
+++ ../antlr-2.7.5-patched/antlr/CharScanner.java Thu Sep 22 16:23:43 2005
@@ -334,7 +334,7 @@
public void setTokenObjectClass(String cl) {
try {
- tokenObjectClass = Class.forName(cl);
+ tokenObjectClass = ReflectHelper.classForName(cl);
}
catch (ClassNotFoundException ce) {
panic("ClassNotFoundException: " + cl);
diff -ruN ./antlr/ReflectHelper.java ../antlr-2.7.5-patched/antlr/ReflectHelper.java
--- ./antlr/ReflectHelper.java Wed Dec 31 18:00:00 1969
+++ ../antlr-2.7.5-patched/antlr/ReflectHelper.java Thu Sep 22 16:07:30 2005
@@ -0,0 +1,45 @@
+// NOTE: During decompile, Jad displayed the following messages:
+// Parsing ReflectHelper.class... Generating ReflectHelper.jad
+// Couldn't fully decompile method classForName
+// Couldn't resolve all exception handlers in method classForName
+
+// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+// Source File Name: ReflectHelper.java
+
+package antlr;
+
+
+public final class ReflectHelper
+{
+
+// Due to decompile problems mentioned above, the original classForName
+// method generated by Jad has been commented out here and replaced by
+// code that makes a bit more sense (dead code removed).
+//
+// public static Class classForName(String s)
+// throws ClassNotFoundException
+// {
+// ClassLoader classloader = Thread.currentThread().getContextClassLoader();
+// if(classloader != null)
+// return classloader.loadClass(s);
+// return Class.forName(s);
+// Exception exception;
+// exception;
+// return Class.forName(s);
+// }
+
+ public static Class classForName(String s)
+ throws ClassNotFoundException
+ {
+ ClassLoader classloader = Thread.currentThread().getContextClassLoader();
+ if(classloader != null)
+ return classloader.loadClass(s);
+ return Class.forName(s);
+ }
+
+ private ReflectHelper()
+ {
+ }
+}
diff -ruN ./antlr/Tool.java ../antlr-2.7.5-patched/antlr/Tool.java
--- ./antlr/Tool.java Sat Mar 26 03:57:51 2005
+++ ../antlr-2.7.5-patched/antlr/Tool.java Thu Sep 22 16:23:43 2005
@@ -246,7 +246,7 @@
// (necessary for VAJ interface)
String codeGenClassName = "antlr." + getLanguage(behavior) + "CodeGenerator";
try {
- Class codeGenClass = Class.forName(codeGenClassName);
+ Class codeGenClass = ReflectHelper.classForName(codeGenClassName);
codeGen = (CodeGenerator)codeGenClass.newInstance();
codeGen.setBehavior(behavior);
codeGen.setAnalyzer(analyzer);
@@ -303,9 +303,9 @@
int argslen = initargs.length;
Class cl[] = new Class[argslen];
for (int i=0;i<argslen;i++) {
- cl[i] = Class.forName(initargs[i].getClass().getName());
+ cl[i] = ReflectHelper.classForName(initargs[i].getClass().getName());
}
- c = Class.forName (p);
+ c = ReflectHelper.classForName (p);
Constructor con = c.getConstructor (cl);
o = con.newInstance (initargs);
} catch (Exception e) {
@@ -318,7 +318,7 @@
Class c;
Object o = null;
try {
- c = Class.forName(p);// get class def
+ c = ReflectHelper.classForName(p);// get class def
o = c.newInstance(); // make a new one
}
catch (Exception e) {
diff -ruN ./antlr/build/Tool.java ../antlr-2.7.5-patched/antlr/build/Tool.java
--- ./antlr/build/Tool.java Sat Mar 26 03:57:51 2005
+++ ../antlr-2.7.5-patched/antlr/build/Tool.java Thu Sep 22 16:23:43 2005
@@ -3,6 +3,8 @@
import java.io.*;
import java.lang.reflect.*;
+import antlr.ReflectHelper;
+
/** An application-specific build tool for ANTLR. Old build
* was a shell script that of course is not portable. All it
* did though was to compile; this Java program is a portable
@@ -74,14 +76,14 @@
Method m = null;
Object appObj = null;
try {
- c = Class.forName(app);
+ c = ReflectHelper.classForName(app);
appObj = c.newInstance();
}
catch (Exception e) {
// try again with antlr.build.app
try {
if ( !app.startsWith("antlr.build.") ) {
- c = Class.forName("antlr.build."+app);
+ c = ReflectHelper.classForName("antlr.build."+app);
}
error("no such application "+app, e);
}
diff -ruN ./antlr/debug/LLkDebuggingParser.java ../antlr-2.7.5-patched/antlr/debug/LLkDebuggingParser.java
--- ./antlr/debug/LLkDebuggingParser.java Sat Mar 26 03:57:51 2005
+++ ../antlr-2.7.5-patched/antlr/debug/LLkDebuggingParser.java Thu Sep 22 16:23:43 2005
@@ -1,6 +1,7 @@
package antlr.debug;
import antlr.ParserSharedInputState;
+import antlr.ReflectHelper;
import antlr.TokenStreamException;
import antlr.LLkParser;
import antlr.TokenBuffer;
@@ -212,13 +213,13 @@
// default parser debug setup is ParseView
try {
try {
- Class.forName("javax.swing.JButton");
+ ReflectHelper.classForName("javax.swing.JButton");
}
catch (ClassNotFoundException e) {
System.err.println("Swing is required to use ParseView, but is not present in your CLASSPATH");
System.exit(1);
}
- Class c = Class.forName("antlr.parseview.ParseView");
+ Class c = ReflectHelper.classForName("antlr.parseview.ParseView");
Constructor constructor = c.getConstructor(new Class[] {LLkDebuggingParser.class, TokenStream.class, TokenBuffer.class});
constructor.newInstance(new Object[] {this, lexer, tokenBuf});
}
_______________________________________________
pkg-java-maintainers mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-java-maintainers