Index: D:/workspace-imperius/imperius/trunk/imperius-spleditorcore/src/org/apache/imperius/spl/editor/tool/internal/builder/PolicyFileParser.java =================================================================== --- D:/workspace-imperius/imperius/trunk/imperius-spleditorcore/src/org/apache/imperius/spl/editor/tool/internal/builder/PolicyFileParser.java (revision 612185) +++ D:/workspace-imperius/imperius/trunk/imperius-spleditorcore/src/org/apache/imperius/spl/editor/tool/internal/builder/PolicyFileParser.java (working copy) @@ -26,6 +26,7 @@ import java.io.PrintStream; import java.io.Reader; +import java.net.URLClassLoader; import java.util.HashMap; import java.util.Map; @@ -41,7 +42,9 @@ import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Platform; +import antlr.ASTFactory; import antlr.RecognitionException; import antlr.collections.AST; @@ -109,7 +112,21 @@ lexer.setFilename(fileName); // Create a parser that reads from the scanner SPLParser parser = new SPLParser(lexer); - parser.setASTNodeClass(AST_NODE_CLASS); + ClassLoader cl = null; + try + { + cl = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(PolicyFileParser.class.getClassLoader()); + parser.setASTNodeClass(AST_NODE_CLASS); + } + finally + { + if( cl != null ) + { + Thread.currentThread().setContextClassLoader(cl); + } + } + parser.setFilename(fileName); // start parsing at the compilationUnit rule parser.splpolicy(); @@ -146,7 +163,20 @@ return; SPLTreeParser tparse = new SPLTreeParser(); - tparse.setASTNodeClass(AST_NODE_CLASS); + ClassLoader cl = null; + try + { + cl = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(PolicyFileParser.class.getClassLoader()); + tparse.setASTNodeClass(AST_NODE_CLASS); + } + finally + { + if( cl != null ) + { + Thread.currentThread().setContextClassLoader(cl); + } + } IPolicyClientFactory factory = new PolicyClientFactoryImpl(); IPolicyClient policyClient = null; try { @@ -162,8 +192,22 @@ return; } SPLSymbolTable st=new SPLSymbolTable(); + // SPLPolicyUtil.loadCustomClasses(resourceFile.getProject()); - tparse.splpolicy(t,dc,st); + try + { + cl = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(new URLClassLoader(SPLPolicyUtil.createURLs(resourceFile.getProject()),PolicyFileParser.class.getClassLoader())); + tparse.splpolicy(t,dc,st); + } + finally + { + if( cl != null ) + { + Thread.currentThread().setContextClassLoader(cl); + } + } + } } catch (RecognitionException e) { System.err.println(e.getMessage());