/*******************************************************************************
* Copyright (c) 2007 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.el.internal.core.model;
import java.util.List;
import org.jboss.tools.common.el.core.model.ELInvocationExpression;
import org.jboss.tools.common.el.core.model.ELObject;
/**
*
* @author V. Kabanovich
*
*/
public abstract class ELInvocationExpressionImpl extends ELExpressionImpl implements ELInvocationExpression {
protected ELInvocationExpressionImpl left;
boolean leftIsFake = false;
public ELInvocationExpressionImpl() {}
public void addChild(ELObjectImpl child) {
}
public ELInvocationExpressionImpl getLeft() {
return left;
}
public void setLeftIsFake(boolean b) {
leftIsFake = b;
}
public void setLeft(ELInvocationExpressionImpl left) {
this.left = left;
if(left != null) {
left.setParent(this);
setFirstToken(left.getFirstToken());
ELObject p = parent;
while(p instanceof ELInvocationExpressionImpl) {
((ELInvocationExpressionImpl)p).setFirstToken(firstToken);
p = p.getParent();
}
}
}
public String toString() {
return left != null && !leftIsFake ? left.toString() : ""; //$NON-NLS-1$
}
public void collectInvocations(List<ELInvocationExpression> list) {
list.add(this);
//We do not need left part expression, it is part of this invocation
ELInvocationExpressionImpl l = this;
while(l != null) {
if(l instanceof ELMethodInvocationImpl) {
((ELMethodInvocationImpl)l).collectInvocationsInParameters(list);
} else if(l instanceof ELArgumentExpressionImpl) {
((ELArgumentExpressionImpl)l).collectInvocationsInArgument(list);
}
if(leftIsFake) break;
l = l.getLeft();
}
}
}