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

org.jamon.codegen.OverriddenMethodUnit Maven / Gradle / Ivy

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.jamon.codegen;

import java.util.Collection;
import java.util.List;

import org.jamon.api.Location;
import org.jamon.compiler.ParserErrorsImpl;
import org.jamon.node.ParentArgNode;

public class OverriddenMethodUnit extends AbstractUnit implements MethodUnit, InheritedUnit {
  public OverriddenMethodUnit(
    DeclaredMethodUnit declaredMethodUnit,
    Unit parent,
    ParserErrorsImpl errors,
    Location location) {
    super(declaredMethodUnit.getName(), parent, errors, location);
    this.declaredMethodUnit = declaredMethodUnit;
    inheritedArgs = new InheritedArgs(
      getName(),
      declaredMethodUnit.getRequiredArgs(),
      declaredMethodUnit.getOptionalArgsSet(),
      declaredMethodUnit.getFragmentArgs(),
      errors);

  }

  @Override
  public void addParentArg(ParentArgNode node) {
    inheritedArgs.addParentArg(node);
  }

  @Override
  public Collection getVisibleArgs() {
    return inheritedArgs.getVisibleArgs();
  }

  private final DeclaredMethodUnit declaredMethodUnit;

  private final InheritedArgs inheritedArgs;

  @Override
  public List getFragmentArgs() {
    return declaredMethodUnit.getFragmentArgs();
  }

  @Override
  public List getSignatureRequiredArgs() {
    return declaredMethodUnit.getSignatureRequiredArgs();
  }

  @Override
  public Collection getSignatureOptionalArgs() {
    return declaredMethodUnit.getSignatureOptionalArgs();
  }

  @Override
  public String getOptionalArgDefaultMethod(OptionalArgument arg) {
    return declaredMethodUnit.getOptionalArgDefaultMethod(arg);
  }

  @Override
  public void printRenderArgsDecl(CodeWriter writer) {
    for (AbstractArgument arg : declaredMethodUnit.getRenderArgs()) {
      writer.printListElement(
        "final " + arg.getType() + " "
        + (inheritedArgs.isArgVisible(arg) ? "" : "p__jamon__") + arg.getName());
    }
  }

  @Override
  public boolean isAbstract() {
    return false;
  }

  @Override
  public void addFragmentArg(org.jamon.codegen.FragmentArgument arg) {
    throw new UnsupportedOperationException();
  }

  @Override
  public void addRequiredArg(org.jamon.codegen.RequiredArgument arg) {
    throw new UnsupportedOperationException();
  }

  @Override
  public void addOptionalArg(org.jamon.codegen.OptionalArgument arg) {
    throw new UnsupportedOperationException();
  }

  @Override
  public Collection getOptionalArgsWithDefaults() {
    return inheritedArgs.getOptionalArgsWithNewDefaultValues();
  }

  @Override
  public String getDefaultForArg(OptionalArgument arg) {
    return inheritedArgs.getDefaultValue(arg);
  }

  @Override
  public boolean isOverride() {
    return true;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy