[jboss-svn-commits] JBL Code SVN: r10010 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/server and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 7 04:51:06 EST 2007
Author: michael.neale at jboss.com
Date: 2007-03-07 04:51:06 -0500 (Wed, 07 Mar 2007)
New Revision: 10010
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/SuggestionCompletionCache.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/rules/
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java
Log:
refactoring for suggestion completion engine
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/SuggestionCompletionCache.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/SuggestionCompletionCache.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/SuggestionCompletionCache.java 2007-03-07 09:51:06 UTC (rev 10010)
@@ -0,0 +1,27 @@
+package org.drools.brms.client.packages;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+
+public class SuggestionCompletionCache {
+
+ private static SuggestionCompletionCache INSTANCE = new SuggestionCompletionCache();
+
+ private Map cache = new HashMap();
+
+ public static SuggestionCompletionCache getInstance() {
+ return INSTANCE;
+ }
+
+ public SuggestionCompletionEngine getSuggestions(String packageName) {
+ if (cache.containsKey( packageName )) {
+ return (SuggestionCompletionEngine) cache.get( packageName );
+ } else {
+ return null;
+ }
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/SuggestionCompletionCache.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java 2007-03-07 07:58:55 UTC (rev 10009)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java 2007-03-07 09:51:06 UTC (rev 10010)
@@ -9,6 +9,7 @@
import org.drools.brms.client.modeldriven.brxml.RuleModel;
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.brms.client.rpc.RuleModelData;
+import org.drools.brms.server.rules.SuggestionCompletionLoader;
import org.drools.brms.server.util.BRLPersistence;
import org.drools.brms.server.util.SuggestionCompletionEngineBuilder;
import org.drools.repository.AssetItem;
@@ -19,8 +20,6 @@
public class BRXMLContentHandler extends ContentHandler {
- private SuggestionCompletionEngineBuilder builder = new SuggestionCompletionEngineBuilder();
- private static final Pattern imports = Pattern.compile( "import\\s*([\\.a-zA-Z0-9_]+)\\s*[;$]?", Pattern.MULTILINE );
public void retrieveAssetContent(RuleAsset asset,
PackageItem pkg,
@@ -29,7 +28,9 @@
RuleModelData data = new RuleModelData();
data.model = model;
- data.completionEngine = getSuggestionEngine( pkg );
+
+ SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
+ data.completionEngine = loader.getSuggestionEngine( pkg );
asset.content = data;
}
@@ -40,64 +41,5 @@
repoAsset.updateContent( BRLPersistence.getInstance().toXML( data.model ) );
}
- private SuggestionCompletionEngine getSuggestionEngine( PackageItem pkg ) {
- builder.newCompletionEngine();
-
- String header = pkg.getHeader();
-
- // get fact types from imports
- Matcher m = imports.matcher( header );
- while( m.find() ) {
- String classname = m.group( 1 );
-
- try {
- Class clazz = Class.forName( classname );
- String factType = clazz.getName().replace( clazz.getPackage().getName()+".", "" );
-
- ClassFieldInspector inspector = new ClassFieldInspector( clazz );
- String[] fields = (String[]) inspector.getFieldNames().keySet().toArray( new String[inspector.getFieldNames().size()] );
-
- builder.addFactType( factType );
- builder.addFieldsForType( factType, fields );
- for( int i = 0; i < fields.length; i++ ) {
- // need to fix that
- String fieldType = getFieldType( inspector,
- fields[i] );
- builder.addFieldType( factType+"."+fields[i], fieldType );
- }
- } catch ( ClassNotFoundException e ) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch ( IOException e ) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return builder.getInstance();
- }
- /**
- * @param inspector
- * @param fields
- * @param i
- * @return
- */
- private String getFieldType(ClassFieldInspector inspector,
- String field ) {
- Class type = (Class) inspector.getFieldTypes().get( field );
- String fieldType = null; // if null, will use standard operators
- if( type.isPrimitive() && ( type != boolean.class ) ) {
- fieldType = SuggestionCompletionEngine.TYPE_NUMERIC;
- } else if( Number.class.isAssignableFrom( type ) ) {
- fieldType = SuggestionCompletionEngine.TYPE_NUMERIC;
- } else if( String.class.isAssignableFrom( type ) ) {
- fieldType = SuggestionCompletionEngine.TYPE_STRING;
- } else if( Collection.class.isAssignableFrom( type ) ) {
- fieldType = SuggestionCompletionEngine.TYPE_COLLECTION;
- } else if( Comparable.class.isAssignableFrom( type ) ) {
- fieldType = SuggestionCompletionEngine.TYPE_COMPARABLE;
- }
- return fieldType;
- }
-
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java 2007-03-07 09:51:06 UTC (rev 10010)
@@ -0,0 +1,89 @@
+package org.drools.brms.server.rules;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.server.util.SuggestionCompletionEngineBuilder;
+import org.drools.repository.PackageItem;
+import org.drools.util.asm.ClassFieldInspector;
+
+/**
+ * This utility class loads suggestion completion stuff for the package,
+ * introspecting from models, templates etc.
+ *
+ * This also includes DSL stuff.
+ *
+ * @author Michael Neale
+ *
+ */
+public class SuggestionCompletionLoader {
+
+ private SuggestionCompletionEngineBuilder builder = new SuggestionCompletionEngineBuilder();
+ private static final Pattern imports = Pattern.compile( "import\\s*([\\.a-zA-Z0-9_]+)\\s*[;$]?", Pattern.MULTILINE );
+
+
+ public SuggestionCompletionEngine getSuggestionEngine( PackageItem pkg ) {
+ builder.newCompletionEngine();
+
+ String header = pkg.getHeader();
+
+ // get fact types from imports
+ Matcher m = imports.matcher( header );
+ while( m.find() ) {
+ String classname = m.group( 1 );
+
+ try {
+ Class clazz = Class.forName( classname );
+ String factType = clazz.getName().replace( clazz.getPackage().getName()+".", "" );
+
+ ClassFieldInspector inspector = new ClassFieldInspector( clazz );
+ String[] fields = (String[]) inspector.getFieldNames().keySet().toArray( new String[inspector.getFieldNames().size()] );
+
+ builder.addFactType( factType );
+ builder.addFieldsForType( factType, fields );
+ for( int i = 0; i < fields.length; i++ ) {
+ // need to fix that
+ String fieldType = getFieldType( inspector,
+ fields[i] );
+ builder.addFieldType( factType+"."+fields[i], fieldType );
+ }
+ } catch ( ClassNotFoundException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch ( IOException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ return builder.getInstance();
+ }
+
+ /**
+ * @param inspector
+ * @param fields
+ * @param i
+ * @return
+ */
+ private String getFieldType(ClassFieldInspector inspector,
+ String field ) {
+ Class type = (Class) inspector.getFieldTypes().get( field );
+ String fieldType = null; // if null, will use standard operators
+ if( type.isPrimitive() && ( type != boolean.class ) ) {
+ fieldType = SuggestionCompletionEngine.TYPE_NUMERIC;
+ } else if( Number.class.isAssignableFrom( type ) ) {
+ fieldType = SuggestionCompletionEngine.TYPE_NUMERIC;
+ } else if( String.class.isAssignableFrom( type ) ) {
+ fieldType = SuggestionCompletionEngine.TYPE_STRING;
+ } else if( Collection.class.isAssignableFrom( type ) ) {
+ fieldType = SuggestionCompletionEngine.TYPE_COLLECTION;
+ } else if( Comparable.class.isAssignableFrom( type ) ) {
+ fieldType = SuggestionCompletionEngine.TYPE_COMPARABLE;
+ }
+ return fieldType;
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java 2007-03-07 09:51:06 UTC (rev 10010)
@@ -0,0 +1,24 @@
+package org.drools.brms.server.rules;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.server.SessionHelper;
+import org.drools.repository.PackageItem;
+import org.drools.repository.RulesRepository;
+
+import junit.framework.TestCase;
+
+public class SuggestionCompletionLoaderTest extends TestCase {
+
+ public void testLoader() throws Exception {
+
+ RulesRepository repo = new RulesRepository(SessionHelper.getSession());
+ PackageItem item = repo.createPackage( "testLoader", "to test the loader" );
+ item.updateHeader( "import java.util.Date" );
+
+ SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
+ SuggestionCompletionEngine engine = loader.getSuggestionEngine( item );
+ assertNotNull(engine);
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list