JBoss Tools SVN: r10568 - trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-09-30 11:23:04 -0400 (Tue, 30 Sep 2008)
New Revision: 10568
Modified:
trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/OperationTokenDescription.java
trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/PrimitiveValueTokenDescription.java
Log:
JBIDE-1497.
Minor improvements
Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/OperationTokenDescription.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/OperationTokenDescription.java 2008-09-30 13:35:05 UTC (rev 10567)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/OperationTokenDescription.java 2008-09-30 15:23:04 UTC (rev 10568)
@@ -55,7 +55,7 @@
}
if(end < 0) return false;
char ch = tokenizer.lookUpChar(end);
- if(Character.isWhitespace(ch) || ch == '\0' || ch == '('
+ if(Character.isWhitespace(ch) || ch == '\0' || !Character.isJavaIdentifierPart(ch)
|| (canBeFollowedByOperand && Character.isJavaIdentifierPart(ch)
|| ch == '\'' || ch == '"' || ch == '-')) {
return true;
Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/PrimitiveValueTokenDescription.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/PrimitiveValueTokenDescription.java 2008-09-30 13:35:05 UTC (rev 10567)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/PrimitiveValueTokenDescription.java 2008-09-30 15:23:04 UTC (rev 10568)
@@ -56,9 +56,11 @@
}
private boolean isNumber(Tokenizer tokenizer, int offset) {
- //TODO improve
char ch = tokenizer.lookUpChar(offset);
- return Character.isDigit(ch);
+ if(ch == '.') {
+ ch = tokenizer.lookUpChar(offset + 1);
+ }
+ return ch != '\0' && Character.isDigit(ch);
}
public boolean read(Tokenizer tokenizer, int offset) {
@@ -75,20 +77,31 @@
return true;
}
+ static String TYPE_CHAR = "lLfFdD";
private boolean readNumber(Tokenizer tokenizer, int offset) {
int i = offset;
+ int dotCount = 1;
+ if(tokenizer.startsWith("0x")) {
+ i += 2;
+ dotCount = 0;
+ }
char ch = '\0';
boolean lastCharIsWrong = false;
- int dotCount = 0;
while((ch = tokenizer.readNextChar()) != '\0') {
if(ch == '.') {
- dotCount++;
- if(dotCount > 1) {
+ dotCount--;
+ if(dotCount < 0) {
lastCharIsWrong = true;
break;
}
} else if(!Character.isDigit(ch)) {
- //TODO improve: 0x1, 1d, .f, etc
+ if(TYPE_CHAR.indexOf(ch) >= 0) {
+ char ch1 = tokenizer.lookUpChar(i + 1);
+ if(ch1 == '\0' || !Character.isJavaIdentifierPart(ch1)) {
+ i++;
+ break;
+ }
+ }
lastCharIsWrong = true;
break;
}
16 years, 3 months
JBoss Tools SVN: r10567 - trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-09-30 09:35:05 -0400 (Tue, 30 Sep 2008)
New Revision: 10567
Removed:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/ELParser.java
Log:
JBIDE-1497.
Old ELParser removed.
Deleted: trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/ELParser.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/ELParser.java 2008-09-30 13:33:28 UTC (rev 10566)
+++ trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/ELParser.java 2008-09-30 13:35:05 UTC (rev 10567)
@@ -1,307 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.common.model.util;
-
-public class ELParser {
- public static int NONE = 0;
- public static int OPEN = 1;
- public static int CLOSE = 2;
- public static int NAME = 3;
- public static int DOT = 4;
- public static int OPEN_ARG = 5;
- public static int CLOSE_ARG = 6;
- public static int ARGUMENT = 7;
- public static int SPACES = 8;
-
-
- static String[] TOKENS = {"+", "{", "}", "NAME", ".", "['", "']", "ARG", "_"};
-
- public class Token {
- public int start;
- public int end;
- public int kind;
- public Token previous;
- public Token next;
-
- public String toString() {
- return "[" + TOKENS[kind] + "]" + "(" + start + ":" + end + ")";
- }
-
- Token add(int kind) {
- Token t = new Token();
- t.start = end;
- t.kind = kind;
- next = t;
- next.previous = this;
- return t;
- }
- }
-
- Token root;
-
- public Token parse(String s) {
- root = new Token();
- root.kind = NONE;
- root.start = 0;
- Token current = root;
- int state = 0;
- for (int i = 0; i < s.length(); i++) {
- char c = s.charAt(i);
- if(isExpressionStart(s, i)) {
- current = startNewToken(current, i, OPEN);
- current = startNewToken(current, i + 2, NONE);
- state = 1;
- i++;
- continue;
- } else if(isIncompleteExpressionStart(s, i)) {
- current = startNewToken(current, i, OPEN);
- current = startNewToken(current, i + 1, NONE);
- state = 1;
- } else if(c == '}') {
- current = startNewToken(current, i, CLOSE);
- current = startNewToken(current, i + 1, NONE);
- state = 1;
- continue;
- }
- switch (state) {
- case 0:
-// break;
- case 1:
- if(Character.isWhitespace(c)) {
- current = startNewToken(current, i, SPACES);
- state = 16;
- } else if(Character.isJavaIdentifierStart(c)) {
- current.kind = NAME;
- state = 2;
- } else {
- state = 3;
- }
- break;
- case 2:
- if(c == '[') {
- current = startNewToken(current, i, OPEN_ARG);
- if(i < s.length() - 1 && s.charAt(i + 1) == '\'') {
- current = startNewToken(current, i + 2, ARGUMENT);
- ++i;
- } else {
- current = startNewToken(current, i + 1, ARGUMENT);
- }
- state = 5;
- } else if(c == '.') {
- current = startNewToken(current, i, DOT);
- current = startNewToken(current, i + 1, NONE);
- state = 1;
- } else if(Character.isWhitespace(c)) {
- current = startNewToken(current, i, SPACES);
- state = 26;
- } else if(Character.isJavaIdentifierPart(c)) {
- //continue
- } else {
- current = startNewToken(current, i, NONE);
- state = 3;
- }
- break;
- case 3:
- if(Character.isJavaIdentifierStart(c)) {
- current = startNewToken(current, i, NAME);
- state = 2;
- } else if(Character.isWhitespace(c)) {
- current = startNewToken(current, i, SPACES);
- state = 26;
- }
- break;
- case 4:
- if(c == ']') {
- current = startNewToken(current, i + 1, NONE);
- state = 1;
- } else if(Character.isJavaIdentifierPart(c) || c == '.') {
- //continue
- } else if(Character.isWhitespace(c)) {
- current = startNewToken(current, i, SPACES);
- state = 46;
- } else {
- current = startNewToken(current, i, NONE);
- state = 3;
- }
- break;
- case 5:
- if(c == ']') {
- if(c > 0 && s.charAt(i - 1) == '\'') {
- current.end = i - 1;
- } else {
- current.end = i;
- }
- current = current.add(CLOSE_ARG);
- current = startNewToken(current, i + 1, NONE);
- state = 1;
- }
- break;
- //reading whitespace
- case 16:
- if(Character.isWhitespace(c)) {
- //continue
- } else if(Character.isJavaIdentifierStart(c)) {
- current = startNewToken(current, i, NAME);
- state = 2;
- } else if(current.kind == SPACES) {
- current = startNewToken(current, i, NONE);
- state = 3;
- } else {
- state = 3;
- }
- break;
- case 26:
- if(c == '[') {
- current = startNewToken(current, i, OPEN_ARG);
- if(i < s.length() - 1 && s.charAt(i + 1) == '\'') {
- current = startNewToken(current, i + 2, ARGUMENT);
- ++i;
- } else {
- current = startNewToken(current, i + 1, ARGUMENT);
- }
- state = 5;
- } else if(c == '.') {
- current = startNewToken(current, i, DOT);
- current = startNewToken(current, i + 1, NONE);
- state = 1;
- } else if(Character.isWhitespace(c)) {
- //continue
- } else if(current.kind == SPACES && Character.isJavaIdentifierStart(c)) {
- if(current.previous != null && current.previous.kind == NAME) {
- current.kind = NONE;
- current = startNewToken(current, i, NAME);
- state = 2;
- } else {
- current = startNewToken(current, i, NAME);
- state = 2;
- }
- } else {
- current = startNewToken(current, i, NONE);
- state = 3;
- }
- break;
- case 46:
- if(c == ']') {
- current = startNewToken(current, i + 1, NONE);
- state = 1;
- } else if(Character.isJavaIdentifierPart(c) || c == '.') {
- current = startNewToken(current, i, NAME);
- state = 2;
- } else if(Character.isWhitespace(c)) {
- //continue
- } else {
- current = startNewToken(current, i, NONE);
- state = 3;
- }
- break;
- default:
- break;
- }
- }
- current.end = s.length();
- if(current.start == current.end && current.previous != null) {
- current = current.previous;
- current.next = null;
- }
-// Token c = root;
-// ModelPlugin.log(s);
-// while(c != null) {
-// ModelPlugin.log(c.toString());
-// c = c.next;
-// }
- return root;
- }
-
- private Token startNewToken(Token current, int i, int kind) {
- if(current.start < i) {
- current.end = i;
- current = current.add(kind);
- } else {
- current.kind = kind;
- }
- return current;
- }
-
- private boolean isExpressionStart(String s, int offset) {
- if(offset >= s.length() - 1) return false;
- char c1 = s.charAt(offset);
- char c2 = s.charAt(offset + 1);
- return (c1 == '$' || c1 == '#') && c2 == '{';
- }
- private boolean isIncompleteExpressionStart(String s, int offset) {
- if(offset >= s.length()) return false;
- char c1 = s.charAt(offset);
- return (c1 == '$' || c1 == '#');
- }
-
- public static boolean isPartOfCall(int kind) {
- return kind == ARGUMENT || kind == CLOSE_ARG || kind == OPEN_ARG || kind == DOT || kind == NAME || kind == SPACES;
- }
-
- public static Token getTokenAt(Token root, int offset) {
- Token c = root;
- while(c.end < offset && c.next != null) c = c.next;
- return c;
- }
- public static Token getCallStart(Token t) {
- if(t == null || !isPartOfCall(t.kind)) return null;
- Token c = t;
- while(c != null && c.previous != null && isPartOfCall(c.previous.kind)) c = c.previous;
- if(c != null && c.kind == SPACES) {
- if(c.next == null) return null;
- c = c.next;
- }
- if(c == null || !isPartOfCall(c.kind)) return null;
- return c;
- }
- public static Token getCallEnd(Token t) {
- if(t == null || !isPartOfCall(t.kind)) return null;
- Token c = t;
- while(c != null && c.next != null && isPartOfCall(c.next.kind)) c = c.next;
- if(c != null && c.kind == SPACES && c.previous != null) {
- if(c.previous == null) return null;
- c = c.previous;
- }
- if(c == null || c.kind == SPACES) return null;
- return c;
- }
- public static Token getPrecedingOpen(Token t, int offset) {
- if(t == null || t.kind == CLOSE) return null;
- if(t.kind == OPEN && t.start < offset) return t;
- Token c = t.previous;
- while(true) {
- if(c == null || c.kind == CLOSE) return null;
- if(c.kind == OPEN) return c;
- c = c.previous;
- }
- }
- public static boolean isFollowedByClose(Token t, int offset) {
- if(t == null) return false;
- if(t.kind == CLOSE) return offset < t.end;
- if(t.kind == OPEN && t.start == offset) return false;
- Token c = t.next;
- while(true) {
- if(c == null || c.kind == OPEN) return false;
- if(c.kind == CLOSE) return true;
- c = c.next;
- }
- }
-
- public static Token findLastCall(Token token) {
- if(token == null) return null;
- Token last = token;
- while(last.next != null) last = last.next;
- if(!isPartOfCall(last.kind)) return null;
- while(last.previous != null && isPartOfCall(last.previous.kind)) last = last.previous;
- return last;
- }
-
-}
16 years, 3 months
JBoss Tools SVN: r10566 - in trunk/jst/plugins/org.jboss.tools.jst.jsp: src/org/jboss/tools/jst/jsp/contentassist and 1 other directories.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-09-30 09:33:28 -0400 (Tue, 30 Sep 2008)
New Revision: 10566
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/META-INF/MANIFEST.MF
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/JSPActiveContentAssistProcessor.java
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBeanPropertyResource.java
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBundlePropertyResource.java
Log:
JBIDE-1497.
Old ELParser replaced.
Modified: trunk/jst/plugins/org.jboss.tools.jst.jsp/META-INF/MANIFEST.MF
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.jsp/META-INF/MANIFEST.MF 2008-09-30 13:32:44 UTC (rev 10565)
+++ trunk/jst/plugins/org.jboss.tools.jst.jsp/META-INF/MANIFEST.MF 2008-09-30 13:33:28 UTC (rev 10566)
@@ -23,6 +23,7 @@
Require-Bundle: org.jboss.tools.common,
org.jboss.tools.common.kb,
org.jboss.tools.common.model,
+ org.jboss.tools.common.el.core,
org.jboss.tools.common.text.xml,
org.jboss.tools.common.model.ui,
org.jboss.tools.jst.web,
Modified: trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/JSPActiveContentAssistProcessor.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/JSPActiveContentAssistProcessor.java 2008-09-30 13:32:44 UTC (rev 10565)
+++ trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/JSPActiveContentAssistProcessor.java 2008-09-30 13:33:28 UTC (rev 10566)
@@ -12,12 +12,18 @@
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import org.eclipse.wst.sse.core.utils.StringUtils;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
import org.eclipse.wst.xml.ui.internal.contentassist.ContentAssistRequest;
import org.eclipse.wst.xml.ui.internal.contentassist.XMLRelevanceConstants;
import org.eclipse.wst.xml.ui.internal.util.SharedXMLEditorPluginImageHelper;
+import org.jboss.tools.common.el.core.model.ELInstance;
+import org.jboss.tools.common.el.core.model.ELModel;
+import org.jboss.tools.common.el.core.model.ELUtil;
+import org.jboss.tools.common.el.core.parser.ELParser;
+import org.jboss.tools.common.el.core.parser.ELParserFactory;
import org.jboss.tools.common.kb.KbException;
import org.jboss.tools.common.kb.KbProposal;
import org.jboss.tools.common.kb.KbQuery;
@@ -264,33 +270,10 @@
* @return
*/
private int getELStartPosition(String matchString) {
- if (matchString == null || matchString.length() == 0)
- return -1;
-
- int offset = matchString.length();
-
- while (--offset >= 0) {
- if ('}' == matchString.charAt(offset))
- return -1;
-
- if ('"' == matchString.charAt(offset) || '\'' == matchString.charAt(offset)) {
- int backslashCount = 0;
- while ((offset - 1 - backslashCount) >= 0 && matchString.charAt(offset - 1 - backslashCount) == '\\') {
- backslashCount++;
- }
-
- if (backslashCount % 2 == 0)
- return -1;
- }
-
- if ('{' == matchString.charAt(offset) &&
- (offset - 1) >= 0 &&
- ('#' == matchString.charAt(offset - 1) ||
- '$' == matchString.charAt(offset - 1))) {
- return (offset - 1);
- }
- }
- return -1;
+ ELParser p = ELParserFactory.createJbossParser();
+ ELModel model = p.parse(matchString);
+ ELInstance is = ELUtil.findInstance(model, matchString.length());
+ return is == null ? -1 : is.getStartPosition();
}
/* Checks if the preceding character is a Sharp-character
@@ -321,68 +304,12 @@
currentValue.length() < matchString.length())
return -1;
- String restOfCurrentValue = currentValue.substring(matchString.length());
- int offset = -1;
+ ELParser p = ELParserFactory.createJbossParser();
+ ELModel model = p.parse(currentValue);
+ ELInstance is = ELUtil.findInstance(model, matchString.length());
+ if(is == null || is.getCloseInstanceToken() == null) return -1;
- char inQuotesChar = 0;
- while (++offset < restOfCurrentValue.length()) {
- if (inQuotesChar == 0) {
- if ('}' == restOfCurrentValue.charAt(offset))
- return matchString.length() + offset;
-
- if ('#' == restOfCurrentValue.charAt(offset))
- return -1;
-
- if ('"' == restOfCurrentValue.charAt(offset) ||
- '\'' == restOfCurrentValue.charAt(offset)) {
- inQuotesChar = restOfCurrentValue.charAt(offset);
- }
-
- if ('\\' == restOfCurrentValue.charAt(offset)) {
- int backslashCount = 1;
-
- while ((offset + backslashCount) < restOfCurrentValue.length() &&
- restOfCurrentValue.charAt(offset + backslashCount) == '\\') {
- backslashCount++;
- }
-
- if (offset + backslashCount >= restOfCurrentValue.length())
- return -1;
-
- if (backslashCount % 2 == 1 &&
- ('"' == restOfCurrentValue.charAt(offset + backslashCount) ||
- '\'' == restOfCurrentValue.charAt(offset + backslashCount))) {
- inQuotesChar = restOfCurrentValue.charAt(offset + backslashCount);
- offset += backslashCount;
- }
- }
- } else {
- if ('"' == restOfCurrentValue.charAt(offset) ||
- '\'' == restOfCurrentValue.charAt(offset)) {
- inQuotesChar = 0;
- }
-
- if ('\\' == restOfCurrentValue.charAt(offset)) {
- int backslashCount = 1;
-
- while ((offset + backslashCount) < restOfCurrentValue.length() &&
- restOfCurrentValue.charAt(offset + backslashCount) == '\\') {
- backslashCount++;
- }
-
- if (offset + backslashCount >= restOfCurrentValue.length())
- return -1;
-
- if (backslashCount % 2 == 1 &&
- ('"' == restOfCurrentValue.charAt(offset + backslashCount) ||
- '\'' == restOfCurrentValue.charAt(offset + backslashCount))) {
- inQuotesChar = 0;
- offset += backslashCount;
- }
- }
- }
- }
- return -1;
+ return is.getEndPosition();
}
}
\ No newline at end of file
Modified: trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBeanPropertyResource.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBeanPropertyResource.java 2008-09-30 13:32:44 UTC (rev 10565)
+++ trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBeanPropertyResource.java 2008-09-30 13:33:28 UTC (rev 10566)
@@ -20,11 +20,17 @@
import java.util.TreeSet;
import org.eclipse.ui.IEditorInput;
+import org.jboss.tools.common.el.core.model.ELExpression;
+import org.jboss.tools.common.el.core.model.ELInstance;
+import org.jboss.tools.common.el.core.model.ELInvocationExpression;
+import org.jboss.tools.common.el.core.model.ELModel;
+import org.jboss.tools.common.el.core.model.ELPropertyInvocation;
+import org.jboss.tools.common.el.core.parser.ELParser;
+import org.jboss.tools.common.el.core.parser.ELParserFactory;
import org.jboss.tools.common.kb.KbDinamicResource;
import org.jboss.tools.common.kb.KbProposal;
import org.jboss.tools.common.kb.KbProposal.PostProcessing;
import org.jboss.tools.common.model.XModel;
-import org.jboss.tools.common.model.util.ELParser;
import org.jboss.tools.jst.jsp.JspEditorPlugin;
import org.jboss.tools.jst.web.project.list.IWebPromptingProvider;
import org.jboss.tools.jst.web.project.list.WebPromptingProvider;
@@ -53,53 +59,32 @@
try {
if (!isReadyToUse()) return proposals;
- ELParser p = new ELParser();
- ELParser.Token token = p.parse(query);
+ ELParser p = ELParserFactory.createDefaultParser();
+ ELModel model = p.parse(query);
- ArrayList<ELParser.Token> beans = new ArrayList<ELParser.Token>();
+ List<ELInstance> is = model.getInstances();
+
+ ELInvocationExpression expr = null;
+ ELInvocationExpression current = null;
boolean hasProperty = false;
- ELParser.Token c = token;
- boolean insideSL = false;
- while(c != null) {
- if(c.kind == ELParser.SPACES) {
- if(!insideSL) {
- beans.clear();
- hasProperty = false;
- } else {
- //do nothing
- }
- } else if(c.kind == ELParser.NONE || c.kind == ELParser.OPEN || c.kind == ELParser.CLOSE) {
- if(c.kind == ELParser.OPEN) insideSL = true;
- else if(c.kind == ELParser.CLOSE) insideSL = false;
- beans.clear();
- hasProperty = false;
- } else if(c.kind == ELParser.ARGUMENT) {
+ for (ELInstance i: is) {
+ if(!(i.getExpression() instanceof ELInvocationExpression)) continue;
+ expr = (ELInvocationExpression)i.getExpression();
+ ELInvocationExpression inv = expr;
+ current = inv;
+ if(inv.getLeft() != null) {
hasProperty = true;
- } else if(c.kind == ELParser.DOT || c.kind == ELParser.OPEN_ARG) {
- hasProperty = true;
- } else if(c.kind == ELParser.NAME) {
- if(beans.size() > 0 && (c.next == null || (c.next.kind != ELParser.DOT && c.next.kind != ELParser.OPEN_ARG))) {
- hasProperty = true;
- } else {
- beans.add(c);
- hasProperty = false;
- }
+ current = inv.getLeft(); //bean
}
- c = c.next;
}
- ELParser.Token b = (beans.size() == 0) ? null : (ELParser.Token)beans.get(0);
- ELParser.Token e = (beans.size() == 0) ? null : (ELParser.Token)beans.get(beans.size() - 1);
+ String beanNameFromQuery = current == null ? null : current.getText();
- String beanNameFromQuery = b == null ? null : query.substring(b.start, e.end);
- StringBuffer sb = new StringBuffer();
- ELParser.Token bi = b;
- while(bi != null) {
- if(bi.kind != ELParser.SPACES) sb.append(query.substring(bi.start, bi.end));
- bi = bi.next;
+ String restQuery = expr == null ? null : expr.getText();
+ if(expr instanceof ELPropertyInvocation) {
+// restQuery = ((ELPropertyInvocation)expr).getQualifiedName();
}
- String restQuery = b == null ? "" : sb.toString();
Set<String> sorted = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
fillSortedProposalStrings(sorted, beanNameFromQuery, hasProperty);
@@ -193,13 +178,27 @@
class PostProcessingImpl implements PostProcessing {
public void process(KbProposal proposal, String value, int offset) {
- ELParser p = new ELParser();
- ELParser.Token token = p.parse(value);
- ELParser.Token c = ELParser.getTokenAt(token, offset);
- ELParser.Token callStart = ELParser.getCallStart(c);
- if(callStart != null) proposal.setStart(callStart.start); else proposal.setStart(offset);
- ELParser.Token callEnd = ELParser.getCallEnd(c);
- if(callEnd != null && callEnd.end >= offset) proposal.setEnd(callEnd.end); else proposal.setEnd(offset);
+ ELParser p = ELParserFactory.createDefaultParser();
+ ELModel model = p.parse(value);
+ List<ELInstance> is = model.getInstances();
+ ELInvocationExpression expr = null;
+ for (ELInstance i: is) {
+ if(i.getExpression() instanceof ELInvocationExpression) {
+ expr = (ELInvocationExpression)i.getExpression();
+ break;
+ }
+ }
+ if(expr != null) {
+ proposal.setStart(expr.getStartPosition());
+ } else {
+ proposal.setStart(offset);
+ }
+
+ if(expr != null && expr.getEndPosition() >= offset) {
+ proposal.setEnd(expr.getEndPosition());
+ } else {
+ proposal.setEnd(offset);
+ }
int pos = proposal.getReplacementString().length();
// JBIDE-2437: Because of the issue add EL open/close brackets to the proposal replacement string
Modified: trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBundlePropertyResource.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBundlePropertyResource.java 2008-09-30 13:32:44 UTC (rev 10565)
+++ trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/support/kb/WTPKbdBundlePropertyResource.java 2008-09-30 13:33:28 UTC (rev 10566)
@@ -20,10 +20,14 @@
import java.util.TreeSet;
import org.eclipse.ui.IEditorInput;
+import org.jboss.tools.common.el.core.model.ELInstance;
+import org.jboss.tools.common.el.core.model.ELInvocationExpression;
+import org.jboss.tools.common.el.core.model.ELModel;
+import org.jboss.tools.common.el.core.parser.ELParser;
+import org.jboss.tools.common.el.core.parser.ELParserFactory;
import org.jboss.tools.common.kb.KbDinamicResource;
import org.jboss.tools.common.kb.KbProposal;
import org.jboss.tools.common.model.XModelObject;
-import org.jboss.tools.common.model.util.ELParser;
import org.jboss.tools.common.model.util.XModelObjectLoaderUtil;
import org.jboss.tools.jst.jsp.JspEditorPlugin;
import org.jboss.tools.jst.web.project.list.WebPromptingProvider;
@@ -45,61 +49,37 @@
try {
if (!isReadyToUse()) return proposals;
- ELParser p = new ELParser();
- ELParser.Token token = p.parse(query);
+ ELParser p = ELParserFactory.createDefaultParser();
+ ELModel model = p.parse(query);
+
+ List<ELInstance> is = model.getInstances();
+
+ ELInvocationExpression expr = null;
+ ELInvocationExpression current = null;
boolean hasProperty = false;
-// boolean isArgument = false;
- ELParser.Token arg = null;
-
- ArrayList<ELParser.Token> beans = new ArrayList<ELParser.Token>();
-
- ELParser.Token c = token;
- boolean insideSL = false;
- while(c != null) {
- if(c.kind == ELParser.SPACES) {
- if(!insideSL) {
- beans.clear();
- hasProperty = false;
- } else {
- //do nothing
- }
- } else if(c.kind == ELParser.NONE || c.kind == ELParser.OPEN || c.kind == ELParser.CLOSE) {
- if(c.kind == ELParser.OPEN) insideSL = true;
- else if(c.kind == ELParser.CLOSE) insideSL = false;
- beans.clear();
- hasProperty = false;
- arg = null;
- } else if(c.kind == ELParser.ARGUMENT) {
+
+ for (ELInstance i: is) {
+ if(!(i.getExpression() instanceof ELInvocationExpression)) continue;
+ expr = (ELInvocationExpression)i.getExpression();
+ ELInvocationExpression inv = expr;
+ current = inv;
+ if(inv.getLeft() != null) {
hasProperty = true;
-// isArgument = true;
- arg = c;
- } else if(c.kind == ELParser.DOT || c.kind == ELParser.OPEN_ARG) {
- hasProperty = true;
- } else if(c.kind == ELParser.NAME) {
- if(beans.size() > 0 && (c.next == null || (c.next.kind != ELParser.DOT && c.next.kind != ELParser.OPEN_ARG))) {
- hasProperty = true;
- arg = c;
- } else {
- beans.add(c);
- hasProperty = false;
- }
+ current = inv.getLeft(); //bean
}
- c = c.next;
}
- ELParser.Token b = (beans.size() == 0) ? null : (ELParser.Token)beans.get(0);
- ELParser.Token e = (beans.size() == 0) ? null : (ELParser.Token)beans.get(beans.size() - 1);
+ String beanNameFromQuery = current == null ? null : current.getText();
- String beanNameFromQuery = b == null ? null : query.substring(b.start, e.end);
-
- StringBuffer sb = new StringBuffer();
- ELParser.Token bi = b;
- while(bi != null) {
- if(bi.kind != ELParser.SPACES) sb.append(query.substring(bi.start, bi.end));
- bi = bi.next;
+ String restQuery = expr == null ? "" : expr.getText();
+ String argName = expr == null ? "" : expr.getMemberName();
+ if(argName == null) argName = "";
+ if(argName.startsWith("\"") || argName.startsWith("'")) {
+ argName = argName.substring(1);
}
- String restQuery = b == null ? "" : sb.toString();
- String argName = arg == null ? "" : query.substring(arg.start, arg.end);
+ if(argName.endsWith("\"") || argName.endsWith("'")) {
+ argName = argName.substring(0, argName.length() - 1);
+ }
Set<String> sorted = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
16 years, 3 months
JBoss Tools SVN: r10565 - in trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el: internal/core/parser/token and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-09-30 09:32:44 -0400 (Tue, 30 Sep 2008)
New Revision: 10565
Modified:
trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/parser/ELParserFactory.java
trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/JavaNameTokenDescription.java
Log:
JBIDE-1497.
Minor improvements
Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/parser/ELParserFactory.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/parser/ELParserFactory.java 2008-09-30 13:01:08 UTC (rev 10564)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/parser/ELParserFactory.java 2008-09-30 13:32:44 UTC (rev 10565)
@@ -51,9 +51,6 @@
Tokenizer t = createTokenizer();
LexicalToken token = t.parse(source, start, length);
errors = t.getErrors();
- if(token == null) {
- return null;
- }
ELModelImpl model = impl.parse(token);
model.setSource(source);
model.setErrors(errors);
Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/JavaNameTokenDescription.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/JavaNameTokenDescription.java 2008-09-30 13:01:08 UTC (rev 10564)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/internal/core/parser/token/JavaNameTokenDescription.java 2008-09-30 13:32:44 UTC (rev 10565)
@@ -33,13 +33,13 @@
public boolean isStart(Tokenizer tokenizer, int offset) {
char ch = tokenizer.lookUpChar(offset);
- return Character.isJavaIdentifierStart(ch);
+ return Character.isJavaIdentifierStart(ch) && ch != '\0';
}
public boolean read(Tokenizer tokenizer, int offset) {
int i = offset;
char ch = '\0';
- while(Character.isJavaIdentifierPart(ch = tokenizer.readNextChar())) {
+ while(Character.isJavaIdentifierPart(ch = tokenizer.readNextChar()) && ch != '\0') {
i++;
}
if(ch != '\0') {
16 years, 3 months
JBoss Tools SVN: r10564 - in trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt: org/jboss/tools and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: ochikvina
Date: 2008-09-30 09:01:08 -0400 (Tue, 30 Sep 2008)
New Revision: 10564
Modified:
trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/com/jboss/tools/common.xsl
trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/org/jboss/tools/common.xsl
Log:
https://jira.jboss.org/jira/browse/JBDS-336 - problem with the bold font is corrected. Changes are made by Gleb Galkin
Modified: trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/com/jboss/tools/common.xsl
===================================================================
--- trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/com/jboss/tools/common.xsl 2008-09-30 12:41:45 UTC (rev 10563)
+++ trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/com/jboss/tools/common.xsl 2008-09-30 13:01:08 UTC (rev 10564)
@@ -131,5 +131,60 @@
</xsl:template>
<!-- XHTML and PDF -->
-
+ <xsl:template match="//node()[@diffmk:change]">
+ <xsl:choose>
+ <xsl:when test="local-name()='note' or local-name()='tip' or local-name()='important' or local-name()='warning' or local-name()='caution'">
+ <xsl:call-template name="my.graphical.admonition"/>
+ </xsl:when>
+ <xsl:when test="local-name()='diffmk:wrapper'">
+ <span class="diffmkwrapper">
+ <xsl:value-of select="."/>
+ </span>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name="my.graphical.admonition">
+ <xsl:variable name="admon.type">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:otherwise>Note</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="alt">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$admon.type"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$admon.style != ''">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$admon.style"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$admon.textlabel != 0 or title">
+ <h2>
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </h2>
+ </xsl:if>
+ <div class="diffmkwrapper">
+ <xsl:apply-templates />
+ </div>
+ </div>
+ </xsl:template>
+ <xsl:template match="abstract" mode="titlepage.mode">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
</xsl:stylesheet>
Modified: trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/org/jboss/tools/common.xsl
===================================================================
--- trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/org/jboss/tools/common.xsl 2008-09-30 12:41:45 UTC (rev 10563)
+++ trunk/documentation/jbosstools-docbook-xslt/src/main/resources/xslt/org/jboss/tools/common.xsl 2008-09-30 13:01:08 UTC (rev 10564)
@@ -135,12 +135,12 @@
<xsl:choose>
<xsl:when test="local-name()='note' or local-name()='tip' or local-name()='important' or local-name()='warning' or local-name()='caution'">
<xsl:call-template name="my.graphical.admonition"/>
- </xsl:when>
- <xsl:otherwise>
+ </xsl:when>
+ <xsl:when test="local-name()='diffmk:wrapper'">
<span class="diffmkwrapper">
<xsl:value-of select="."/>
</span>
- </xsl:otherwise>
+ </xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="my.graphical.admonition">
@@ -179,4 +179,13 @@
</div>
</div>
</xsl:template>
+
+ <xsl:template match="abstract" mode="titlepage.mode">
+ <xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:call-template name="paragraph">
+ <xsl:with-param name="content">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
</xsl:stylesheet>
16 years, 3 months
JBoss Tools SVN: r10563 - trunk/birt/docs/en/images/BirtSupport.
by jbosstools-commits@lists.jboss.org
Author: abogachuk
Date: 2008-09-30 08:41:45 -0400 (Tue, 30 Sep 2008)
New Revision: 10563
Modified:
trunk/birt/docs/en/images/BirtSupport/03NewProjectCreated.png
Log:
the image is updated
Modified: trunk/birt/docs/en/images/BirtSupport/03NewProjectCreated.png
===================================================================
(Binary files differ)
16 years, 3 months
JBoss Tools SVN: r10561 - trunk/birt/docs/en/images/BirtSupport.
by jbosstools-commits@lists.jboss.org
Author: abogachuk
Date: 2008-09-30 08:22:49 -0400 (Tue, 30 Sep 2008)
New Revision: 10561
Added:
trunk/birt/docs/en/images/BirtSupport/01ReportProjectWizard.png
trunk/birt/docs/en/images/BirtSupport/02ProjectName.png
trunk/birt/docs/en/images/BirtSupport/03NewProjectCreated.png
trunk/birt/docs/en/images/BirtSupport/04NewReport.png
trunk/birt/docs/en/images/BirtSupport/05SelectingParentFolder.png
trunk/birt/docs/en/images/BirtSupport/06ReportTemplate.png
trunk/birt/docs/en/images/BirtSupport/07SimpleListingReport.png
Log:
https://jira.jboss.org/jira/browse/JBDS-388 - new images added
Added: trunk/birt/docs/en/images/BirtSupport/01ReportProjectWizard.png
===================================================================
(Binary files differ)
Property changes on: trunk/birt/docs/en/images/BirtSupport/01ReportProjectWizard.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/birt/docs/en/images/BirtSupport/02ProjectName.png
===================================================================
(Binary files differ)
Property changes on: trunk/birt/docs/en/images/BirtSupport/02ProjectName.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/birt/docs/en/images/BirtSupport/03NewProjectCreated.png
===================================================================
(Binary files differ)
Property changes on: trunk/birt/docs/en/images/BirtSupport/03NewProjectCreated.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/birt/docs/en/images/BirtSupport/04NewReport.png
===================================================================
(Binary files differ)
Property changes on: trunk/birt/docs/en/images/BirtSupport/04NewReport.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/birt/docs/en/images/BirtSupport/05SelectingParentFolder.png
===================================================================
(Binary files differ)
Property changes on: trunk/birt/docs/en/images/BirtSupport/05SelectingParentFolder.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/birt/docs/en/images/BirtSupport/06ReportTemplate.png
===================================================================
(Binary files differ)
Property changes on: trunk/birt/docs/en/images/BirtSupport/06ReportTemplate.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/birt/docs/en/images/BirtSupport/07SimpleListingReport.png
===================================================================
(Binary files differ)
Property changes on: trunk/birt/docs/en/images/BirtSupport/07SimpleListingReport.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
16 years, 3 months