HHH-6536, set TCCL to the Hibernate classloader
This commit is contained in:
parent
b336bf5d53
commit
07d15fb39b
|
@ -23,11 +23,12 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package org.hibernate.hql.internal.ast;
|
package org.hibernate.hql.internal.ast;
|
||||||
import java.io.InputStream;
|
import antlr.Token;
|
||||||
import java.io.Reader;
|
|
||||||
import org.hibernate.QueryException;
|
import org.hibernate.QueryException;
|
||||||
import org.hibernate.hql.internal.antlr.HqlBaseLexer;
|
import org.hibernate.hql.internal.antlr.HqlBaseLexer;
|
||||||
import antlr.Token;
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.Reader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom lexer for the HQL grammar. Extends the base lexer generated by ANTLR
|
* Custom lexer for the HQL grammar. Extends the base lexer generated by ANTLR
|
||||||
|
@ -48,8 +49,20 @@ class HqlLexer extends HqlBaseLexer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTokenObjectClass(String cl) {
|
public void setTokenObjectClass(String cl) {
|
||||||
// Ignore the token class name parameter, and use a specific token class.
|
Thread thread = null;
|
||||||
super.setTokenObjectClass( HqlToken.class.getName() );
|
ClassLoader contextClassLoader = null;
|
||||||
|
try {
|
||||||
|
// workaround HHH-6536, by setting TCCL to the Hibernate classloader
|
||||||
|
thread = Thread.currentThread();
|
||||||
|
contextClassLoader = thread.getContextClassLoader();
|
||||||
|
thread.setContextClassLoader(HqlToken.class.getClassLoader());
|
||||||
|
|
||||||
|
// Ignore the token class name parameter, and use a specific token class.
|
||||||
|
super.setTokenObjectClass( HqlToken.class.getName() );
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
thread.setContextClassLoader( contextClassLoader );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setPossibleID(boolean possibleID) {
|
protected void setPossibleID(boolean possibleID) {
|
||||||
|
|
Loading…
Reference in New Issue