Author: scabanovich
Date: 2008-09-24 10:27:12 -0400 (Wed, 24 Sep 2008)
New Revision: 10455
Removed:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELStringToken.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELToken.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELStringTokenizer.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELTokenizer.java
Log:
JBIDE-1497.
Obsolete tokenizers are removed.
Deleted:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELStringToken.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELStringToken.java 2008-09-24
14:21:45 UTC (rev 10454)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELStringToken.java 2008-09-24
14:27:12 UTC (rev 10455)
@@ -1,123 +0,0 @@
- /*******************************************************************************
- * Copyright (c) 2007 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:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.seam.internal.core.el;
-
-import org.eclipse.jface.text.rules.IToken;
-
-/**
- * Token of the string with EL expression.
- * @author Alexey Kazakov
- */
-public class ELStringToken implements IToken {
- public static final ELStringToken EOF = new ELStringToken(-1, -1, null);
-
- private int start;
- private int length;
- private CharSequence chars;
- private String body;
-
- /**
- * Constructs the ELStringToken object
- *
- * @param start
- * @param length
- * @param chars
- */
- public ELStringToken(int start, int length, CharSequence chars) {
- this.start = start;
- this.length = length;
- this.chars = chars;
- }
-
- /**
- * Returns string representation for the token
- */
- public String toString() {
- return "ELStringToken(" + start + ", " + length + ") [" +
(chars == null ? "<Empty>" : chars.toString()) + "]";
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#getData()
- */
- public Object getData() {
-// return (chars == null ? null : chars.subSequence(start, start+length).toString());
- return getText();
- }
-
- /**
- * @return offset of token
- */
- public int getStart() {
- return start;
- }
-
- /**
- * @param start
- */
- public void setStart(int start) {
- this.start = start;
- }
-
- /**
- * @return length of token
- */
- public int getLength() {
- return length;
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isEOF()
- */
- public boolean isEOF() {
- return (start == -1 && length == -1 && chars == null);
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isOther()
- */
- public boolean isOther() {
- return false;
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isUndefined()
- */
- public boolean isUndefined() {
- return false;
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isWhitespace()
- */
- public boolean isWhitespace() {
- return false;
- }
-
- /*
- * Returns the token text
- */
- public String getText() {
- return chars.toString();
- }
-
- /*
- * Returns text of EL without brackets
- */
- public String getBody() {
- if(chars.length()<4) {
- return "";
- }
- if(body==null) {
- body = chars.subSequence(2, chars.length()-1).toString();
- }
- return body;
- }
-}
\ No newline at end of file
Deleted:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELToken.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELToken.java 2008-09-24
14:21:45 UTC (rev 10454)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ELToken.java 2008-09-24
14:27:12 UTC (rev 10455)
@@ -1,118 +0,0 @@
- /*******************************************************************************
- * Copyright (c) 2007 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:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.seam.internal.core.el;
-
-import org.eclipse.jface.text.rules.IToken;
-
-/**
- * Token for the EL expression parts
- * @author Alexey Kazakov
- */
-public class ELToken implements IToken {
- public static final ELToken EOF = new ELToken(-1, -1, null, -1);
- public static final int EL_VARIABLE_TOKEN = 1;
- public static final int EL_OPERATOR_TOKEN = 2;
- public static final int EL_RESERVED_WORD_TOKEN = 3;
- public static final int EL_SEPARATOR_TOKEN = 4;
- public static final int EL_STRING_TOKEN = 5;
- public static final int EL_NUMBER_TOKEN = 6;
-
- private int start;
- private int length;
- private CharSequence chars;
- private int type;
-
- /**
- * Constructs the ELToken object
- *
- * @param start
- * @param length
- * @param chars
- * @param type
- */
- public ELToken(int start, int length, CharSequence chars, int type) {
- this.start = start;
- this.length = length;
- this.chars = chars;
- this.type = type;
- }
-
- /**
- * Returns string representation for the token
- */
- public String toString() {
- return "ELToken(" + start + ", " + length + ", " + type +
") [" + (chars == null ? "<Empty>" : chars.toString()) +
"]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
//$NON-NLS-6$
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#getData()
- */
- public Object getData() {
-// return (chars == null ? null : chars.subSequence(start, start+length).toString());
- return getText();
- }
-
- /**
- * @return offset of token
- */
- public int getStart() {
- return start;
- }
-
- /**
- * @return length of token
- */
- public int getLength() {
- return length;
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isEOF()
- */
- public boolean isEOF() {
- return (start == -1 && length == -1 && chars == null);
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isOther()
- */
- public boolean isOther() {
- return false;
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isUndefined()
- */
- public boolean isUndefined() {
- return false;
- }
-
- /*
- * @see org.eclipse.jface.text.rules.IToken#isWhitespace()
- */
- public boolean isWhitespace() {
- return false;
- }
-
- /*
- * Returns the token type
- */
- public int getType(){
- return type;
- }
-
- /*
- * Returns the token text
- */
- public String getText() {
- return chars.toString();
- }
-}
\ No newline at end of file
Deleted:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELStringTokenizer.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELStringTokenizer.java 2008-09-24
14:21:45 UTC (rev 10454)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELStringTokenizer.java 2008-09-24
14:27:12 UTC (rev 10455)
@@ -1,152 +0,0 @@
- /*******************************************************************************
- * Copyright (c) 2007 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:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.seam.internal.core.el;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.tools.seam.core.SeamCorePlugin;
-
-/**
- * Parses string and creates list of tokens for each EL of this string.
- * @author Alexey Kazakov
- */
-public class SeamELStringTokenizer {
-
- private String sourceString;
- private List<ELStringToken> fTokens;
- private int index;
- private int offset = 0;
-
- private static final int START_EL_FIRST_SYMBOL = '#';
- private static final int START_EL_LAST_SYMBOL = '{';
- private static final int END_EL_SYMBOL = '}';
-
- /**
- * Constructs SeamELStringTokenizer object.
- * Parse string and get all EL from it.
- * For example: string is '#{var1.pr != var2.pr} #{f1.pr1}'
- * then tokens are ["#{var1.pr !=
var2.pr}","#{f1.pr1}"]
- * @param sourceString
- */
- public SeamELStringTokenizer(String sourceString) {
- this(sourceString, 0);
- }
-
- private SeamELStringTokenizer(String sourceString, int offset) {
- this.offset = offset;
- this.sourceString = sourceString;
- index = 0;
- fTokens = new ArrayList<ELStringToken>();
- parse();
- }
-
- /**
- * Returns list of tokens for the parsed string
- *
- * @return
- */
- public List<ELStringToken> getTokens() {
- return fTokens;
- }
-
- /*
- * Performs parsing of string
- */
- private void parse() {
- ELStringToken token;
- while ((token = getNextToken()) != ELStringToken.EOF) {
- fTokens.add(token);
- }
- }
-
- /*
- * Calculates and returns next token of string
- *
- * @return
- */
- private ELStringToken getNextToken() {
- int ch = readNextChar();
- while(ch!=-1) {
- int secondCh = readNextChar();
- if (secondCh == -1) {
- return ELStringToken.EOF;
- }
- releaseChar();
-
- if(ch == START_EL_FIRST_SYMBOL && secondCh == START_EL_LAST_SYMBOL) {
- releaseChar();
- return readELToken();
- }
- ch = readNextChar();
- }
- return ELStringToken.EOF;
- }
-
- /*
- * Returns the CharSequence object
- *
- * @param start
- * @param length
- * @return
- */
- private CharSequence getCharSequence(int start, int length) {
- String text = ""; //$NON-NLS-1$
- try {
- text = sourceString.substring(start, start + length);
- } catch (StringIndexOutOfBoundsException e) {
- SeamCorePlugin.getDefault().logError(e);
- }
- return text.subSequence(0, text.length());
- }
- /*
- * Reads and returns the string token from the expression
- * @return
- */
- private ELStringToken readELToken() {
- int startOfToken = index;
- readNextChar();
- readNextChar();
- int ch;
- while((ch = readNextChar()) != -1) {
- if (ch==END_EL_SYMBOL) {
- int length = index - startOfToken;
- return new ELStringToken(offset + startOfToken, length, getCharSequence(startOfToken,
length));
- }
- }
- return ELStringToken.EOF;
- }
-
- /* Reads the next character
- * @return
- */
- private int readNextChar() {
- int c = -1;
- try {
- if (index < sourceString.length()) {
- c = sourceString.charAt(index);
- }
- } catch (StringIndexOutOfBoundsException e) {
- SeamCorePlugin.getPluginLog().logError(e);
- }
- index++;
- return c;
- }
-
- /*
- * returns the character to the document
- */
- private void releaseChar() {
- if (index > 0) {
- index--;
- }
- }
-}
\ No newline at end of file
Deleted:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELTokenizer.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELTokenizer.java 2008-09-24
14:21:45 UTC (rev 10454)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELTokenizer.java 2008-09-24
14:27:12 UTC (rev 10455)
@@ -1,340 +0,0 @@
- /*******************************************************************************
- * Copyright (c) 2007 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:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.seam.internal.core.el;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.tools.seam.core.SeamCorePlugin;
-
-/**
- * Parses EL and creates list of tokens for the operands and operators within one EL.
- * @author Alexey Kazakov
- */
-public class SeamELTokenizer {
- private static final int STATE_INITIAL = 0;
- private static final int STATE_OPERAND = 1;
- private static final int STATE_OPERATOR = 2;
- private static final int STATE_RESERVED_WORD = 3;
- private static final int STATE_SEPARATOR = 4;
- private static final int STATE_STRING = 5;
-
- private String expression;
- private List<ELToken> fTokens;
- private int index;
- private int offset = 0;
-
- private int fState;
- private static final String OPERATOR_SYMBOLS =
"!=&(){}[]:+-*%?,|/%<>";
- private static final int START_ROUND_BRACKET_SYMBOL = '(';
- private static final int END_ROUND_BRACKET_SYMBOL = ')';
- private static final int START_SQUARE_BRACKET_SYMBOL = '[';
- private static final int END_SQUARE_BRACKET_SYMBOL = ']';
- private static final int STRING_SYMBOL = '\'';
- private static final String RESERVED_WORDS = " null empty div and or not mod eq ne
lt gt le ge true false instanceof invalid required ";
-
- /**
- * Constructs SeamELTokenizer object.
- * Parse an expression.
- * For example: expression is "var1.pr != var2.pr"
- * then tokens are ["var1.pr"," ", "!=",
" ", "var2.pr"]
- * @param expression
- */
- public SeamELTokenizer(String expression) {
- this(expression, 0);
- }
-
- private SeamELTokenizer(String expression, int offset) {
- this.offset = offset;
- this.expression = expression;
- index = 0;
- fTokens = new ArrayList<ELToken>();
- parse();
- }
-
- /**
- * Returns list of tokens for the parsed expression
- *
- * @return
- */
- public List<ELToken> getTokens() {
- return fTokens;
- }
-
- /*
- * Performs parsing of expression
- */
- private void parse() {
- ELToken token;
- fState = STATE_INITIAL;
- while ((token = getNextToken()) != ELToken.EOF) {
- fTokens.add(token);
- }
- }
-
- /*
- * Calculates and returns next token of expression
- *
- * @return
- */
- private ELToken getNextToken() {
- switch (fState) {
- case STATE_INITIAL: // Just started
- case STATE_STRING: { // String is read
- int ch = readNextChar();
- if (ch == -1) {
- return ELToken.EOF;
- }
- releaseChar();
- if (Character.isJavaIdentifierPart((char)ch)) {
- return readOperandOrReservedWordToken();
- }
- if (OPERATOR_SYMBOLS.indexOf(ch)>-1) {
- return readOperatorToken();
- }
- if (ch == STRING_SYMBOL) {
- return readStringToken();
- }
- if (ch == ' ') {
- return readSeparatorToken();
- }
- return ELToken.EOF;
- }
- case STATE_RESERVED_WORD: // Reserved word is read - expecting a separator or operator
or string
- case STATE_OPERAND: { // Operand is read - expecting a separator or operator or string
- int ch = readNextChar();
- if (ch == -1) {
- return ELToken.EOF;
- }
- releaseChar();
- if (OPERATOR_SYMBOLS.indexOf(ch)>-1) {
- return readOperatorToken();
- }
- if (ch == STRING_SYMBOL) {
- return readStringToken();
- }
- if (ch == ' ') {
- return readSeparatorToken();
- }
- return ELToken.EOF;
- }
- case STATE_OPERATOR: { // Operator is read - expecting a separator or operand or
string
- int ch = readNextChar();
- if (ch == -1) {
- return ELToken.EOF;
- }
- releaseChar();
- if (Character.isJavaIdentifierPart((char)ch)) {
- return readOperandOrReservedWordToken();
- }
- if (ch == STRING_SYMBOL) {
- return readStringToken();
- }
- if (ch == ' ') {
- return readSeparatorToken();
- }
- return ELToken.EOF;
- }
- case STATE_SEPARATOR: { // Separator is read - expecting a operand or operator or
string
- int ch = readNextChar();
- if (ch == -1) {
- return ELToken.EOF;
- }
- releaseChar();
- if (Character.isJavaIdentifierPart((char)ch)) {
- return readOperandOrReservedWordToken();
- }
- if (OPERATOR_SYMBOLS.indexOf(ch)>-1) {
- return readOperatorToken();
- }
- if (ch == STRING_SYMBOL) {
- return readStringToken();
- }
- releaseChar();
- return ELToken.EOF;
- }
- }
- return ELToken.EOF;
- }
-
- /*
- * Returns the CharSequence object
- *
- * @param start
- * @param length
- * @return
- */
- private CharSequence getCharSequence(int start, int length) {
- String text = ""; //$NON-NLS-1$
- try {
- text = expression.substring(start, start + length);
- } catch (StringIndexOutOfBoundsException e) {
- SeamCorePlugin.getDefault().logError(e);
- text = ""; // For sure //$NON-NLS-1$
- }
- return text.subSequence(0, text.length());
- }
-
- /*
- * Reads and returns the operator token from the expression
- * @return
- */
- private ELToken readOperatorToken() {
- fState = STATE_OPERATOR;
- int startOfToken = index;
- int ch;
- while((ch = readNextChar()) != -1) {
- if (OPERATOR_SYMBOLS.indexOf(ch)==-1) {
- break;
- }
- }
- releaseChar();
- int length = index - startOfToken;
- return (length > 0 ? new ELToken(offset + startOfToken, length,
getCharSequence(startOfToken, length), ELToken.EL_OPERATOR_TOKEN) : ELToken.EOF);
- }
-
- /*
- * Reads and returns the separator token from the expression
- * @return
- */
- private ELToken readSeparatorToken() {
- fState = STATE_SEPARATOR;
- int startOfToken = index;
- int ch;
- while((ch = readNextChar()) != -1) {
- if (ch!=' ') {
- break;
- }
- }
- releaseChar();
- int length = index - startOfToken;
- return (length > 0 ? new ELToken(offset + startOfToken, length,
getCharSequence(startOfToken, length), ELToken.EL_SEPARATOR_TOKEN) : ELToken.EOF);
- }
-
- /*
- * Reads and returns the string token from the expression
- * @return
- */
- private ELToken readStringToken() {
- fState = STATE_STRING;
- int ch = readNextChar(); // skip first '
- int startOfToken = index;
- while((ch = readNextChar()) != -1) {
- if (ch==STRING_SYMBOL) {
- break;
- }
- }
- releaseChar();
- int length = index - startOfToken;
-
- return (length > 0 ? new ELToken(offset + startOfToken, length,
getCharSequence(startOfToken, length), ELToken.EL_STRING_TOKEN) : ELToken.EOF);
- }
-
- /*
- * Reads and returns the operand token from the expression
- * @return
- */
- private ELToken readOperandOrReservedWordToken() {
- fState = STATE_OPERAND;
- int startOfToken = index;
- int ch;
- while((ch = readNextChar()) != -1) {
- if (ch == START_ROUND_BRACKET_SYMBOL) {
- ch = readTokensWithinBrackets(END_ROUND_BRACKET_SYMBOL);
- } else if (ch == START_SQUARE_BRACKET_SYMBOL) {
- ch = readTokensWithinBrackets(END_SQUARE_BRACKET_SYMBOL);
- }
- if (!Character.isJavaIdentifierPart(ch) && ch!='.') {
- break;
- }
- }
- releaseChar();
- int length = index - startOfToken;
- boolean reservedWord = isResorvedWord(startOfToken, length);
- int tokenType = ELToken.EL_VARIABLE_TOKEN;
- if(reservedWord) {
- tokenType = ELToken.EL_RESERVED_WORD_TOKEN;
- fState = STATE_RESERVED_WORD;
- } else if(isNumber(startOfToken, length)) {
- tokenType = ELToken.EL_NUMBER_TOKEN;
- }
-
- return (length > 0 ? new ELToken(offset + startOfToken, length,
getCharSequence(startOfToken, length), tokenType) : ELToken.EOF);
- }
-
- private int readTokensWithinBrackets(int expectedEndBracketSymbol) {
- int start = index;
- int ch;
- while((ch = readNextChar()) != -1) {
- if (ch == expectedEndBracketSymbol) {
- CharSequence text = getCharSequence(start, index - 1 - start);
- SeamELTokenizer tokenizer = new SeamELTokenizer(text.toString(), start);
- fTokens.addAll(tokenizer.getTokens());
- return readNextChar();
- }
- }
- return ch;
- }
-
- private boolean isResorvedWord(String word) {
- return RESERVED_WORDS.indexOf(" " + word.trim() + " ")>-1;
- }
-
- private boolean isNumber(String word) {
- if(word.length()>0) {
- char firstChar = word.charAt(0);
- if(firstChar=='-' || (firstChar>='0' &&
firstChar<='9')) {
- try {
- Long.parseLong(word);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
- }
- return false;
- }
-
- private boolean isResorvedWord(int beginIndex, int length) {
- String word = expression.substring(beginIndex, beginIndex + length);
- return isResorvedWord(word);
- }
-
- private boolean isNumber(int beginIndex, int length) {
- String word = expression.substring(beginIndex, beginIndex + length);
- return isNumber(word);
- }
-
- /* Reads the next character
- * @return
- */
- private int readNextChar() {
- int c = -1;
- try {
- if (index < expression.length()) {
- c = expression.charAt(index);
- }
- } catch (StringIndexOutOfBoundsException e) {
- SeamCorePlugin.getPluginLog().logError(e);
- }
- index++;
- return c;
- }
-
- /*
- * returns the character to the document
- */
- private void releaseChar() {
- if (index > 0) {
- index--;
- }
- }
-}
\ No newline at end of file