[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