[jboss-svn-commits] JBL Code SVN: r10005 - in labs/jbossrules/trunk: drools-jbrms/src/main/java/org/drools/brms/client/rpc and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Mar 6 20:08:19 EST 2007
Author: tirelli
Date: 2007-03-06 20:08:18 -0500 (Tue, 06 Mar 2007)
New Revision: 10005
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilder.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilderTest.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceFactory.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
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/ContentHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DSLRuleContentHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/PlainTextContentHandler.java
Log:
JBRULES-629: Inspecting imports and populating suggestion completion engine
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2007-03-07 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -101,9 +101,9 @@
bytes,
PROTECTION_DOMAIN );
// instantiating target class
- int index = ((Integer) inspector.getFieldNames().get( fieldName )).intValue();
+ Integer index = (Integer) inspector.getFieldNames().get( fieldName );
ValueType valueType = ValueType.determineValueType( fieldType );
- final Object[] params = { new Integer(index), fieldType, valueType };
+ final Object[] params = { index, fieldType, valueType };
return (BaseClassFieldExtractor) newClass.getConstructors()[0].newInstance( params );
}
} catch ( final Exception e ) {
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceFactory.java 2007-03-07 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceFactory.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -1,7 +1,5 @@
package org.drools.brms.client.rpc;
-import org.drools.brms.client.rpc.mock.MockRepositoryServiceAsync;
-
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-03-07 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -208,9 +208,13 @@
//load standard meta data
asset.metaData = populateMetaData( item );
+ // get package header
+ PackageItem pkgItem = repo.loadPackage( asset.metaData.packageName );
+ String header = pkgItem.getHeader();
+
//load the content
ContentHandler handler = ContentHandler.getHandler( asset.metaData.format );
- handler.retrieveAssetContent(asset, item);
+ handler.retrieveAssetContent(asset, pkgItem, item);
return asset;
}
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 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -1,31 +1,35 @@
package org.drools.brms.server.contenthandler;
-import java.util.HashMap;
-import java.util.Map;
+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.client.modeldriven.brxml.DSLSentence;
-import org.drools.brms.client.modeldriven.brxml.DSLSentenceFragment;
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.util.BRLPersistence;
+import org.drools.brms.server.util.SuggestionCompletionEngineBuilder;
import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
+import org.drools.util.asm.ClassFieldInspector;
import com.google.gwt.user.client.rpc.SerializableException;
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,
AssetItem item) throws SerializableException {
RuleModel model = BRLPersistence.getInstance().toModel( item.getContent() );
RuleModelData data = new RuleModelData();
data.model = model;
- //TODO: replace with the code that loads it from a cache server side.
- //otherwise it will look at the current package, and then work out the model from that.
- data.completionEngine = getDummySuggestionEngine();
+ data.completionEngine = getSuggestionEngine( pkg );
asset.content = data;
}
@@ -36,48 +40,64 @@
repoAsset.updateContent( BRLPersistence.getInstance().toXML( data.model ) );
}
- private SuggestionCompletionEngine getDummySuggestionEngine() {
- SuggestionCompletionEngine com = new SuggestionCompletionEngine();
+ private SuggestionCompletionEngine getSuggestionEngine( PackageItem pkg ) {
+ builder.newCompletionEngine();
- com.factTypes = new String[] {"Board", "Order", "Clothing"};
+ String header = pkg.getHeader();
- Map fieldTypes = new HashMap();
- fieldTypes.put("Board.size", SuggestionCompletionEngine.TYPE_NUMERIC);
- fieldTypes.put("Board.cost", SuggestionCompletionEngine.TYPE_NUMERIC);
- fieldTypes.put("Board.type", SuggestionCompletionEngine.TYPE_STRING);
- fieldTypes.put("Board.name", SuggestionCompletionEngine.TYPE_STRING);
- fieldTypes.put("Order.value", SuggestionCompletionEngine.TYPE_NUMERIC);
- fieldTypes.put("Order.quantity", SuggestionCompletionEngine.TYPE_NUMERIC);
- fieldTypes.put("Clothing.value", SuggestionCompletionEngine.TYPE_NUMERIC);
- fieldTypes.put("Clothing.type", SuggestionCompletionEngine.TYPE_STRING);
- com.fieldTypes = fieldTypes;
+ // 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();
+ }
- Map fieldsForType = new HashMap();
- fieldsForType.put("Board", new String[] {"size", "cost", "type", "name"});
- fieldsForType.put("Order", new String[] {"value", "quantity"});
- fieldsForType.put("Clothing", new String[] {"value", "type"});
- com.fieldsForType = fieldsForType;
-
-
- DSLSentence sen = new DSLSentence();
-// sen.elements = new DSLSentenceFragment[2];
-// sen.elements[0] = new DSLSentenceFragment("Notify manufacturing", false);
-// sen.elements[1] = new DSLSentenceFragment("(something)", true);
-// com.conditionDSLSentences = new DSLSentence[] {sen};
-
- sen = new DSLSentence();
- sen.elements = new DSLSentenceFragment[3];
- sen.elements[0] = new DSLSentenceFragment("Notify manufacturing with warning [", false);
- sen.elements[1] = new DSLSentenceFragment("(quantity of items description)", true);
- sen.elements[2] = new DSLSentenceFragment("]", false);
-
- DSLSentence sen2 = new DSLSentence();
- sen2.elements = new DSLSentenceFragment[1];
- sen2.elements[0] = new DSLSentenceFragment("Reject order (too many items)", false);
-
- com.actionDSLSentences = new DSLSentence[] {sen, sen2};
-
- return com;
+ /**
+ * @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;
}
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java 2007-03-07 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -6,6 +6,7 @@
import org.drools.brms.client.common.AssetFormats;
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepositoryException;
import com.google.gwt.user.client.rpc.SerializableException;
@@ -39,6 +40,7 @@
* @throws SerializableException
*/
public abstract void retrieveAssetContent(RuleAsset asset,
+ PackageItem pkg,
AssetItem item) throws SerializableException;
/**
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DSLRuleContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DSLRuleContentHandler.java 2007-03-07 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/DSLRuleContentHandler.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -4,6 +4,7 @@
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.brms.client.rpc.RuleContentText;
import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
import com.google.gwt.user.client.rpc.SerializableException;
@@ -11,6 +12,7 @@
public void retrieveAssetContent(RuleAsset asset,
+ PackageItem pkg,
AssetItem item) throws SerializableException {
RuleContentText text = new RuleContentText();
text.content = item.getContent();
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java 2007-03-07 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -2,6 +2,7 @@
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
import com.google.gwt.user.client.rpc.SerializableException;
@@ -9,6 +10,7 @@
public void retrieveAssetContent(RuleAsset asset,
+ PackageItem pkg,
AssetItem item) throws SerializableException {
//do nothing, as we have an attachment
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/PlainTextContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/PlainTextContentHandler.java 2007-03-07 01:05:36 UTC (rev 10004)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/PlainTextContentHandler.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -3,6 +3,7 @@
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.brms.client.rpc.RuleContentText;
import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
import com.google.gwt.user.client.rpc.SerializableException;
@@ -10,6 +11,7 @@
public void retrieveAssetContent(RuleAsset asset,
+ PackageItem pkg,
AssetItem item) throws SerializableException {
//default to text, goode olde texte, just like mum used to make.
RuleContentText text = new RuleContentText();
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilder.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilder.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -0,0 +1,174 @@
+/*
+ * Copyright 2006 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.brms.server.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.brxml.DSLSentence;
+import org.drools.brms.client.modeldriven.brxml.DSLSentenceFragment;
+
+/**
+ * A builder to incrementally populate a SuggestionCompletionEngine
+ *
+ * @author etirelli
+ */
+public class SuggestionCompletionEngineBuilder {
+
+ // The following pattern is capable of spliting a DSL sentence into
+ // fragments, supporting \{ escapes. Example:
+ //
+ // {This} is a {pattern} considered pretty \{{easy}\} by most \{people\}. What do you {say}?
+ //
+ // would be parsed into the following fragments:
+ //
+ // Fragment: [{This}]
+ // Fragment: [ is a ]
+ // Fragment: [{pattern}]
+ // Fragment: [ considered pretty {]
+ // Fragment: [{easy}]
+ // Fragment: [} by most {people}. What do you ]
+ // Fragment: [{say}]
+ // Fragment: [?]
+ private final static Pattern splitter = Pattern.compile( "(^|[^\\\\])(\\{[(\\\\\\{)|[^\\{]]*?\\})",
+ Pattern.MULTILINE | Pattern.DOTALL );
+
+ private SuggestionCompletionEngine instance = new SuggestionCompletionEngine();
+ private List factTypes = new ArrayList();
+ private Map fieldsForType = new HashMap();
+ private Map fieldTypes = new HashMap();
+ private Map globalTypes = new HashMap();
+ private List dslSentences = new ArrayList();
+
+ public SuggestionCompletionEngineBuilder() {
+ }
+
+ /**
+ * Start the creation of a new SuggestionCompletionEngine
+ */
+ public void newCompletionEngine() {
+ this.instance = new SuggestionCompletionEngine();
+ this.factTypes = new ArrayList();
+ this.fieldsForType = new HashMap();
+ this.fieldTypes = new HashMap();
+ this.globalTypes = new HashMap();
+ this.dslSentences = new ArrayList();
+ }
+
+ /**
+ * Adds a fact type to the engine
+ *
+ * @param factType
+ */
+ public void addFactType(String factType) {
+ this.factTypes.add( factType );
+ }
+
+ /**
+ * Adds the list of fields for a given type
+ *
+ * @param type
+ * @param fields
+ */
+ public void addFieldsForType(String type,
+ String[] fields) {
+ this.fieldsForType.put( type,
+ fields );
+ }
+
+ /**
+ * Adds a type declaration for a field
+ *
+ * @param field
+ * @param type
+ */
+ public void addFieldType(String field,
+ String type) {
+ this.fieldTypes.put( field,
+ type );
+ }
+
+ /**
+ * Adds a global and its corresponding type to the engine
+ *
+ * @param global
+ * @param type
+ */
+ public void addGlobalType(String global,
+ String type) {
+ this.globalTypes.put( global,
+ type );
+ }
+
+ /**
+ * Adds a DSL Sentence to the engine, splitting it into
+ * chunks of editable and non-editable text
+ *
+ * @param sentence
+ */
+ public void addDSLSentence(String sentence) {
+ // splitting the sentence in fragments
+ Matcher m = splitter.matcher( sentence );
+ int lastEnd = 0;
+ List fragments = new ArrayList();
+
+ while ( m.find() ) {
+ if ( m.start( 2 ) > lastEnd ) {
+ // if there is anything after last match and before the current one, add
+ // a non-editable fragment
+ fragments.add( new DSLSentenceFragment( sentence.substring( lastEnd,
+ m.start( 2 ) ).replaceAll( "\\\\([\\{\\}])",
+ "$1" ),
+ false ) );
+ }
+ // add the editable fragment
+ fragments.add( new DSLSentenceFragment( m.group( 2 ),
+ true ) );
+ lastEnd = m.end( 2 );
+ }
+ if ( lastEnd < sentence.length() ) {
+ // if there is anything after the last match, add as a non-editable fragment
+ fragments.add( new DSLSentenceFragment( sentence.substring( lastEnd ),
+ false ) );
+ }
+
+ DSLSentence sen = new DSLSentence();
+ sen.elements = (DSLSentenceFragment[]) fragments.toArray( new DSLSentenceFragment[fragments.size()] );
+ this.dslSentences.add( sen );
+ }
+
+ /**
+ * Returns a SuggestionCompletionEngine instance populated with
+ * all the data since last call to newCompletionEngine() method
+ *
+ * @return
+ */
+ public SuggestionCompletionEngine getInstance() {
+ this.instance.factTypes = (String[]) this.factTypes.toArray( new String[this.factTypes.size()] );
+ this.instance.fieldsForType = this.fieldsForType;
+ this.instance.fieldTypes = this.fieldTypes;
+ this.instance.globalTypes = this.globalTypes;
+ this.instance.actionDSLSentences = (DSLSentence[]) this.dslSentences.toArray( new DSLSentence[this.dslSentences.size()] );
+ return this.instance;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilder.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ id author date revision
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilderTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilderTest.java 2007-03-07 01:08:18 UTC (rev 10005)
@@ -0,0 +1,61 @@
+package org.drools.brms.server.util;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import junit.framework.TestCase;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.brxml.DSLSentence;
+import org.drools.brms.client.modeldriven.brxml.DSLSentenceFragment;
+
+public class SuggestionCompletionEngineBuilderTest extends TestCase {
+ SuggestionCompletionEngineBuilder builder = new SuggestionCompletionEngineBuilder();
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ builder.newCompletionEngine();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testAddDSLSentence() {
+ String input = "{This} is a {pattern} considered pretty \\{{easy}\\} by most \\{people\\}. What do you {say}?";
+ String[] strFrags = new String[] {"{This}", " is a ", "{pattern}", " considered pretty {", "{easy}", "} by most {people}. What do you ", "{say}", "?"};
+ boolean[] editable = new boolean[] { true, false, true, false, true, false, true, false };
+ builder.addDSLSentence( input );
+
+ SuggestionCompletionEngine engine = builder.getInstance();
+
+ assertEquals( 1,
+ engine.actionDSLSentences.length );
+ DSLSentenceFragment[] fragments = engine.actionDSLSentences[0].elements;
+ assertEquals( 8,
+ fragments.length );
+ for( int i = 0; i < 8; i++ ) {
+ assertEquals( strFrags[i],
+ fragments[i].value );
+ assertEquals( editable[i],
+ fragments[i].isEditableField );
+ }
+
+ }
+
+ public void testPattern() {
+ Pattern imports = Pattern.compile( "import\\s*([\\.a-zA-Z0-9_]+)\\s*[;$]?", Pattern.MULTILINE );
+
+ String input = "\nimport java.util.List \nimport java.util.Map ; \n import a.b.c import x.y.z";
+
+ Matcher m = imports.matcher( input );
+
+ while( m.find() ) {
+ System.out.println("Found: ["+m.group(1)+"]");
+ }
+
+
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/SuggestionCompletionEngineBuilderTest.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ id author date revision
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list