in impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java [2326:2427]
public TokenList(char[] path)
{
super(4);
int pathLength = path.length;
StringBuffer token = new StringBuffer();
char cPrev;
char c = 0;
char cNext;
char stringConstant = 0;
for (int pos = 0; pos < pathLength; pos++)
{
cPrev = c;
c = path[pos];
cNext = pos < pathLength - 1 ? path[pos + 1] : 0;
if (stringConstant != 0)
{
if (c == stringConstant)
{
endToken(token, true);
stringConstant = 0;
}
else
{
token.append(c);
}
}
else
{
switch (c)
{
case ' ':
case 0xA:
case 0xD:
case 0x9:
if (cPrev != ' ')
{
endToken(token, false);
}
c = ' ';
break;
case '"':
case '\'':
endToken(token, false);
stringConstant = c;
break;
// double or single tokens
case '/':
case ':':
if (cPrev != c)
{
endToken(token, false);
}
token.append(c);
if (cNext != c)
{
endToken(token, false);
}
break;
// double token (..)
case '.':
if (cNext == '.')
endToken(token, false);
token.append(c);
if (cPrev == '.')
endToken(token, false);
break;
// single tokens
case '*':
case '@':
case '[':
case ']':
case '(':
case ')':
case '|':
endToken(token, false);
add(String.valueOf(c));
break;
// TODO: < > <= >= + - !=
case '!':
endToken(token, false);
token.append(c);
break;
case '=':
endToken(token, false);
add(String.valueOf(c));
break;
default:
token.append(c);
}
}
}
endToken(token, false);
}