Bugfix for Scout code completion: Possible IllegalArgumentException handled.
diff --git a/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/ui/action/AbstractNlsTextCompletionComputer.java b/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/ui/action/AbstractNlsTextCompletionComputer.java
index baa2ec9..c5ba8ac 100644
--- a/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/ui/action/AbstractNlsTextCompletionComputer.java
+++ b/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/ui/action/AbstractNlsTextCompletionComputer.java
@@ -11,6 +11,7 @@
package org.eclipse.scout.nls.sdk.internal.ui.action;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -86,7 +87,7 @@
@Override
public List<IContextInformation> computeContextInformation(ContentAssistInvocationContext context, IProgressMonitor monitor) {
- return new ArrayList<IContextInformation>();
+ return Collections.emptyList();
}
/*
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/ScoutSdkProposalComputer.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/ScoutSdkProposalComputer.java
index 01f3e10..a36090e 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/ScoutSdkProposalComputer.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/ScoutSdkProposalComputer.java
@@ -11,6 +11,7 @@
package org.eclipse.scout.sdk.ui.internal.extensions.codecompletion;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -69,7 +70,7 @@
@Override
public List<IContextInformation> computeContextInformation(ContentAssistInvocationContext context, IProgressMonitor monitor) {
- return null;
+ return Collections.emptyList();
}
@Override
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindCompletionProposalProcessor.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindCompletionProposalProcessor.java
index 25d8cf6..10bbe25 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindCompletionProposalProcessor.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindCompletionProposalProcessor.java
@@ -10,7 +10,9 @@
******************************************************************************/
package org.eclipse.scout.sdk.ui.internal.extensions.codecompletion.sql;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -27,8 +29,7 @@
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jface.text.contentassist.IContextInformationValidator;
+import org.eclipse.scout.commons.CollectionUtility;
import org.eclipse.scout.sdk.extensions.runtime.classes.RuntimeClasses;
import org.eclipse.scout.sdk.ui.internal.ScoutSdkUi;
import org.eclipse.scout.sdk.util.jdt.JdtUtility;
@@ -39,7 +40,7 @@
import org.eclipse.swt.graphics.Image;
/**
- * <h3>SqlBindCompletionProposalProcessor</h3> ...
+ * <h3>SqlBindCompletionProposalProcessor</h3>
*
* @author Andreas Hoegger
* @since 1.0.8 09.02.2010
@@ -52,24 +53,19 @@
private final Image m_image;
private static final Pattern REGEX_QUOTES = Pattern.compile("\\\"");
private static final Pattern REGEX_BIND = Pattern.compile(".*\\:[A-Za-z0-9\\._-]*$");
- private static final ICompletionProposal[] NO_PROPOSALS = new ICompletionProposal[0];
- private static final IContextInformation[] NO_CONTEXTS = new IContextInformation[0];
public SqlBindCompletionProposalProcessor() {
m_image = ScoutSdkUi.getImage(ScoutSdkUi.Default);
}
- /**
- * {@inheritDoc}
- */
- public ICompletionProposal[] computeCompletionProposals(JavaContentAssistInvocationContext context) {
+ public List<ICompletionProposal> computeCompletionProposals(JavaContentAssistInvocationContext context) {
try {
if (!isSqlStatementLocation(context.getViewer(), context.getInvocationOffset())) {
- return NO_PROPOSALS;
+ return Collections.emptyList();
}
IType formData = getFormDataParameterType(context);
if (formData == null || !formData.exists()) {
- return NO_PROPOSALS;
+ return Collections.emptyList();
}
String prefix = getPrefix(context.getViewer(), context.getInvocationOffset());
HashSet<ICompletionProposal> collector = new HashSet<ICompletionProposal>();
@@ -94,12 +90,12 @@
}
}
- return sorted.values().toArray(new ICompletionProposal[sorted.values().size()]);
+ return CollectionUtility.copyList(sorted.values());
}
catch (Exception e) {
ScoutSdkUi.logWarning("error during creating sql copletion.", e);
}
- return NO_PROPOSALS;
+ return Collections.emptyList();
}
private String getBeanName(String elementName) {
@@ -124,7 +120,7 @@
}
}
- private boolean isSqlStatementLocation(ITextViewer viewer, int offset) throws BadLocationException {
+ private static boolean isSqlStatementLocation(ITextViewer viewer, int offset) throws BadLocationException {
IDocument doc = viewer.getDocument();
if (doc == null || offset > doc.getLength()) {
return false;
@@ -161,7 +157,7 @@
return null;
}
- private String getPrefix(ITextViewer viewer, int offset) throws BadLocationException {
+ private static String getPrefix(ITextViewer viewer, int offset) throws BadLocationException {
IDocument doc = viewer.getDocument();
if (doc == null || offset > doc.getLength()) {
return null;
@@ -174,40 +170,4 @@
return doc.get(offset + 1, length);
}
-
- /*
- * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeContextInformation(org.eclipse.jface.text.ITextViewer, int)
- */
- public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) {
- // no context informations for hippie completions
- return NO_CONTEXTS;
- }
-
- /*
- * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#getCompletionProposalAutoActivationCharacters()
- */
- public char[] getCompletionProposalAutoActivationCharacters() {
- return null;
- }
-
- /*
- * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#getContextInformationAutoActivationCharacters()
- */
- public char[] getContextInformationAutoActivationCharacters() {
- return null;
- }
-
- /*
- * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#getContextInformationValidator()
- */
- public IContextInformationValidator getContextInformationValidator() {
- return null;
- }
-
- /*
- * @see org.eclipse.jface.text.contentassist.ICompletionProposalComputer#getErrorMessage()
- */
- public String getErrorMessage() {
- return null; // no custom error message
- }
}
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindFromFormDataCompletionComputer.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindFromFormDataCompletionComputer.java
index 04a194f..7003b74 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindFromFormDataCompletionComputer.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/extensions/codecompletion/sql/SqlBindFromFormDataCompletionComputer.java
@@ -10,8 +10,7 @@
******************************************************************************/
package org.eclipse.scout.sdk.ui.internal.extensions.codecompletion.sql;
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -25,46 +24,33 @@
import org.osgi.framework.Bundle;
/**
- * <h3>SqlBindFromFormDataCompletionComputer</h3> ...
+ * <h3>SqlBindFromFormDataCompletionComputer</h3>
*
* @author Andreas Hoegger
* @since 1.0.8 09.02.2010
*/
public class SqlBindFromFormDataCompletionComputer implements IJavaCompletionProposalComputer {
- private SqlBindCompletionProposalProcessor m_processor = null;
+ private final SqlBindCompletionProposalProcessor m_processor = new SqlBindCompletionProposalProcessor();
@Override
public List<ICompletionProposal> computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {
- if (!(context instanceof JavaContentAssistInvocationContext)
- || Platform.getBundle(ScoutSdkUi.PLUGIN_ID).getState() != Bundle.ACTIVE) {
- return new ArrayList<ICompletionProposal>(0);
- }
- if (m_processor == null) {
- m_processor = new SqlBindCompletionProposalProcessor();
+ if (!(context instanceof JavaContentAssistInvocationContext) || Platform.getBundle(ScoutSdkUi.PLUGIN_ID).getState() != Bundle.ACTIVE) {
+ return Collections.emptyList();
}
JavaContentAssistInvocationContext javaContext = (JavaContentAssistInvocationContext) context;
- return Arrays.asList(m_processor.computeCompletionProposals(javaContext));
+ return m_processor.computeCompletionProposals(javaContext);
}
@Override
public List<IContextInformation> computeContextInformation(ContentAssistInvocationContext context, IProgressMonitor monitor) {
- if (m_processor == null) {
- m_processor = new SqlBindCompletionProposalProcessor();
- }
- return Arrays.asList(m_processor.computeContextInformation(context.getViewer(), context.getInvocationOffset()));
+ return Collections.emptyList();
}
- /*
- * @see org.eclipse.jface.text.contentassist.ICompletionProposalComputer#getErrorMessage()
- */
@Override
public String getErrorMessage() {
- if (m_processor == null) {
- return "";
- }
- return m_processor.getErrorMessage();
+ return null;
}
@Override