[jboss-svn-commits] JBL Code SVN: r11506 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/brms/server and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Apr 30 08:54:51 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-04-30 08:54:51 -0400 (Mon, 30 Apr 2007)
New Revision: 11506
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
Log:
JBRULES-773 BRMS assembler
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java 2007-04-30 12:47:20 UTC (rev 11505)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java 2007-04-30 12:54:51 UTC (rev 11506)
@@ -47,16 +47,35 @@
private final DrlParser parser = new DrlParser();
private final ByteArrayClassLoader loader;
protected List errors = new ArrayList();
+ private ClassLoader existingLoader;
+ /**
+ * This uses the current classes classloader as a base,
+ * and jars can be added.
+ */
public SuggestionCompletionLoader() {
this.loader = new ByteArrayClassLoader( this.getClass().getClassLoader() );
+
}
/**
+ * This allows a pre existing classloader to be used (and preferred)
+ * for resolving types.
+ */
+ public SuggestionCompletionLoader(
+ ClassLoader classLoader) {
+ this();
+ this.existingLoader = classLoader;
+ }
+
+ /**
* This will validate, and generate a new engine, ready to go.
* If there are errors, you can get them by doing getErrors();
- * @param pkg
- * @return
+ * @param header The package configuration file content.
+ * @param jars a list of jars to look inside (pass in empty array if not needed)
+ * this is a list of {@link JarInputStream}
+ * @param dsls any dsl files. This is a list of {@link DSLMappingFile}.
+ * @return A SuggestionCompletionEngine ready to be used in anger.
*/
public SuggestionCompletionEngine getSuggestionEngine(final String header,
final List jars,
@@ -293,7 +312,11 @@
Class clazz = null;
try {
// check if it is already in the classpath
- clazz = this.loader.loadClass( classname );
+ if (this.existingLoader != null) {
+ clazz = this.existingLoader.loadClass( classname );
+ } else {
+ clazz = this.loader.loadClass( classname );
+ }
} catch ( final ClassNotFoundException e1 ) {
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java 2007-04-30 12:54:51 UTC (rev 11506)
@@ -0,0 +1,40 @@
+package org.drools.brms.server.rules;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.drools.Person;
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+
+import junit.framework.TestCase;
+
+public class SuggestionCompletionLoaderTest extends TestCase {
+
+ public void testSuggestionCompLoader() throws Exception {
+ SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
+ SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n import org.drools.Person", new ArrayList(), new ArrayList() );
+ assertNotNull(eng);
+
+ }
+
+ public void testLoaderWithExistingClassloader() throws Exception {
+ MockClassLoader mcl = new MockClassLoader();
+ SuggestionCompletionLoader loader = new SuggestionCompletionLoader(mcl);
+ SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n import org.foo.Bar", new ArrayList(), new ArrayList() );
+ assertNotNull(eng);
+ assertTrue(mcl.called);
+
+ }
+
+ static class MockClassLoader extends ClassLoader {
+
+ public boolean called = false;
+
+ public Class loadClass(String name) {
+ called = true;
+ return Object.class;
+ }
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list