[hibernate-commits] Hibernate SVN: r18744 - in branches/Branch_3_2/HibernateExt/tools/src: test/org/hibernate/tool/ide/completion and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Feb 9 07:49:20 EST 2010


Author: max.andersen at jboss.com
Date: 2010-02-09 07:49:20 -0500 (Tue, 09 Feb 2010)
New Revision: 18744

Modified:
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/HQLCodeAssist.java
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java
Log:
Fix JBIDE-5810 QLCodeAssist doesn't split words correctly (patch from dgeraskov)

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/HQLCodeAssist.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/HQLCodeAssist.java	2010-02-09 12:38:47 UTC (rev 18743)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/HQLCodeAssist.java	2010-02-09 12:49:20 UTC (rev 18744)
@@ -1,5 +1,6 @@
 package org.hibernate.tool.ide.completion;
 
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
@@ -10,6 +11,12 @@
 	private Configuration configuration;
 	private ConfigurationCompletion completion;
 	
+	private static final char[] charSeparators;	
+	static {
+		charSeparators = new char[]{',', '(', ')'};
+		Arrays.sort(charSeparators);
+	}
+	
 	public HQLCodeAssist(Configuration configuration) {
 		this.configuration = configuration;
 		completion = new ConfigurationCompletion(configuration);
@@ -81,7 +88,7 @@
 		return configuration;
 	}
 
-	public int findNearestWhiteSpace( CharSequence doc, int start ) {
+	public static int findNearestWhiteSpace( CharSequence doc, int start ) {
     	boolean loop = true;
     	
     	int offset = 0;
@@ -89,7 +96,7 @@
     	int tmpOffset = start - 1;
     	while (loop && tmpOffset >= 0) {
     		char c = doc.charAt(tmpOffset);
-    		if(Character.isWhitespace(c)) {
+    		if(isWhitespace(c)) {
     			loop = false;
     		} else {
     			tmpOffset--;
@@ -100,4 +107,9 @@
     	return offset;
     }
 
+	private static boolean isWhitespace(char c) {
+		return Arrays.binarySearch(charSeparators, c) >= 0  
+				|| Character.isWhitespace(c);
+	}
+
 }

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java	2010-02-09 12:38:47 UTC (rev 18743)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java	2010-02-09 12:49:20 UTC (rev 18744)
@@ -80,7 +80,7 @@
         cc.getMatchingImports( "StoreC", hcc );
         assertEquals("Invalid entity names count", 1, hcc.getCompletionProposals().length);
         assertEquals("StoreCity should have been found", "StoreCity", hcc.getCompletionProposals()[0].getSimpleName());
-        
+      
         hcc.clear();
         cc.getMatchingImports( "NotThere", hcc );        
         assertTrue(hcc.getCompletionProposals().length==0);
@@ -266,9 +266,50 @@
 			assertNotNull(proposal.getShortEntityName());
 			assertNotNull(proposal.getEntityName());
 			//assertNotNull(proposal.getShortEntityName());
-		}    	    	    	
+		}
+    	
+    	c.clear();
+    	query = "from Store, | ";
+    	caretPosition = getCaretPosition(query);
+		hqlEval.codeComplete(query, caretPosition, c);
+    
+    	completionProposals = c.getCompletionProposals();
+    	
+    	assertEquals(9, completionProposals.length);
+    	       	
     }
     
+    public void testFromNonWhitespace() {
+    	Collector c = new Collector();
+    	
+    	IHQLCodeAssist hqlEval = new HQLCodeAssist(sf);
+    	
+    	String query = null;
+    	int caretPosition = -1;
+    	HQLCompletionProposal[] completionProposals = null;
+    	
+    	c.clear();
+    	query = "from Store,| ";
+    	caretPosition = getCaretPosition(query);
+		hqlEval.codeComplete(query, caretPosition, c);    
+    	completionProposals = c.getCompletionProposals();    	
+    	assertEquals("should get results after a nonwhitespace separator", 9, completionProposals.length);
+    	
+    	c.clear();
+    	query = "from Store s where ";
+    	caretPosition = getCaretPosition(query);
+		hqlEval.codeComplete(query, caretPosition, c);    
+    	completionProposals = c.getCompletionProposals();    	
+    	assertTrue(completionProposals.length > 0);
+    	
+    	c.clear();
+    	query = "from Store s where (";
+    	caretPosition = getCaretPosition(query);
+		hqlEval.codeComplete(query, caretPosition, c);    
+    	completionProposals = c.getCompletionProposals();    	
+    	assertTrue(completionProposals.length > 0);
+ 	
+    }
     public void testBasicFromPartialEntityName() {
     	Collector c = new Collector();
     	



More information about the hibernate-commits mailing list