[jboss-svn-commits] JBL Code SVN: r13832 - 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
Sun Jul 29 19:50:58 EDT 2007


Author: KrisVerlaenen
Date: 2007-07-29 19:50:58 -0400 (Sun, 29 Jul 2007)
New Revision: 13832

Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/DefaultCompletionProcessor.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java
Log:


Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/DefaultCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/DefaultCompletionProcessor.java	2007-07-29 23:24:45 UTC (rev 13831)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/DefaultCompletionProcessor.java	2007-07-29 23:50:58 UTC (rev 13832)
@@ -188,25 +188,55 @@
      * accessors can exist for one property. for that case we want to keep only one proposal.
      */
     protected Collection getJavaMvelCompletionProposals(final String javaText,
-                                                  final String prefix, int documentOffset,
-                                                  Map params) {
-        final Collection javaCompletionProposals = new HashSet();
-        requestJavaCompletionProposals( javaText,
-                                        prefix,
-                                        documentOffset,
-                                        params,
-                                        javaCompletionProposals );
-        final Collection result  = new HashSet();
-        CompletionRequestor requestor = new MvelCompletionRequestor( prefix,
-        															 documentOffset,
-        															 javaText,
-        															 result );
-        for (Iterator iterator = javaCompletionProposals.iterator(); iterator.hasNext(); ) {
-        	requestor.accept((CompletionProposal) iterator.next());
-        }
-        return result;
-    }
+			final String prefix, final int documentOffset, Map params) {
+		final Collection set = new HashSet();
+		CompletionRequestor requestor = new MvelCompletionRequestor(prefix,
+				documentOffset, javaText, set);
+		requestJavaMVELCompletionProposals(javaText, prefix, params, requestor);
+		return set;
+	}
 
+	protected void requestJavaMVELCompletionProposals(final String javaText,
+			final String prefix, Map params, CompletionRequestor requestor) {
+
+    	// TODO different methods for MVEL and Java code completion
+    	// now reusing Java completion proposals
+    	// can this be used by MVEL as well?
+		IEditorInput input = getEditor().getEditorInput();
+		if (!(input instanceof IFileEditorInput)) {
+			return;
+		}
+		IProject project = ((IFileEditorInput) input).getFile().getProject();
+		IJavaProject javaProject = JavaCore.create(project);
+
+		try {
+			IEvaluationContext evalContext = javaProject.newEvaluationContext();
+			List imports = getImports();
+			if (imports != null && imports.size() > 0) {
+				evalContext.setImports((String[]) imports
+						.toArray(new String[imports.size()]));
+			}
+			StringBuffer javaTextWithParams = new StringBuffer();
+			Iterator iterator = params.entrySet().iterator();
+			while (iterator.hasNext()) {
+				Map.Entry entry = (Map.Entry) iterator.next();
+				// this does not seem to work, so adding variables manually
+				// evalContext.newVariable((String) entry.getValue(), (String)
+				// entry.getKey(), null);
+				javaTextWithParams.append(entry.getValue() + " "
+						+ entry.getKey() + ";\n");
+			}
+			javaTextWithParams.append("org.drools.spi.KnowledgeHelper drools;");
+			javaTextWithParams.append(javaText);
+			String text = javaTextWithParams.toString();
+			// System.out.println( "" );
+			// System.out.println( "MVEL: synthetic Java text:" + text );
+			evalContext.codeComplete(text, text.length(), requestor);
+		} catch (Throwable t) {
+			DroolsEclipsePlugin.log(t);
+		}
+	}
+
     protected void requestJavaCompletionProposals(final String javaText,
                                                   final String prefix,
                                                   final int documentOffset,

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-07-29 23:24:45 UTC (rev 13831)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/editors/completion/RuleCompletionProcessor.java	2007-07-29 23:50:58 UTC (rev 13832)
@@ -778,7 +778,7 @@
 			}
 
 		} catch (Throwable e) {
-			// do nothing
+			DroolsEclipsePlugin.log(e);
 		}
 
 		return proposals;




More information about the jboss-svn-commits mailing list