[jboss-svn-commits] JBL Code SVN: r14669 - labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 27 17:18:00 EDT 2007
Author: pombredanne
Date: 2007-08-27 17:18:00 -0400 (Mon, 27 Aug 2007)
New Revision: 14669
Modified:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java
Log:
JBRULES-1134: Do not add duplicate mvel completion prposals for variables, based on a crude comparison of the tokenized display string.
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java 2007-08-27 20:05:15 UTC (rev 14668)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java 2007-08-27 21:18:00 UTC (rev 14669)
@@ -35,6 +35,7 @@
import org.drools.util.asm.ClassFieldInspector;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.swt.graphics.Image;
import org.mvel.CompiledExpression;
import org.mvel.ExpressionCompiler;
@@ -1050,14 +1051,13 @@
final ParserContext initialContext = new ParserContext();
final ParserContext parserContext = new ParserContext( dialect.getImports(),
null,
- drlInfo.getPackageName() + "." + currentRule.getRuleName());
+ drlInfo.getPackageName() + "." + currentRule.getRuleName() );
for ( Iterator it = dialect.getPackgeImports().values().iterator(); it.hasNext(); ) {
- String packageImport = ( String ) it.next();
+ String packageImport = (String) it.next();
parserContext.addPackageImport( packageImport );
}
-
try {
initialContext.setStrictTypeEnforcement( dialect.isStrictMode() );
@@ -1098,6 +1098,12 @@
for ( Iterator iter = inputs.entrySet().iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry) iter.next();
String prop = (String) entry.getKey();
+
+ //JBRULES-1134 do not add completions if they already exist
+ if (containsProposal( proposals, prop )) {
+ continue ;
+ }
+
Class type = (Class) entry.getValue();
String display = prop + " - " + type.getName().replace( '$',
'.' );
@@ -1111,6 +1117,34 @@
}
}
+ /**
+ * Attempt to compare proposals of different types based on the tokenized display string
+ * @param proposals
+ * @param newProposal
+ * @return true if the collection contains a prposal which matches the new Proposal.
+ * The match is based on the first token based on a space split
+ */
+ boolean containsProposal(final Collection proposals, String newProposal) {
+ for ( Iterator iter = proposals.iterator(); iter.hasNext(); ) {
+ ICompletionProposal prop = (ICompletionProposal) iter.next();
+ String displayString = prop.getDisplayString();
+ String[] existings = displayString.split( " " );
+ if (existings.length == 0) {
+ continue;
+ }
+
+ String[] newProposals = newProposal.split( " " );
+ if (newProposals.length == 0) {
+ continue;
+ }
+
+ if (existings[0].equals( newProposals[0] )) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private void addRuleParameters(Map result,
List descrs) {
if ( descrs == null ) {
More information about the jboss-svn-commits
mailing list