[jbosstools-commits] JBoss Tools SVN: r42449 - in trunk: cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl and 14 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Jul 6 19:29:58 EDT 2012


Author: akazakov
Date: 2012-07-06 19:29:53 -0400 (Fri, 06 Jul 2012)
New Revision: 42449

Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProjectAsYouType.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
   trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/ca/AbstractELCompletionEngine.java
   trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELCompletionEngine.java
   trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELContext.java
   trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ElVarSearcher.java
   trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/SimpleELContext.java
   trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java
   trunk/common/tests/org.jboss.tools.common.el.core.test/src/org/jboss/tools/common/el/core/test/resolver/ElVarSearcherTest.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/bean/el/JSF2ElResolver.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFELCompletionEngine.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFFuncsELCompletionEngine.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFImplicitObjectELResolver.java
   trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFMessageELCompletionEngine.java
   trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/JSF2ModelTest.java
   trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspELCompletionProposalComputer.java
   trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspTagCompletionProposalComputer.java
   trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
   trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java
   trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELCompletionEngine.java
   trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamExpressionResolver.java
   trunk/seam/plugins/org.jboss.tools.seam.text.ext/src/org/jboss/tools/seam/text/ext/hyperlink/SeamBeanHyperlinkPartitioner.java
   trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchEngine.java
   trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchVisitor.java
Log:
https://issues.jboss.org/browse/JBIDE-10611 As-you-type CDI validation

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -29,11 +29,13 @@
 import org.jboss.tools.cdi.core.IBeanMember;
 import org.jboss.tools.cdi.core.ICDIProject;
 import org.jboss.tools.cdi.core.IClassBean;
+import org.jboss.tools.cdi.internal.core.impl.CDIProjectAsYouType;
 import org.jboss.tools.common.el.core.ca.AbstractELCompletionEngine;
 import org.jboss.tools.common.el.core.ca.DefaultJavaRelevanceCheck;
 import org.jboss.tools.common.el.core.model.ELInvocationExpression;
 import org.jboss.tools.common.el.core.parser.ELParserFactory;
 import org.jboss.tools.common.el.core.parser.ELParserUtil;
+import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.common.el.core.resolver.IRelevanceCheck;
 import org.jboss.tools.common.el.core.resolver.TypeInfoCollector;
 import org.jboss.tools.common.el.core.resolver.TypeInfoCollector.MemberInfo;
@@ -87,7 +89,7 @@
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#getMemberInfoByVariable(org.jboss.tools.common.el.core.resolver.IVariable, boolean)
 	 */
 	@Override
-	protected MemberInfo getMemberInfoByVariable(IBean bean, boolean onlyEqualNames, int offset) {
+	protected MemberInfo getMemberInfoByVariable(IBean bean, ELContext context, boolean onlyEqualNames, int offset) {
 		IMember member = null;
 		if(bean instanceof IClassBean) {
 			member = bean.getBeanClass();
@@ -105,7 +107,7 @@
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#resolveVariables(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELInvocationExpression, boolean, boolean)
 	 */
 	@Override
-	public List<IBean> resolveVariables(IFile file,	ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
+	public List<IBean> resolveVariables(IFile file,	 ELContext context, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		ArrayList<IBean> beans = new ArrayList<IBean>();
 
 		IProject project = file.getProject();
@@ -119,18 +121,21 @@
 		if (varName != null) {
 			CDICoreNature nature = CDIUtil.getCDINatureWithProgress(project);
 			if(nature!=null) {
-				IBeanManager manager = nature.getDelegate();
-				if (manager != null) {
+				ICDIProject cdiProject = nature.getDelegate();
+				if (cdiProject != null) {
+					if(context!=null && context.isDirty() && ("java".equalsIgnoreCase(file.getFileExtension()) || "beans.xml".equalsIgnoreCase(file.getName()))) {
+						cdiProject = new CDIProjectAsYouType(cdiProject, file);
+					}
 					if(onlyEqualNames) {
-						resolvedBeans = manager.getBeans(varName, true);
+						resolvedBeans = cdiProject.getBeans(varName, true);
 						if(resolvedBeans.isEmpty()) {
-							resolvedBeans = manager.getBeans(varName, false);
+							resolvedBeans = cdiProject.getBeans(varName, false);
 						}
 						beans.addAll(resolvedBeans);
 					} else {
-						resolvedBeans = manager.getNamedBeans(true);
+						resolvedBeans = cdiProject.getNamedBeans(true);
 						if(resolvedBeans.isEmpty()) {
-							resolvedBeans = manager.getBeans(varName, false);
+							resolvedBeans = cdiProject.getBeans(varName, false);
 						}
 						for (IBean bean : resolvedBeans) {
 							if(bean.getName().startsWith(varName)) {

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProjectAsYouType.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProjectAsYouType.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProjectAsYouType.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -176,7 +176,7 @@
 			if(d.getResource() == null || !d.getResource().getFullPath().equals(file.getFullPath())) {
 				continue;
 			}
-			System.out.println("Annotation " + d.getQualifiedName());
+//			System.out.println("Annotation " + d.getQualifiedName());
 			if((d.getKind() & AnnotationDefinition.STEREOTYPE) > 0) {
 				StereotypeElement s = new StereotypeElement();
 				initAnnotationElement(s, d);

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -103,7 +103,7 @@
 import org.jboss.tools.common.text.ITextSourceReference;
 import org.jboss.tools.common.validation.ContextValidationHelper;
 import org.jboss.tools.common.validation.EditorValidationContext;
-import org.jboss.tools.common.validation.IAsYouTypeValidator;
+import org.jboss.tools.common.validation.IJavaElementValidator;
 import org.jboss.tools.common.validation.IProjectValidationContext;
 import org.jboss.tools.common.validation.IValidatingProjectSet;
 import org.jboss.tools.common.validation.IValidatingProjectTree;
@@ -114,7 +114,7 @@
 /**
  * @author Alexey Kazakov
  */
-public class CDICoreValidator extends CDIValidationErrorManager implements IAsYouTypeValidator {
+public class CDICoreValidator extends CDIValidationErrorManager implements IJavaElementValidator {
 	public static final String ID = "org.jboss.tools.cdi.core.CoreValidator"; //$NON-NLS-1$
 	public static final String PROBLEM_TYPE = "org.jboss.tools.cdi.core.cdiproblem"; //$NON-NLS-1$
 	public static final String PREFERENCE_PAGE_ID = "org.jboss.tools.cdi.ui.preferences.CDIValidatorPreferencePage"; //$NON-NLS-1$

Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/ca/AbstractELCompletionEngine.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/ca/AbstractELCompletionEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/ca/AbstractELCompletionEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -139,7 +139,7 @@
 
 		ELResolutionImpl resolution;
 		try {
-			resolution = resolveELOperand(context.getResource(), parseOperand(el), false, vars, new ElVarSearcher(context.getResource(), this), offset);
+			resolution = resolveELOperand(context.getResource(), context, parseOperand(el), false, vars, new ElVarSearcher(context.getResource(), this), offset);
 			if(resolution!=null) {
 				completions.addAll(resolution.getProposals());
 			}
@@ -168,7 +168,7 @@
 		}
 		ELResolutionImpl resolution = null;
 		try {
-			resolution = resolveELOperand(context.getResource(), operand, true, vars, new ElVarSearcher(context.getResource(), this), offset);
+			resolution = resolveELOperand(context.getResource(), context, operand, true, vars, new ElVarSearcher(context.getResource(), this), offset);
 			if(resolution != null)
 				resolution.setContext(context);
 		} catch (StringIndexOutOfBoundsException e) {
@@ -194,7 +194,7 @@
 			vars.add(array[i]);
 		}
 		try {
-			return resolveELOperand(context.getResource(), operand, returnEqualedVariablesOnly, vars, new ElVarSearcher(context.getResource(), this), offset);
+			return resolveELOperand(context.getResource(), context, operand, returnEqualedVariablesOnly, vars, new ElVarSearcher(context.getResource(), this), offset);
 		} catch (StringIndexOutOfBoundsException e) {
 			log(e);
 		} catch (BadLocationException e) {
@@ -235,7 +235,7 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.common.el.core.resolver.ELCompletionEngine#resolveELOperand(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELExpression, boolean, java.util.List, org.jboss.tools.common.el.core.resolver.ElVarSearcher)
 	 */
-	public ELResolutionImpl resolveELOperand(IFile file,
+	public ELResolutionImpl resolveELOperand(IFile file, ELContext context,
 			ELExpression operand, boolean returnEqualedVariablesOnly,
 			List<Var> vars, ElVarSearcher varSearcher, int offset)
 			throws BadLocationException, StringIndexOutOfBoundsException {
@@ -244,14 +244,14 @@
 			return null;
 		}
 		String oldEl = operand.getText();
-		Var var = varSearcher.findVarForEl(oldEl, vars, true);
+		Var var = varSearcher.findVarForEl(oldEl, context, vars, true);
 		String suffix = ""; //$NON-NLS-1$
 		String newEl = oldEl;
 		TypeInfoCollector.MemberInfo member = null;
 		boolean isArray = false;
 		ELResolution varELResolution = null;
 		if(var!=null) {
-			varELResolution = resolveEL(file, var.getElToken(), true, offset);
+			varELResolution = resolveEL(file, context, var.getElToken(), true, offset);
 			if(varELResolution!=null && varELResolution.isResolved()) {
 				ELSegment segment = varELResolution.getLastSegment();
 				if(segment instanceof JavaMemberELSegment) {
@@ -290,7 +290,7 @@
 						: parseOperand(newEl)) 
 				: operand;
 
-		ELResolutionImpl resolution = resolveELOperand(file, newOperand, returnEqualedVariablesOnly, prefixWasChanged, offset);
+		ELResolutionImpl resolution = resolveELOperand(file, context, newOperand, returnEqualedVariablesOnly, prefixWasChanged, offset);
 		if(resolution==null) {
 			return null;
 		}
@@ -348,12 +348,12 @@
 					}
 				}
 
-				ELResolutionImpl oldElResolution = resolveELOperand(file, operand, returnEqualedVariablesOnly, false, offset);
+				ELResolutionImpl oldElResolution = resolveELOperand(file, context, operand, returnEqualedVariablesOnly, false, offset);
 				if(oldElResolution!=null) {
 					resolution.getProposals().addAll(oldElResolution.getProposals());
 				}
 			} else {
-				resolution = resolveELOperand(file, operand, returnEqualedVariablesOnly, false, offset);
+				resolution = resolveELOperand(file, context, operand, returnEqualedVariablesOnly, false, offset);
 			}
 		}
 
@@ -367,7 +367,7 @@
 			for (Var v : vars) {
 				String prefix = operand.toString();
 				if(v.getName().startsWith(prefix)) {
-					ELResolution r = resolveEL(file, v.getElToken(), true, vars, varSearcher, offset);
+					ELResolution r = resolveEL(file, context, v.getElToken(), true, vars, varSearcher, offset);
 					if(r==null) {
 						continue;
 					}
@@ -421,9 +421,9 @@
 	 * @throws BadLocationException
 	 * @throws StringIndexOutOfBoundsException
 	 */
-	public ELResolution resolveEL(IFile file, ELExpression operand, boolean varIsUsed, int offset) throws BadLocationException, StringIndexOutOfBoundsException {
+	public ELResolution resolveEL(IFile file, ELContext context, ELExpression operand, boolean varIsUsed, int offset) throws BadLocationException, StringIndexOutOfBoundsException {
 		if(!(operand instanceof ELInvocationExpression)) return null;
-		return resolveELOperand(file, operand, true, varIsUsed, offset);
+		return resolveELOperand(file, context, operand, true, varIsUsed, offset);
 	}
 
 	/**
@@ -436,12 +436,12 @@
 	 * @throws BadLocationException
 	 * @throws StringIndexOutOfBoundsException
 	 */
-	public ELResolution resolveEL(IFile file, ELExpression operand, boolean returnEqualedVariablesOnly, List<Var> vars, ElVarSearcher varSearcher, int offset) throws BadLocationException, StringIndexOutOfBoundsException {
+	public ELResolution resolveEL(IFile file, ELContext context, ELExpression operand, boolean returnEqualedVariablesOnly, List<Var> vars, ElVarSearcher varSearcher, int offset) throws BadLocationException, StringIndexOutOfBoundsException {
 		if(!(operand instanceof ELInvocationExpression)) return null;
-		return resolveELOperand(file, operand, returnEqualedVariablesOnly, vars, varSearcher, offset);
+		return resolveELOperand(file, context, operand, returnEqualedVariablesOnly, vars, varSearcher, offset);
 	}
 
-	public ELResolutionImpl resolveELOperand(IFile file, ELExpression operand,  
+	public ELResolutionImpl resolveELOperand(IFile file, ELContext context, ELExpression operand,  
 			boolean returnEqualedVariablesOnly, boolean varIsUsed, int offset) throws BadLocationException, StringIndexOutOfBoundsException {
 		if(!(operand instanceof ELInvocationExpression) || file == null) {
 			return null;
@@ -467,12 +467,12 @@
 //							// but we have to resolve arguments of probably a message component
 		} //else 
 		if (expr.getLeft() == null && isIncomplete) {
-			resolvedVariables = resolveVariables(file, expr, true, 
+			resolvedVariables = resolveVariables(file, context, expr, true, 
 					returnEqualedVariablesOnly, offset);
 		} else {
 			while(left != null) {
 				List<V>resolvedVars = new ArrayList<V>();
-				resolvedVars = resolveVariables(file, 
+				resolvedVars = resolveVariables(file, context,
 						left, left == expr, 
 						returnEqualedVariablesOnly, offset);
 				if (resolvedVars != null && !resolvedVars.isEmpty()) {
@@ -490,7 +490,7 @@
 				isIncomplete) {
 			// no vars are resolved 
 			// the tokens are the part of var name ended with a separator (.)
-			resolvedVariables = resolveVariables(file, expr, true, returnEqualedVariablesOnly, offset);			
+			resolvedVariables = resolveVariables(file, context, expr, true, returnEqualedVariablesOnly, offset);			
 
 			Set<TextProposal> proposals = new TreeSet<TextProposal>(TextProposal.KB_PROPOSAL_ORDER);
 			JavaMemberELSegmentImpl segment = new JavaMemberELSegmentImpl(expr.getFirstToken());
@@ -501,7 +501,7 @@
 				if(varName.startsWith(operand.getText())) {
 					// JBIDE-512, JBIDE-2541 related changes ===>>>
 
-					MemberInfo member = getMemberInfoByVariable(var, true, offset);
+					MemberInfo member = getMemberInfoByVariable(var, context, true, offset);
 
 					String sourceTypeName = member == null ? null : member.getDeclaringTypeQualifiedName();
 					if (sourceTypeName != null && sourceTypeName.indexOf('.') != -1) 
@@ -553,10 +553,10 @@
 
 			for (V var : resolvedVariables) {
 				if(isSingularAttribute(var)) {
-					bijectedAttribute = getMemberInfoByVariable(var, true, offset);
+					bijectedAttribute = getMemberInfoByVariable(var, context, true, offset);
 				}
 
-				MemberInfo member = getMemberInfoByVariable(var, true, offset);
+				MemberInfo member = getMemberInfoByVariable(var, context, true, offset);
 				String sourceTypeName = member == null ? null : member.getDeclaringTypeQualifiedName();
 				if (sourceTypeName != null && sourceTypeName.indexOf('.') != -1) 
 					sourceTypeName = Signature.getSimpleName(sourceTypeName);
@@ -608,7 +608,7 @@
 		List<TypeInfoCollector.MemberInfo> members = new ArrayList<TypeInfoCollector.MemberInfo>();
 		JavaMemberELSegmentImpl segment = new JavaMemberELSegmentImpl(expr.getFirstToken());
 		for (V var : resolvedVariables) {
-			TypeInfoCollector.MemberInfo member = getMemberInfoByVariable(var, returnEqualedVariablesOnly, offset);
+			TypeInfoCollector.MemberInfo member = getMemberInfoByVariable(var, context, returnEqualedVariablesOnly, offset);
 			if (member != null && !members.contains(member)) { 
 				String name = var.getName();
 				if(name.indexOf('.') >= 0) {
@@ -678,9 +678,9 @@
 		return resolution;
 	}
 
-	abstract public List<V> resolveVariables(IFile file, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset);
+	abstract public List<V> resolveVariables(IFile file, ELContext context, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset);
 
-	abstract protected TypeInfoCollector.MemberInfo getMemberInfoByVariable(V var, boolean onlyEqualNames, int offset);
+	abstract protected TypeInfoCollector.MemberInfo getMemberInfoByVariable(V var, ELContext context, boolean onlyEqualNames, int offset);
 
 	abstract protected boolean isStaticMethodsCollectingEnabled();
 	

Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELCompletionEngine.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELCompletionEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELCompletionEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -18,6 +18,6 @@
 
 public interface ELCompletionEngine extends ELResolver {
 
-	public ELResolution resolveELOperand(IFile file, ELExpression operand,  
+	public ELResolution resolveELOperand(IFile file, ELContext context, ELExpression operand,  
 			boolean returnEqualedVariablesOnly, List<Var> vars, ElVarSearcher varSearcher, int offset) throws BadLocationException, StringIndexOutOfBoundsException;
 }
\ No newline at end of file

Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELContext.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELContext.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ELContext.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -80,4 +80,16 @@
 	 * @return
 	 */
 	Set<ELReference> getELReferences(IRegion region);
+
+	/**
+	 * Returns true if the file was modified in some editor and has not been saved yet.
+	 * @return
+	 */
+	boolean isDirty();
+
+	/**
+	 * Set to true if the file was modified
+	 * @param dirty
+	 */
+	void setDirty(boolean dirty);
 }
\ No newline at end of file

Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ElVarSearcher.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ElVarSearcher.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/ElVarSearcher.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -302,7 +302,7 @@
 	 * @param initializeNestedVars
 	 * @return
 	 */
-	public Var findVarForEl(String el, List<Var> vars, boolean initializeNestedVars) {
+	public Var findVarForEl(String el, ELContext context, List<Var> vars, boolean initializeNestedVars) {
 		if(vars!=null) {
 			ArrayList<Var> parentVars = new ArrayList<Var>();
 			for (Var var : vars) {
@@ -311,13 +311,13 @@
 					String varName = var.getName();
 					if(el.equals(varName) || el.startsWith(varName.trim()+".")) { //$NON-NLS-1$
 						if(var.getElToken()!=null && initializeNestedVars) {
-							Var parentVar = findVarForEl(var.getElToken().getText(), parentVars, true);
+							Var parentVar = findVarForEl(var.getElToken().getText(), context, parentVars, true);
 							if(parentVar!=null) {
 								ELExpression resolvedToken = parentVar.getResolvedElToken();
 								if(resolvedToken==null && parentVar.getElToken()!=null) {
 									try {
 										// Initialize parent vars.
-										engine.resolveELOperand(file, var.getElToken(), true, parentVars, this, (var.getRegion() == null ? 0 : var.getRegion().getOffset()));
+										engine.resolveELOperand(file, context, var.getElToken(), true, parentVars, this, (var.getRegion() == null ? 0 : var.getRegion().getOffset()));
 										resolvedToken = parentVar.getResolvedElToken();
 									} catch (StringIndexOutOfBoundsException e) {
 										ELCorePlugin.getPluginLog().logError(e);

Modified: trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/SimpleELContext.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/SimpleELContext.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/common/plugins/org.jboss.tools.common.el.core/src/org/jboss/tools/common/el/core/resolver/SimpleELContext.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -26,6 +26,7 @@
 	static final ELReference[] EMPTY_ARRAY = new ELReference[0];
 
 	protected IFile resource;
+	protected boolean dirty;
 	protected ELResolver[] elResolvers;
 	protected List<Var> vars = new ArrayList<Var>();
 
@@ -113,4 +114,17 @@
 	public Set<ELReference> getELReferences(IRegion region) {
 		return Collections.emptySet();
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.jboss.tools.common.el.core.resolver.ELContext#isDirty()
+	 */
+	@Override
+	public boolean isDirty() {
+		return dirty;
+	}
+
+	public void setDirty(boolean dirty) {
+		this.dirty = dirty;
+	}
 }
\ No newline at end of file

Modified: trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -50,6 +50,7 @@
 	private IFile file;
 	private EditorValidationContext context;
 	private Map<IValidator, IProject> rootProjects;
+	private int count;
 
 	private static Set<IDocument> reporters = new HashSet<IDocument>();
 
@@ -59,6 +60,7 @@
 	 */
 	@Override
 	public void connect(IDocument document) {
+		count = 0;
 		this.document = document;
 	}
 
@@ -149,6 +151,7 @@
 	}
 
 	private void validate(Set<? extends IAsYouTypeValidator> validators, IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
+		count++;
 		for (IAsYouTypeValidator validator : validators) {
 			IProject rootProject = rootProjects.get(validator);
 			IValidatingProjectSet projectBrunch = context.getValidatingProjectTree(validator).getBrunches().get(rootProject);
@@ -192,7 +195,13 @@
 	 */
 	@Override
 	public void validate(IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
-		validateString(dirtyRegion, helper, reporter);
+		if(count==0) {
+			// Don't validate the file first time since WTP invokes the validator right after connection. 
+			init(helper, reporter);
+			count++;
+		} else {
+			validateString(dirtyRegion, helper, reporter);
+		}
 	}
 
 	@Override
@@ -200,6 +209,6 @@
 	}
 
 	@Override
-	public void validate(IValidationContext helper, IReporter reporter)	throws ValidationException {
+	public void validate(IValidationContext helper, IReporter reporter) throws ValidationException {
 	}
 }
\ No newline at end of file

Modified: trunk/common/tests/org.jboss.tools.common.el.core.test/src/org/jboss/tools/common/el/core/test/resolver/ElVarSearcherTest.java
===================================================================
--- trunk/common/tests/org.jboss.tools.common.el.core.test/src/org/jboss/tools/common/el/core/test/resolver/ElVarSearcherTest.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/common/tests/org.jboss.tools.common.el.core.test/src/org/jboss/tools/common/el/core/test/resolver/ElVarSearcherTest.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -52,31 +52,37 @@
 	}
 
 	private static class FakeELCompletionEngine implements ELCompletionEngine {
-		public ELResolution resolveELOperand(IFile file,
+		@Override
+		public ELResolution resolveELOperand(IFile file, ELContext context,
 				ELExpression operand, boolean returnEqualedVariablesOnly,
 				List<Var> vars, ElVarSearcher varSearcher, int offset)
 				throws BadLocationException, StringIndexOutOfBoundsException {
 			return new ELResolutionImpl(operand);
 		}
 
+		@Override
 		public ELParserFactory getParserFactory() {
 			return ELParserUtil.getJbossFactory();
 		}
 
+		@Override
 		public List<TextProposal> getProposals(ELContext context, String el, int offset) {
 			return Collections.emptyList();
 		}
 
+		@Override
 		public ELResolution resolve(ELContext context, ELExpression operand, int offset) {
 			return new ELResolutionImpl(operand);
 		}
 
+		@Override
 		public List<TextProposal> getProposals(ELContext context, int offset) {
 			return Collections.emptyList();
 		}
 
+		@Override
 		public IRelevanceCheck createRelevanceCheck(IJavaElement element) {
 			return null;
 		}
 	}
-}
+}
\ No newline at end of file

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/bean/el/JSF2ElResolver.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/bean/el/JSF2ElResolver.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/bean/el/JSF2ElResolver.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -21,6 +21,7 @@
 import org.jboss.tools.common.el.core.model.ELInvocationExpression;
 import org.jboss.tools.common.el.core.parser.ELParserFactory;
 import org.jboss.tools.common.el.core.parser.ELParserUtil;
+import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.common.el.core.resolver.TypeInfoCollector;
 import org.jboss.tools.common.el.core.resolver.TypeInfoCollector.MemberInfo;
 import org.jboss.tools.jsf.JSFModelPlugin;
@@ -60,7 +61,7 @@
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#getMemberInfoByVariable(org.jboss.tools.common.el.core.resolver.IVariable, boolean)
 	 */
 	@Override
-	protected MemberInfo getMemberInfoByVariable(IJSF2ManagedBean bean, boolean onlyEqualNames, int offset) {
+	protected MemberInfo getMemberInfoByVariable(IJSF2ManagedBean bean, ELContext context, boolean onlyEqualNames, int offset) {
 		return TypeInfoCollector.createMemberInfo(bean.getBeanClass());
 	}
 
@@ -69,7 +70,7 @@
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#resolveVariables(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELInvocationExpression, boolean, boolean)
 	 */
 	@Override
-	public List<IJSF2ManagedBean> resolveVariables(IFile file,	ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
+	public List<IJSF2ManagedBean> resolveVariables(IFile file, ELContext context,ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		ArrayList<IJSF2ManagedBean> beans = new ArrayList<IJSF2ManagedBean>();
 
 		IProject project = file.getProject();
@@ -120,6 +121,7 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.common.el.core.resolver.ELResolver#getParserFactory()
 	 */
+	@Override
 	public ELParserFactory getParserFactory() {
 		return factory;
 	}

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -109,7 +109,7 @@
 
 		List<TextProposal> proposals = null;
 		try {
-			 proposals = getCompletions(context.getResource(), document, elString.subSequence(0, elString.length()), position, returnEqualedVariablesOnly);
+			 proposals = getCompletions(context.getResource(), context, document, elString.subSequence(0, elString.length()), position, returnEqualedVariablesOnly);
 		} catch (StringIndexOutOfBoundsException e) {
 			log(e);
 		} catch (BadLocationException e) {
@@ -139,7 +139,7 @@
 	public ELResolutionImpl resolveELOperand(ELExpression operand,
 			ELContext context, boolean returnEqualedVariablesOnly, int offset) {
 		try {
-			return resolveELOperand(context.getResource(), operand, returnEqualedVariablesOnly, offset);
+			return resolveELOperand(context.getResource(), context, operand, returnEqualedVariablesOnly, offset);
 		} catch (StringIndexOutOfBoundsException e) {
 			log(e);
 		} catch (BadLocationException e) {
@@ -148,11 +148,11 @@
 		return null;
 	}
 
-	public List<TextProposal> getCompletions(IFile file, IDocument document, CharSequence prefix, 
+	public List<TextProposal> getCompletions(IFile file, ELContext context, IDocument document, CharSequence prefix, 
 			int position, boolean returnEqualedVariablesOnly) throws BadLocationException, StringIndexOutOfBoundsException {
 		List<TextProposal> completions = new ArrayList<TextProposal>();
 
-		ELResolutionImpl status = resolveELOperand(file, parseOperand("" + prefix), returnEqualedVariablesOnly, position); //$NON-NLS-1$
+		ELResolutionImpl status = resolveELOperand(file, context, parseOperand("" + prefix), returnEqualedVariablesOnly, position); //$NON-NLS-1$
 		if(status!=null) {
 			completions.addAll(status.getProposals());
 		}
@@ -160,7 +160,7 @@
 		return completions;
 	}
 
-	public ELResolutionImpl resolveELOperand(IFile file,
+	public ELResolutionImpl resolveELOperand(IFile file, ELContext context,
 			ELExpression operand, boolean returnEqualedVariablesOnly, int offset)
 			throws BadLocationException, StringIndexOutOfBoundsException {
 		if(!(operand instanceof ELInvocationExpression) || file == null) {
@@ -267,7 +267,7 @@
 		}
 		
 		if(!resolvedVariables.isEmpty() && resolvedVariables.iterator().next() instanceof IJSFVariable) {
-			return buildJavaResolution(resolution, left, expr, operand, resolvedVariables, returnEqualedVariablesOnly, offset);
+			return buildJavaResolution(resolution, context, left, expr, operand, resolvedVariables, returnEqualedVariablesOnly, offset);
 		}
 
 		//process segments one by one
@@ -294,14 +294,14 @@
 	}
 
 	//Method content copies code from the end AbstractELCompletionEngine.resolveELOperand
-	ELResolutionImpl buildJavaResolution(ELResolutionImpl resolution, ELInvocationExpression left, ELInvocationExpression expr,
+	ELResolutionImpl buildJavaResolution(ELResolutionImpl resolution, ELContext context, ELInvocationExpression left, ELInvocationExpression expr,
 			ELExpression operand, List<IVariable> resolvedVariables, boolean returnEqualedVariablesOnly, int offset) {
 		boolean varIsUsed = false;
 		// First segment is found - proceed with next tokens 
 		List<TypeInfoCollector.MemberInfo> members = new ArrayList<TypeInfoCollector.MemberInfo>();
 		JavaMemberELSegmentImpl segment = new JavaMemberELSegmentImpl(expr.getFirstToken());
 		for (IVariable var : resolvedVariables) {
-			TypeInfoCollector.MemberInfo member = getMemberInfoByVariable(var, returnEqualedVariablesOnly, offset);
+			TypeInfoCollector.MemberInfo member = getMemberInfoByVariable(var, context, returnEqualedVariablesOnly, offset);
 			if (member != null && !members.contains(member)) { 
 				members.add(member);
 				segment.setMemberInfo(member);
@@ -611,7 +611,7 @@
 	 * @see org.jboss.tools.common.el.core.ca.AbstractELCompletionEngine#getMemberInfoByVariable(org.jboss.tools.common.el.core.resolver.IVariable, boolean)
 	 */
 	@Override
-	protected MemberInfo getMemberInfoByVariable(IVariable var,
+	protected MemberInfo getMemberInfoByVariable(IVariable var, ELContext context,
 			boolean onlyEqualNames, int offset) {
 		if(var instanceof IJSFVariable) {
 			return TypeInfoCollector.createMemberInfo(((IJSFVariable)var).getSourceMember());
@@ -624,7 +624,7 @@
 	 * @see org.jboss.tools.common.el.core.ca.AbstractELCompletionEngine#resolveVariables(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELInvocationExpression, boolean, boolean)
 	 */
 	@Override
-	public List<IVariable> resolveVariables(IFile file,
+	public List<IVariable> resolveVariables(IFile file, ELContext context,
 			ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		return resolveVariablesInternal(file, expr, isFinal, onlyEqualNames);
 	}

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFELCompletionEngine.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFELCompletionEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFELCompletionEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -24,6 +24,7 @@
 import org.jboss.tools.common.el.core.model.ELInvocationExpression;
 import org.jboss.tools.common.el.core.parser.ELParserFactory;
 import org.jboss.tools.common.el.core.parser.ELParserUtil;
+import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.common.el.core.resolver.IVariable;
 import org.jboss.tools.common.el.core.resolver.TypeInfoCollector;
 import org.jboss.tools.common.el.core.resolver.TypeInfoCollector.MemberInfo;
@@ -57,6 +58,7 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#log(java.lang.Exception)
 	 */
+	@Override
 	protected void log(Exception e) {
 		JSFModelPlugin.getPluginLog().logError(e);
 	}
@@ -65,6 +67,7 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.common.el.core.resolver.ELCompletionEngine#getParserFactory()
 	 */
+	@Override
 	public ELParserFactory getParserFactory() {
 		return factory;
 	}
@@ -73,10 +76,11 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#resolveVariables(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELInvocationExpression, boolean, boolean)
 	 */
-	public List<IJSFVariable> resolveVariables(IFile file, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
+	@Override
+	public List<IJSFVariable> resolveVariables(IFile file, ELContext context, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		IModelNature project = EclipseResourceUtil.getModelNature(file.getProject());
 		
-		return resolveVariables(file, project, expr, isFinal, onlyEqualNames, offset);
+		return resolveVariables(file, context, project, expr, isFinal, onlyEqualNames, offset);
 	}
 
 	/**
@@ -87,7 +91,7 @@
 	 * @param onlyEqualNames
 	 * @return
 	 */
-	public List<IJSFVariable> resolveVariables(IFile file, IModelNature project, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
+	public List<IJSFVariable> resolveVariables(IFile file, ELContext context, IModelNature project, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		List<IJSFVariable>resolvedVars = new ArrayList<IJSFVariable>();
 		
 		if (project == null)
@@ -96,7 +100,7 @@
 		String varName = expr.toString();
 
 		if (varName != null) {
-			resolvedVars = resolveVariables(project, varName, onlyEqualNames, offset);
+			resolvedVars = resolveVariables(project, context, varName, onlyEqualNames, offset);
 		}
 		if (resolvedVars != null && !resolvedVars.isEmpty()) {
 			List<IJSFVariable> newResolvedVars = new ArrayList<IJSFVariable>();
@@ -134,7 +138,7 @@
 		return new ArrayList<IJSFVariable>(); 
 	}
 
-	protected List<IJSFVariable> resolveVariables(IModelNature project, String varName, boolean onlyEqualNames, int offset) {
+	protected List<IJSFVariable> resolveVariables(IModelNature project, ELContext context, String varName, boolean onlyEqualNames, int offset) {
 		if(project == null) return null;
 		List<IJSFVariable> beans = new JSFPromptingProvider().getVariables(project.getModel());
 		List<IJSFVariable> resolvedVariables = new ArrayList<IJSFVariable>();
@@ -157,7 +161,8 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#getMemberInfoByVariable(org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine.IVariable, boolean)
 	 */
-	protected TypeInfoCollector.MemberInfo getMemberInfoByVariable(IJSFVariable var, boolean onlyEqualNames, int offset) {
+	@Override
+	protected TypeInfoCollector.MemberInfo getMemberInfoByVariable(IJSFVariable var, ELContext context, boolean onlyEqualNames, int offset) {
 		return TypeInfoCollector.createMemberInfo(((IJSFVariable)var).getSourceMember());		
 	}
 
@@ -179,6 +184,7 @@
 		 * (non-Javadoc)
 		 * @see org.jboss.tools.jsf.model.JSFELCompletionEngine.IJSFVariable#getSourceMember()
 		 */
+		@Override
 		public IMember getSourceMember() {
 			return source;
 		}
@@ -187,6 +193,7 @@
 		 * (non-Javadoc)
 		 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine.IVariable#getName()
 		 */
+		@Override
 		public String getName() {
 			return name;
 		}

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFFuncsELCompletionEngine.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFFuncsELCompletionEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFFuncsELCompletionEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -87,7 +87,7 @@
 	 * @see org.jboss.tools.common.el.core.ca.AbstractELCompletionEngine#resolveVariables(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELInvocationExpression, boolean, boolean)
 	 */
 	@Override
-	public List<IJSFVariable> resolveVariables(IFile file,
+	public List<IJSFVariable> resolveVariables(IFile file, ELContext context,
 			ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		return resolveVariablesInternal(file, expr, isFinal, onlyEqualNames, offset);
 	}

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFImplicitObjectELResolver.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFImplicitObjectELResolver.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFImplicitObjectELResolver.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -27,6 +27,7 @@
 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.ELParserUtil;
+import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.common.el.core.resolver.ELResolution;
 import org.jboss.tools.common.el.core.resolver.ELSegment;
 import org.jboss.tools.common.el.core.resolver.JavaMemberELSegment;
@@ -65,9 +66,10 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.jst.web.kb.el.AbstractELCompletionEngine#resolveVariables(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELInvocationExpression, boolean, boolean)
 	 */
-	public List<IJSFVariable> resolveVariables(IFile file, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
+    @Override
+	public List<IJSFVariable> resolveVariables(IFile file, ELContext context, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		this.file = file;
-		return super.resolveVariables(file, expr, isFinal, onlyEqualNames, offset);
+		return super.resolveVariables(file, context, expr, isFinal, onlyEqualNames, offset);
 	}
 
     /*
@@ -75,7 +77,7 @@
 	 * @see org.jboss.tools.jsf.model.JSFELCompletionEngine#resolveVariables(org.jboss.tools.common.model.project.IModelNature, java.lang.String, boolean, int)
 	 */
 	@Override
-	protected List<IJSFVariable> resolveVariables(IModelNature project, String varName, boolean onlyEqualNames, int offset) {
+	protected List<IJSFVariable> resolveVariables(IModelNature project, ELContext context, String varName, boolean onlyEqualNames, int offset) {
 		if(file.getProject() == null) {
 			return null;
 		}
@@ -103,7 +105,7 @@
 
 		for (String var : elVars) {
 			try {
-				ELResolution resolution = resolveEL(file, IMPLICT_OBJECTS_ELS.get(var), false, offset);
+				ELResolution resolution = resolveEL(file, context, IMPLICT_OBJECTS_ELS.get(var), false, offset);
 				if(resolution!=null && resolution.isResolved()) {
 					ELSegment segment = resolution.getLastSegment();
 					if(segment instanceof JavaMemberELSegment) {

Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFMessageELCompletionEngine.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFMessageELCompletionEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSFMessageELCompletionEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -722,7 +722,7 @@
 	 * @see org.jboss.tools.common.el.core.ca.AbstractELCompletionEngine#getMemberInfoByVariable(org.jboss.tools.common.el.core.resolver.IVariable, boolean)
 	 */
 	@Override
-	protected MemberInfo getMemberInfoByVariable(IVariable var,
+	protected MemberInfo getMemberInfoByVariable(IVariable var, ELContext context,
 			boolean onlyEqualNames, int offset) {
 		return null;
 	}
@@ -732,7 +732,7 @@
 	 * @see org.jboss.tools.common.el.core.ca.AbstractELCompletionEngine#resolveVariables(org.eclipse.core.resources.IFile, org.jboss.tools.common.el.core.model.ELInvocationExpression, boolean, boolean)
 	 */
 	@Override
-	public List<IVariable> resolveVariables(IFile file,
+	public List<IVariable> resolveVariables(IFile file, ELContext context,
 			ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		return null;
 	}

Modified: trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/JSF2ModelTest.java
===================================================================
--- trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/JSF2ModelTest.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/JSF2ModelTest.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -24,13 +24,14 @@
 import org.eclipse.core.runtime.Path;
 import org.jboss.tools.common.el.core.model.ELInvocationExpression;
 import org.jboss.tools.common.el.core.parser.ELParser;
-import org.jboss.tools.common.el.core.parser.ELParserFactory;
 import org.jboss.tools.common.el.core.parser.ELParserUtil;
+import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.common.validation.ValidatorManager;
 import org.jboss.tools.jsf.jsf2.bean.el.JSF2ElResolver;
 import org.jboss.tools.jsf.jsf2.bean.model.IJSF2ManagedBean;
 import org.jboss.tools.jsf.jsf2.bean.model.IJSF2Project;
 import org.jboss.tools.jsf.jsf2.bean.model.JSF2ProjectFactory;
+import org.jboss.tools.jst.web.kb.PageContextFactory;
 import org.jboss.tools.test.util.JobUtils;
 import org.jboss.tools.test.util.ResourcesUtils;
 
@@ -84,19 +85,20 @@
 		ELInvocationExpression exp = (ELInvocationExpression)p.parse("#{myb}").getInstances().get(0).getExpression();
 
 		assertFalse(jsf2.isMetadataComplete());
-		List<IJSF2ManagedBean> bs = resolver.resolveVariables(f, exp, true, false, 5);
+		ELContext context = PageContextFactory.getInstance().createPageContext(f);
+		List<IJSF2ManagedBean> bs = resolver.resolveVariables(f, context, exp, true, false, 5);
 		assertFalse(bs.isEmpty());
 
 		replaceFile(webproject, "WebContent/WEB-INF/faces-config.complete", "WebContent/WEB-INF/faces-config.xml");
 		assertTrue(jsf2.isMetadataComplete());
-		bs = resolver.resolveVariables(f, exp, true, false, 5);
+		bs = resolver.resolveVariables(f, context, exp, true, false, 5);
 		assertTrue(bs.isEmpty());
 		beans = jsf2.getManagedBeans("mybean1");
 		assertTrue(beans.isEmpty());
 
 		replaceFile(webproject, "WebContent/WEB-INF/faces-config.original", "WebContent/WEB-INF/faces-config.xml");
 		assertFalse(jsf2.isMetadataComplete());
-		bs = resolver.resolveVariables(f, exp, true, false, 5);
+		bs = resolver.resolveVariables(f, context, exp, true, false, 5);
 		assertFalse(bs.isEmpty());
 		beans = jsf2.getManagedBeans("mybean1");
 		assertEquals(1, beans.size());
@@ -120,4 +122,4 @@
 			JobUtils.waitForIdle();
 		}
 	}
-}
+}
\ No newline at end of file

Modified: trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspELCompletionProposalComputer.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspELCompletionProposalComputer.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspELCompletionProposalComputer.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -90,29 +90,35 @@
 	protected void setVars(ELContextImpl context, IFile file) {
 		ELCompletionEngine fakeEngine = new ELCompletionEngine() {
 
-			public ELResolution resolveELOperand(IFile file,
+			@Override
+			public ELResolution resolveELOperand(IFile file, ELContext context,
 					ELExpression operand, boolean returnEqualedVariablesOnly,
 					List<Var> vars, ElVarSearcher varSearcher, int offset)
 					throws BadLocationException, StringIndexOutOfBoundsException {
 				return new ELResolutionImpl(operand);
 			}
 
+			@Override
 			public ELParserFactory getParserFactory() {
 				return ELParserUtil.getJbossFactory();
 			}
 
+			@Override
 			public List<TextProposal> getProposals(ELContext context, String el, int offset) {
 				return Collections.emptyList();
 			}
 
+			@Override
 			public ELResolution resolve(ELContext context, ELExpression operand, int offset) {
 				return new ELResolutionImpl(operand);
 			}
 
+			@Override
 			public List<TextProposal> getProposals(ELContext context, int offset) {
 				return Collections.emptyList();
 			}
 
+			@Override
 			public IRelevanceCheck createRelevanceCheck(IJavaElement element) {
 				return null;
 			}
@@ -131,6 +137,4 @@
 	protected int getTagInsertionBaseRelevance() {
 		return TextProposal.R_TAG_INSERTION;
 	}
-
-	
-}
+}
\ No newline at end of file

Modified: trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspTagCompletionProposalComputer.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspTagCompletionProposalComputer.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/contentassist/computers/JspTagCompletionProposalComputer.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -124,29 +124,35 @@
 	protected void setVars(ELContextImpl context, IFile file) {
 		ELCompletionEngine fakeEngine = new ELCompletionEngine() {
 
-			public ELResolution resolveELOperand(IFile file,
+			@Override
+			public ELResolution resolveELOperand(IFile file, ELContext context,
 					ELExpression operand, boolean returnEqualedVariablesOnly,
 					List<Var> vars, ElVarSearcher varSearcher, int offset)
 					throws BadLocationException, StringIndexOutOfBoundsException {
 				return new ELResolutionImpl(operand);
 			}
 
+			@Override
 			public ELParserFactory getParserFactory() {
 				return ELParserUtil.getJbossFactory();
 			}
 
+			@Override
 			public List<TextProposal> getProposals(ELContext context, String el, int offset) {
 				return Collections.emptyList();
 			}
 
+			@Override
 			public ELResolution resolve(ELContext context, ELExpression operand, int offset) {
 				return new ELResolutionImpl(operand);
 			}
 
+			@Override
 			public List<TextProposal> getProposals(ELContext context, int offset) {
 				return Collections.emptyList();
 			}
 
+			@Override
 			public IRelevanceCheck createRelevanceCheck(IJavaElement element) {
 				return null;
 			}
@@ -160,5 +166,4 @@
 			}
 		}
 	}
-
-}
+}
\ No newline at end of file

Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -153,15 +153,15 @@
 	 * The cache to store the created contexts
 	 * The key is IFile.getFullPath().toString() of the resource of the context 
 	 */
-	private Map<IFile, ELContext> cache = new HashMap<IFile, ELContext>();
+	private Map<IFile, SimpleELContext> cache = new HashMap<IFile, SimpleELContext>();
 
-	private ELContext getSavedContext(IFile resource) {
+	private SimpleELContext getSavedContext(IFile resource) {
 		synchronized (cache) {
 			return cache.get(resource);
 		}
 	}
 
-	private void saveConvext(ELContext context) {
+	private void saveConvext(SimpleELContext context) {
 		if (context.getResource() != null) {
 			synchronized (cache) {
 				cache.put(context.getResource(), context);
@@ -289,7 +289,7 @@
 		}
 	}
 
-	private ELContext createPropertiesContext(IFile file, IDocument document, boolean useLastSavedStateOfFile) {
+	private SimpleELContext createPropertiesContext(IFile file, IDocument document, boolean useLastSavedStateOfFile) {
 		ELContextImpl context = new ELContextImpl();
 		context.setResource(file);
 		context.setElResolvers(ELResolverFactoryManager.getInstance().getResolvers(file));
@@ -310,7 +310,7 @@
 		return context;
 	}
 
-	private static ELContext createJavaContext(IFile file, IDocument document, boolean useLastSavedStateOfFile) {
+	private static SimpleELContext createJavaContext(IFile file, IDocument document, boolean useLastSavedStateOfFile) {
 		ELContextImpl context = new ELContextImpl();
 		context.setResource(file);
 		context.setElResolvers(ELResolverFactoryManager.getInstance().getResolvers(file));
@@ -375,8 +375,9 @@
 			file = getResource(document);
 		}
 
-		boolean isContextCachingAllowed = !dontUseCache && !EclipseUIUtil.isOpenInActiveEditor(file);
-		ELContext context = isContextCachingAllowed ? getSavedContext(file) : null;
+		boolean modified = EclipseUIUtil.isOpenInActiveEditor(file);
+		boolean isContextCachingAllowed = !dontUseCache && !modified;
+		SimpleELContext context = isContextCachingAllowed ? getSavedContext(file) : null;
 		if (context == null) {
 			String typeId = getContentTypeIdentifier(file == null ? document : file);
 
@@ -444,6 +445,7 @@
 			}
 
 			if (context != null) { // && isContextCachingAllowed) {  <- Save context even for modified files to prevent multiple initialization when invoked from NON-UI thread.
+				context.setDirty(modified);
 				saveConvext(context);
 			}
 		}
@@ -537,7 +539,7 @@
 		return null;
 	}
 	
-	private static ELContext createPageContextInstance(String contentType) {
+	private static SimpleELContext createPageContextInstance(String contentType) {
 		String contextType = IncludeContextBuilder.getContextType(contentType);
 		if (contextType == null && contentType != null) {
 			IContentType baseContentType = Platform.getContentTypeManager().getContentType(contentType);
@@ -552,7 +554,7 @@
 		return createContextInstanceOfType(contextType);
 	}
 
-	private static ELContext createContextInstanceOfType(String contextType) {
+	private static SimpleELContext createContextInstanceOfType(String contextType) {
 		if (JSP_PAGE_CONTEXT_TYPE.equals(contextType)) {
 			return new JspContextImpl();
 		} else if (FACELETS_PAGE_CONTEXT_TYPE.equals(contextType)) {

Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -61,9 +61,9 @@
 import org.jboss.tools.common.java.IJavaSourceReference;
 import org.jboss.tools.common.validation.ContextValidationHelper;
 import org.jboss.tools.common.validation.EditorValidationContext;
-import org.jboss.tools.common.validation.IAsYouTypeValidator;
 import org.jboss.tools.common.validation.IELValidationDelegate;
 import org.jboss.tools.common.validation.IProjectValidationContext;
+import org.jboss.tools.common.validation.IStringValidator;
 import org.jboss.tools.common.validation.IValidatingProjectTree;
 import org.jboss.tools.common.validation.ValidatorManager;
 import org.jboss.tools.jst.web.kb.PageContextFactory;
@@ -75,7 +75,7 @@
  * EL Validator
  * @author Alexey Kazakov
  */
-public class ELValidator extends WebValidator implements IAsYouTypeValidator {
+public class ELValidator extends WebValidator implements IStringValidator {
 
 	public static final String ID = "org.jboss.tools.jst.web.kb.ELValidator"; //$NON-NLS-1$
 	public static final String PROBLEM_TYPE = "org.jboss.tools.jst.web.kb.elproblem"; //$NON-NLS-1$
@@ -255,6 +255,7 @@
 		setAsYouTypeValidation(true);
 		this.document = validationContext.getDocument();
 		ELContext elContext = PageContextFactory.createPageContext(validationContext.getDocument(), true);
+		elContext.setDirty(true);
 		Set<ELReference> references = elContext.getELReferences(dirtyRegion);
 
 		for (ELReference elReference : references) {

Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELCompletionEngine.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELCompletionEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamELCompletionEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -37,6 +37,7 @@
 import org.jboss.tools.common.el.core.parser.ELParser;
 import org.jboss.tools.common.el.core.parser.ELParserFactory;
 import org.jboss.tools.common.el.core.parser.ELParserUtil;
+import org.jboss.tools.common.el.core.resolver.ELContext;
 import org.jboss.tools.common.el.core.resolver.ELResolution;
 import org.jboss.tools.common.el.core.resolver.ELResolutionImpl;
 import org.jboss.tools.common.el.core.resolver.ELSegment;
@@ -96,10 +97,12 @@
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.common.el.core.resolver.ELCompletionEngine#getParserFactory()
 	 */
+	@Override
 	public ELParserFactory getParserFactory() {
 		return factory;
 	}
 
+	@Override
 	protected void log(Exception e) {
 		SeamCorePlugin.getPluginLog().logError(e);
 	}
@@ -159,16 +162,18 @@
 	}
 
 	@Override
-	public List<ISeamContextVariable> resolveVariables(IFile file, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
+	public List<ISeamContextVariable> resolveVariables(IFile file, ELContext context, ELInvocationExpression expr, boolean isFinal, boolean onlyEqualNames, int offset) {
 		ISeamProject project = SeamCorePlugin.getSeamProject(file.getProject(), true);
 //		ScopeType scope = getScope(project, file);
 		return resolveVariables(project, file, expr, isFinal, onlyEqualNames);
 	}
 
-	protected TypeInfoCollector.MemberInfo getMemberInfoByVariable(ISeamContextVariable var, boolean onlyEqualNames, int offset) {
+	@Override
+	protected TypeInfoCollector.MemberInfo getMemberInfoByVariable(ISeamContextVariable var, ELContext context, boolean onlyEqualNames, int offset) {
 		return SeamExpressionResolver.getMemberInfoByVariable(var, true, this, offset);
 	}
 
+	@Override
 	protected void setImage(TextProposal proposal, ISeamContextVariable var) {
 		if (isSeamMessagesComponentVariable((ISeamContextVariable)var)) {
 			proposal.setImage(SEAM_MESSAGES_PROPOSAL_IMAGE);
@@ -177,10 +182,12 @@
 		}
 	}
 
+	@Override
 	protected boolean isSingularAttribute(ISeamContextVariable var) {
 		return var instanceof IBijectedAttribute;
 	}
 
+	@Override
 	protected void setImage(TextProposal kbProposal, TypeInfoCollector.MemberPresentation proposal) {
 		if (proposal.getMember() instanceof MessagesInfo) {
 			kbProposal.setImage(SEAM_MESSAGES_PROPOSAL_IMAGE);
@@ -189,10 +196,12 @@
 		}
 	}
 
+	@Override
 	protected boolean isSingularMember(TypeInfoCollector.MemberInfo mbr) {
 		return (mbr instanceof MessagesInfo);
 	}
 
+	@Override
 	protected void resolveLastSegment(ELInvocationExpression expr, 
 			List<TypeInfoCollector.MemberInfo> members,
 			ELResolutionImpl resolution,
@@ -509,7 +518,7 @@
 		ElVarSearcher varSearcher = new ElVarSearcher(file, this);
 		List<Var> vars = varSearcher.findAllVars(file, expr.getStartPosition());
 
-		ELResolution resolution = resolveELOperand(file, expr, true, vars, varSearcher, 0);
+		ELResolution resolution = resolveELOperand(file, null, expr, true, vars, varSearcher, 0);
 		if (resolution!=null && resolution.isResolved()) {
 			ELSegment segment = resolution.getLastSegment();
 			if(segment instanceof JavaMemberELSegment) {

Modified: trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamExpressionResolver.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamExpressionResolver.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/el/SeamExpressionResolver.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -367,7 +367,7 @@
 				if(ex instanceof ELInvocationExpression) {
 					ELInvocationExpression expr = (ELInvocationExpression)ex;
 					try {
-						ELResolution resolution = engine.resolveEL(null, expr, false, offset);
+						ELResolution resolution = engine.resolveEL(null, null, expr, false, offset);
 						if(resolution != null && resolution.isResolved()) {
 							ELSegment segment = resolution.getLastSegment();
 							if(segment instanceof JavaMemberELSegmentImpl) {

Modified: trunk/seam/plugins/org.jboss.tools.seam.text.ext/src/org/jboss/tools/seam/text/ext/hyperlink/SeamBeanHyperlinkPartitioner.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.text.ext/src/org/jboss/tools/seam/text/ext/hyperlink/SeamBeanHyperlinkPartitioner.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/seam/plugins/org.jboss.tools.seam.text.ext/src/org/jboss/tools/seam/text/ext/hyperlink/SeamBeanHyperlinkPartitioner.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -300,7 +300,7 @@
 					return null;
 				
 				List<Var> allVars= varSearcher.findAllVars(file, start);
-				Var var = varSearcher.findVarForEl(expr.getText(), allVars, true);
+				Var var = varSearcher.findVarForEl(expr.getText(), null, allVars, true);
 				if (var == null) {
 					// Find a Var in the current offset assuming that it's a node with var/value attribute pair
 					var = varSearcher.findVar(file, start);

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchEngine.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchEngine.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchEngine.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -12,14 +12,12 @@
 package org.jboss.tools.seam.ui.search;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.zip.CRC32;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -29,7 +27,6 @@
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.search.IJavaSearchConstants;
 import org.eclipse.jdt.core.search.IJavaSearchScope;
-import org.eclipse.jdt.core.search.SearchEngine;
 import org.eclipse.jdt.core.search.SearchParticipant;
 import org.eclipse.jdt.core.search.SearchPattern;
 import org.eclipse.jdt.core.search.SearchRequestor;
@@ -41,8 +38,8 @@
 import org.jboss.tools.common.el.core.resolver.Var;
 import org.jboss.tools.seam.core.ISeamContextVariable;
 import org.jboss.tools.seam.core.ISeamProject;
-import org.jboss.tools.seam.core.SeamCorePlugin;
 import org.jboss.tools.seam.core.SeamCoreMessages;
+import org.jboss.tools.seam.core.SeamCorePlugin;
 import org.jboss.tools.seam.internal.core.el.SeamELCompletionEngine;
 import org.jboss.tools.seam.ui.SeamGuiPlugin;
 
@@ -137,7 +134,7 @@
 					return Status.OK_STATUS;
 				
 				List<Var> allVars= varSearcher.findAllVars(sourceFile, tokens.getStartPosition());
-				Var var = varSearcher.findVarForEl(elText.toString(), allVars, true);
+				Var var = varSearcher.findVarForEl(elText.toString(), null, allVars, true);
 				if (var == null) {
 					// Find a Var in the current offset assuming that it's a node with var/value attribute pair
 					var = varSearcher.findVar(sourceFile, tokens.getStartPosition());

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchVisitor.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchVisitor.java	2012-07-06 22:13:38 UTC (rev 42448)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/search/SeamSearchVisitor.java	2012-07-06 23:29:53 UTC (rev 42449)
@@ -767,7 +767,7 @@
 						expr = expr.getLeft();
 					}
 				} else if (fVarMatchers != null) {
-					Var var = fELVarSearcher.findVarForEl(operand, fVarListForCurentValidatedNode, false);
+					Var var = fELVarSearcher.findVarForEl(operand, null, fVarListForCurentValidatedNode, false);
 					if (var != null){
 						if (matches(var)) {
 							ELInvocationExpression expr = token;



More information about the jbosstools-commits mailing list