All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jamon.node.AbstractComponentCallNode Maven / Gradle / Ivy

package org.jamon.node;

import java.util.ArrayList;
import java.util.List;

import org.jamon.api.Location;
public class AbstractComponentCallNode extends AbstractCallNode {
  public AbstractComponentCallNode(Location location, AbstractPathNode callPath, AbstractParamsNode params) {
    super(location);
    if ((this.callPath = callPath) == null)
      { throw new NullPointerException(); }
    if ((this.params = params) == null)
      { throw new NullPointerException(); }
  }

  @Override public void apply(Analysis analysis)
  {
    analysis.caseAbstractComponentCallNode(this);
  }

  private final AbstractPathNode callPath;
  public AbstractPathNode getCallPath() { return callPath; }

  private final List genericParams = new ArrayList();
  public AbstractComponentCallNode addGenericParam(GenericCallParam genericParam) {
    if (genericParam == null) { throw new NullPointerException(); }
    genericParams.add(genericParam);
    return this;
  }
  public List getGenericParams() { return genericParams; }

  private final AbstractParamsNode params;
  public AbstractParamsNode getParams() { return params; }

  @Override public boolean equals(Object obj) {
    return obj != null
        && super.equals(obj)
      && callPath.equals(((AbstractComponentCallNode) obj).callPath)
      && genericParams.equals(((AbstractComponentCallNode) obj).genericParams)
      && params.equals(((AbstractComponentCallNode) obj).params)
    ;
  }

  @Override public int hashCode() {
    return super.hashCode()
      ^ callPath.hashCode()
      ^ genericParams.hashCode()
      ^ params.hashCode()
    ;
  }

  @Override protected void propertiesToString(StringBuilder buffer) {
    super.propertiesToString(buffer);
    addProperty(buffer, "callPath", callPath);
    addPropertyList(buffer, "genericParam", genericParams);
    addProperty(buffer, "params", params);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy