[jboss-svn-commits] JBL Code SVN: r29316 - in labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler: src/main/java/org/drools/guvnor/server/rules and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Sep 11 22:40:58 EDT 2009


Author: ryanzhang
Date: 2009-09-11 22:40:58 -0400 (Fri, 11 Sep 2009)
New Revision: 29316

Added:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/JarWithSourceFiles.jar
Modified:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/.classpath
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine2Test.java
Log:
BRMS-197 merge fix from trunk (r26919, r26920)


Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/.classpath	2009-09-11 19:59:09 UTC (rev 29315)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/.classpath	2009-09-12 02:40:58 UTC (rev 29316)
@@ -1,31 +1,34 @@
-<classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.1.1/antlr-3.1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
-  <classpathentry kind="src" path="/drools-api"/>
-  <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty/6.1.15/jetty-6.1.15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty-embedded/6.1.15/jetty-embedded-6.1.15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty-util/6.1.15/jetty-util-6.1.15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.10/mvel2-2.0.10.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
-  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
-</classpath>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" including="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.1.1/antlr-3.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+	<classpathentry kind="src" path="/drools-api"/>
+	<classpathentry kind="src" path="/drools-core"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty/6.1.15/jetty-6.1.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty-embedded/6.1.15/jetty-embedded-6.1.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty-util/6.1.15/jetty-util-6.1.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.10/mvel2-2.0.10.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry kind="lib" path="/drools-guvnor/target/drools-guvnor/WEB-INF/lib/mvel2-2.0.10.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java	2009-09-11 19:59:09 UTC (rev 29315)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java	2009-09-12 02:40:58 UTC (rev 29316)
@@ -278,7 +278,6 @@
      */
     private void populateModelInfo(final PackageDescr pkgDescr,
                                    final List jars) {
-    	//FIX nheron
         for (final Iterator it = pkgDescr.getImports().iterator(); it.hasNext();) {
             final ImportDescr imp = (ImportDescr) it.next();
             final String className = imp.getTarget();
@@ -384,18 +383,31 @@
                             List jars) {
         Class clazz = null;
         try {
-            clazz = resolver.resolveType(className);
-        } catch (ClassNotFoundException e1) {
-            try {
-                addJars(jars);
-                clazz = resolver.resolveType(className);
-            } catch (Exception e) {
-                this.errors.add("Class not found: " + className);
-            }
+            clazz = resolver.resolveType( className );
+        } catch ( ClassFormatError e1 ) {
+            clazz = loadClass( className,
+                               jars,
+                               clazz );
+        } catch ( ClassNotFoundException e1 ) {
+            clazz = loadClass( className,
+                               jars,
+                               clazz );
         }
         return clazz;
     }
 
+    private Class loadClass(String className,
+                            List jars,
+                            Class clazz) {
+        try {
+            addJars( jars );
+            clazz = resolver.resolveType( className );
+        } catch ( Exception e ) {
+            this.errors.add( "Class not found: " + className );
+        }
+        return clazz;
+    }
+
     private void loadClassFields(final Class clazz,
                                  final String shortTypeName) throws IOException {
         if (clazz == null) {
@@ -471,7 +483,7 @@
             final byte[] buf = new byte[1024];
             int len  ;
             while ((entry = jis.getNextJarEntry()) != null) {
-                if (!entry.isDirectory()) {
+                if (!entry.isDirectory() && entry.getName().endsWith( ".class" )) {
                     final ByteArrayOutputStream out = new ByteArrayOutputStream();
                     while ((len = jis.read(buf)) >= 0) {
                         out.write(buf,

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine2Test.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine2Test.java	2009-09-11 19:59:09 UTC (rev 29315)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine2Test.java	2009-09-12 02:40:58 UTC (rev 29316)
@@ -1,7 +1,12 @@
 package org.drools.guvnor.client.modeldriven;
 
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+import java.util.jar.JarInputStream;
 
 import junit.framework.TestCase;
 
@@ -34,6 +39,43 @@
 
     }
 
+    public void testJarFileWithSourceFiles() {
+        SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
+
+        // Add jar file
+        String header = "package foo \n import org.test.Person \n import org.test.Banana \n ";
+        List jars = new ArrayList();
+        JarInputStream jis = null;
+        SuggestionCompletionEngine suggestionCompletionEngine = null;
+
+        try {
+            jis = new JarInputStream( this.getClass().getResourceAsStream( "/JarWithSourceFiles.jar" ) );
+            jars.add( jis );
+        } catch ( IOException e ) {
+            fail( "Could not load jar" );
+        }
+
+        try {
+            suggestionCompletionEngine = loader.getSuggestionEngine( header,
+                                                                     jars,
+                                                                     new ArrayList() );
+        } catch ( ClassFormatError e ) {
+            fail( "Can not load suggestions " + e );
+        }
+
+        // Check that it throws no error and has class files inside.
+        assertNotNull( jis );
+        assertNotNull( suggestionCompletionEngine );
+        assertEquals( 2,
+                      suggestionCompletionEngine.getFactTypes().length );
+
+        List<String> list = Arrays.asList( suggestionCompletionEngine.getFactTypes() );
+
+        assertTrue( list.contains( "Person" ) );
+        assertTrue( list.contains( "Banana" ) );
+
+    }
+
     private boolean allowedMethod(String methodName) {
         return ("hashCode".equals( methodName ) || "equals".equals( methodName ) || "listIterator".equals( methodName ) || "lastIndexOf".equals( methodName ) || "indexOf".equals( methodName ) || "subList".equals( methodName )
                 || "get".equals( methodName ) || "isEmpty".equals( methodName ) || "containsKey".equals( methodName ) || "values".equals( methodName ) || "entrySet".equals( methodName ) || "containsValue".equals( methodName )

Added: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/JarWithSourceFiles.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/JarWithSourceFiles.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream



More information about the jboss-svn-commits mailing list