[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