[jboss-svn-commits] JBL Code SVN: r31237 - in labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src: main/java/org/drools/guvnor/server/util and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 26 16:23:44 EST 2010


Author: baunax
Date: 2010-01-26 16:23:44 -0500 (Tue, 26 Jan 2010)
New Revision: 31237

Modified:
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/SuggestionCompletionEngineBuilder.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SomeFact.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SuggestionCompletionLoaderTest.java
Log:
added parametric return type to MethodInfo

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java	2010-01-26 21:22:51 UTC (rev 31236)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/rules/SuggestionCompletionLoader.java	2010-01-26 21:23:44 UTC (rev 31237)
@@ -22,6 +22,7 @@
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.DroolsError;
 import org.drools.compiler.DroolsParserException;
+import org.drools.guvnor.client.modeldriven.MethodInfo;
 import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.guvnor.server.util.ClassMethodInspector;
 import org.drools.guvnor.server.util.DataEnumLoader;
@@ -449,7 +450,15 @@
         
         ClassMethodInspector methodInspector = new ClassMethodInspector(clazz);
         
-        this.builder.getInstance().addMethodInfo( shortTypeName, methodInspector.getMethodInfos() );
+        List<MethodInfo> methodInfos = methodInspector.getMethodInfos();
+        for (MethodInfo mi : methodInfos) {
+				String genericType = mi.getParametricReturnType();
+				if (genericType != null) {
+					this.builder.putParametricFieldType(shortTypeName + "."
+							+ mi.getNameWithParameters(), genericType);
+				}
+		}
+		this.builder.getInstance().addMethodInfo( shortTypeName, methodInfos );
     }
 
     String getShortNameOfClass(final String clazz) {
@@ -473,9 +482,9 @@
     /**
      * This will add the given jars to the classloader.
      */
-    private void addJars(final List jars) throws IOException {
-        for (final Iterator it = jars.iterator(); it.hasNext();) {
-            final JarInputStream jis = (JarInputStream) it.next();
+    private void addJars(final List<JarInputStream> jars) throws IOException {
+        for (final Iterator<JarInputStream> it = jars.iterator(); it.hasNext();) {
+            final JarInputStream jis = it.next();
             JarEntry entry  ;
             final byte[] buf = new byte[1024];
             int len  ;

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/SuggestionCompletionEngineBuilder.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/SuggestionCompletionEngineBuilder.java	2010-01-26 21:22:51 UTC (rev 31236)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/SuggestionCompletionEngineBuilder.java	2010-01-26 21:23:44 UTC (rev 31237)
@@ -117,13 +117,11 @@
      * @param type parametrized type of clazz
      * @param clazz the class of field
      */
-    public void addFieldType(final String field,
-            final String type,
-            final Class<?> clazz) {
-        this.fieldTypes.put(field,
-                type);
-        this.fieldClasses.put(field, clazz);
-    }
+	public void addFieldType(final String field, final String type,
+			final Class<?> clazz) {
+		this.fieldTypes.put(field, type);
+		this.fieldClasses.put(field, clazz);
+	}
 
     /**
      * Adds a type declaration for a field
@@ -131,11 +129,9 @@
      * @param field format: class.field
      * @param type
      */
-    public void addFieldTypeField(final String field,
-            final Field type) {
-        this.fieldTypesField.put(field,
-                type);
-    }
+	public void addFieldTypeField(final String field, final Field type) {
+		this.fieldTypesField.put(field, type);
+	}
 
     /**
      * Adds a global and its corresponding type to the engine
@@ -145,8 +141,7 @@
      */
     public void addGlobalType(final String global,
             final String type) {
-        this.globalTypes.put(global,
-                type);
+        this.globalTypes.put(global, type);
     }
 
     public void addGlobalCollection(String global) {
@@ -171,6 +166,23 @@
         this.conditionDSLSentences.add(sen);
     }
 
+    static public String obtainGenericType(Type type) {
+        if (type instanceof ParameterizedType) {
+            ParameterizedType pt = (ParameterizedType) type;
+            Type goodType = null;
+            for (Type t : pt.getActualTypeArguments()) {
+                goodType = t;
+            }
+            int index = goodType.toString().lastIndexOf(".");
+            return goodType.toString().substring(index + 1);
+        }
+        return null;
+    }
+    
+    public void putParametricFieldType(String fieldName, String genericType) {
+    	this.instance.putParametricFieldType(fieldName, genericType);
+    }
+    
     /**
      * Returns a SuggestionCompletionEngine instance populated with
      * all the data since last call to newCompletionEngine() method
@@ -193,10 +205,10 @@
                 Class<?> fieldClazz = this.fieldClasses.get(typeEntry.getKey() + "." + field);
 
                 fields.add(new ModelField(
-                        fieldName, fieldClazz, fieldType));
+                        fieldName, fieldClazz.getName(), fieldType));
             }
 
-            modelMap.put(typeEntry.getKey(), fields.toArray(new ModelField[0]));
+            modelMap.put(typeEntry.getKey(), fields.toArray(new ModelField[fields.size()]));
         }
 
         this.instance.setFieldsForTypes(modelMap);
@@ -204,19 +216,11 @@
         for (String fieldName : this.fieldTypesField.keySet()) {
             Field field = this.fieldTypesField.get(fieldName);
             if (field != null) {
-                Type type = field.getGenericType();
-                if (type instanceof ParameterizedType) {
-                    ParameterizedType pt = (ParameterizedType) type;
-                    Type goodType = null;
-                    for (Type t : pt.getActualTypeArguments()) {
-                        goodType = t;
-                    }
-                    int index = goodType.toString().lastIndexOf(".");
-                    String className = goodType.toString().substring(index + 1);
-                    this.instance.putParametricFieldType(fieldName, className);
-
+                String genericType = obtainGenericType(field.getGenericType());
+                if (genericType != null) {
+                	this.instance.putParametricFieldType(fieldName, genericType);	
                 }
-
+                
                 Class<?> fieldClass = field.getType();
                 if (fieldClass.isEnum()) {
                     Field[] flds = fieldClass.getDeclaredFields();

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SomeFact.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SomeFact.java	2010-01-26 21:22:51 UTC (rev 31236)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SomeFact.java	2010-01-26 21:23:44 UTC (rev 31237)
@@ -154,4 +154,8 @@
     public void setAnEnum(EnumClass anEnum) {
         this.anEnum = anEnum;
     }
+    
+    public List<SomeFact> aMethod(int anInt) {
+    	return null;
+    }
 }

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SuggestionCompletionLoaderTest.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SuggestionCompletionLoaderTest.java	2010-01-26 21:22:51 UTC (rev 31236)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/server/rules/SuggestionCompletionLoaderTest.java	2010-01-26 21:23:44 UTC (rev 31237)
@@ -1,6 +1,7 @@
 package org.drools.guvnor.server.rules;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import junit.framework.TestCase;
 import org.drools.guvnor.client.modeldriven.ModelField.FIELD_CLASS_TYPE;
@@ -16,19 +17,14 @@
 
     }
 
-
     public void testSuggestionCompLoaderWildcards() throws Exception {
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
         loader.getSuggestionEngine( "package foo \n import org.drools.*", new ArrayList(), new ArrayList() );
         assertEquals(1, loader.getErrors().size());
         String err = loader.getErrors().get(0);
         assertTrue(err.startsWith("Unable"));
-
-
     }
 
-
-
     public void testLoadDifferentFieldTypes() throws Exception {
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
         SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n import org.drools.guvnor.server.rules.SomeFact", new ArrayList(), new ArrayList() );
@@ -38,6 +34,7 @@
         assertEquals(SuggestionCompletionEngine.TYPE_STRING, eng.getFieldType( "SomeFact", "likes"));
         assertEquals(SuggestionCompletionEngine.TYPE_STRING, eng.getFieldType( "SomeFact","name"));
         assertEquals(SuggestionCompletionEngine.TYPE_NUMERIC, eng.getFieldType("SomeFact", "bigDecimal"));
+        assertEquals(SuggestionCompletionEngine.TYPE_BOOLEAN, eng.getFieldType("SomeFact", "alive"));
 //        assertEquals(SuggestionCompletionEngine.TYPE_COMPARABLE, eng.getFieldType( "SomeFact", "date"));
         assertEquals(SuggestionCompletionEngine.TYPE_DATE, eng.getFieldType( "SomeFact", "date"));
         assertEquals("Cheese", eng.getFieldType( "SomeFact", "cheese"));
@@ -47,7 +44,15 @@
         assertEquals("SomeFact",eng.getParametricFieldType("SomeFact", "factList"));
         assertEquals(SuggestionCompletionEngine.TYPE_COLLECTION,eng.getFieldType( "SomeFact", "factListString"));
         assertEquals("String",eng.getParametricFieldType("SomeFact", "factListString"));
+    }
+    
+    public void testLoadDifferentMethodTypes() throws Exception {
+        SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
+        SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n import org.drools.guvnor.server.rules.SomeFact", new ArrayList(), new ArrayList() );
+        assertNotNull(eng);
 
+        assertEquals(List.class.getName(), eng.getMethodClassType("SomeFact", "aMethod(int)"));
+        assertEquals("SomeFact", eng.getParametricFieldType("SomeFact", "aMethod(int)"));
     }
 
     public void testGeneratedBeans() throws Exception {
@@ -64,10 +69,8 @@
         assertEquals(SuggestionCompletionEngine.TYPE_STRING, eng.getFieldType( "GenBean", "name"));
 
         assertEquals("GenBean", eng.getFieldType("GenBean2", "gb"));
-
     }
 
-
     public void testGlobal() throws Exception {
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
         SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n global org.drools.Person p", new ArrayList(), new ArrayList() );
@@ -81,11 +84,9 @@
         assertNotNull(flds);
 
         assertEquals(0, eng.getGlobalCollections().length);
-
     }
 
-
-     public void testGlobalCollections() throws Exception {
+    public void testGlobalCollections() throws Exception {
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
         SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n global java.util.List ls", new ArrayList(), new ArrayList() );
         assertNotNull(eng);
@@ -97,9 +98,7 @@
 
         assertNotNull(eng.getGlobalCollections());
         assertEquals(1, eng.getGlobalCollections().length);
-         assertEquals("ls", eng.getGlobalCollections()[0]);
-
-
+        assertEquals("ls", eng.getGlobalCollections()[0]);
     }
 
     public void testSortOrderOfFields() throws Exception {
@@ -114,10 +113,9 @@
 	    assertEquals("alive", fields[1]);
         assertEquals("anEnum", fields[2]);
 	    assertEquals("bigDecimal", fields[3]);
-
     }
+    
     public void testEnumFields() throws Exception {
-
 	    SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
 	    SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n import org.drools.guvnor.server.rules.SomeFact", new ArrayList(), new ArrayList() );
 	    assertNotNull(eng);
@@ -127,9 +125,8 @@
         assertEquals(a[0],"0="+EnumClass.v1);
         assertEquals(a[1],"1="+EnumClass.v2);
         assertEquals(a[2],"2="+EnumClass.v3);
-
-
     }
+
     public void testSortOrderOfFacts() throws Exception {
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
         SuggestionCompletionEngine eng = loader.getSuggestionEngine( "package foo \n import org.drools.guvnor.server.rules.SomeFact\n import org.drools.Person", new ArrayList(), new ArrayList() );
@@ -139,8 +136,6 @@
 
         assertEquals("Person", facts[0]);
         assertEquals("SomeFact", facts[1]);
-
-
     }
 
     public void testTypeDeclarations() throws Exception {
@@ -184,7 +179,6 @@
         assertEquals(FIELD_CLASS_TYPE.TYPE_DECLARATION_CLASS, eng.getFieldClassType( "LoanApplication", "applicant" ));
     }
 
-
     public void testLoaderWithExistingClassloader() throws Exception {
         MockClassLoader mcl = new MockClassLoader();
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader(mcl);
@@ -192,15 +186,13 @@
         assertNotNull(eng);
         //assertNotNull(eng.dataEnumLists);
         assertTrue(mcl.called);
-
     }
 
-
     static class MockClassLoader extends ClassLoader {
 
         public boolean called = false;
 
-        public Class loadClass(String name) {
+        public Class<?> loadClass(String name) {
             called = true;
             return Object.class;
         }



More information about the jboss-svn-commits mailing list