[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