Author: scabanovich
Date: 2008-09-23 11:44:48 -0400 (Tue, 23 Sep 2008)
New Revision: 10416
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ElVarSearcher.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/Var.java
Log:
JBIDE-1497.
ElVarSearcher and Var classes are transferred to new EL parser.
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ElVarSearcher.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ElVarSearcher.java 2008-09-23
15:42:06 UTC (rev 10415)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/ElVarSearcher.java 2008-09-23
15:44:48 UTC (rev 10416)
@@ -24,6 +24,7 @@
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
+import org.jboss.tools.common.el.core.model.ELExpression;
import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.w3c.dom.Element;
@@ -248,14 +249,14 @@
if(vars!=null) {
ArrayList<Var> parentVars = new ArrayList<Var>();
for (Var var : vars) {
- ELToken token = var.getElToken();
+ ELExpression token = var.getElToken();
if(token!=null && !token.getText().endsWith(".")) {
String varName = var.getName();
- if(el.equals(varName) || el.startsWith(varName + ".")) {
+ if(el.equals(varName)) {
if(var.getElToken()!=null && initializeNestedVars) {
Var parentVar = findVarForEl(var.getElToken().getText(), parentVars, true);
if(parentVar!=null) {
- ELToken resolvedToken = parentVar.getResolvedElToken();
+ ELExpression resolvedToken = parentVar.getResolvedElToken();
if(resolvedToken==null && parentVar.getElToken()!=null) {
try {
// Initialize parent vars.
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/Var.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/Var.java 2008-09-23
15:42:06 UTC (rev 10415)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/Var.java 2008-09-23
15:44:48 UTC (rev 10416)
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * 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.List;
@@ -2,2 +12,8 @@
+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.ELModel;
+import org.jboss.tools.common.el.core.parser.ELParser;
+import org.jboss.tools.common.el.core.parser.ELParserFactory;
+
/**
@@ -9,9 +25,9 @@
public class Var {
String name;
String value;
- ELToken elToken;
+ ELExpression elToken;
String resolvedValue;
- ELToken resolvedElToken;
+ ELExpression resolvedElToken;
int declOffset;
int declLength;
@@ -38,16 +54,14 @@
this(name, value, 0, 0);
}
- ELToken parseEl(String el) {
+ ELExpression parseEl(String el) {
if(el.length()>3 && el.startsWith("#{") &&
el.endsWith("}")) {
- String elBody = el.substring(0, el.length()-1).substring(2);
- SeamELTokenizer elTokenizer = new SeamELTokenizer(elBody);
- List<ELToken> tokens = elTokenizer.getTokens();
- for (ELToken token : tokens) {
- if(token.getType()==ELToken.EL_VARIABLE_TOKEN) {
- return token;
- }
- }
+ ELParser parser = ELParserFactory.createJbossParser();
+ ELModel model = parser.parse(el);
+ if(model == null || parser.getSyntaxErrors().size() > 0) return null;
+ List<ELInstance> is = model.getInstances();
+ if(is.size() == 0) return null;
+ return is.get(0).getExpression();
}
return null;
}
@@ -73,14 +87,14 @@
/**
* @return parsed EL from "value" attribute. Returns null if EL is not valid.
*/
- public ELToken getElToken() {
+ public ELExpression getElToken() {
return elToken;
}
/**
* @return parsed resolved EL from "value" attribute. May be null.
*/
- public ELToken getResolvedElToken() {
+ public ELExpression getResolvedElToken() {
return resolvedElToken;
}