Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   * http://www.apache.org/licenses/LICENSE-2.0
   * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 /*
  * 22 October 1999: This class added by Holger Arendt.
  */
 
 package freemarker.core;
 
 import java.io.Writer;
 import java.util.List;
 
A unary operator that calls a TemplateMethodModel. It associates with the Identifier or Dot to its left.
 
 final class MethodCall extends Expression {
 
     private final Expression target;
     private final ListLiteral arguments;
 
     MethodCall(Expression targetArrayList arguments) {
         this(targetnew ListLiteral(arguments));
     }
 
     private MethodCall(Expression targetListLiteral arguments) {
         this. = target;
         this. = arguments;
     }
 
     {
         TemplateModel targetModel = .eval(env);
         if (targetModel instanceof TemplateMethodModel) {
             TemplateMethodModel targetMethod = (TemplateMethodModel)targetModel;
             List argumentStrings = 
             targetMethod instanceof TemplateMethodModelEx
             ? .getModelList(env)
             : .getValueList(env);
             Object result = targetMethod.exec(argumentStrings);
             return env.getObjectWrapper().wrap(result);
         }
         else if (targetModel instanceof Macro) {
             Macro func = (MacrotargetModel;
             env.setLastReturnValue(null);
             if (!func.isFunction()) {
                 throw new _MiscTemplateException(env"A macro cannot be called in an expression. (Functions can be.)");
             }
             Writer prevOut = env.getOut();
             try {
                 env.setOut(.);
                 env.invoke(funcnull.nullnull);
             } catch (IOException e) {
                 // Should not occur
                 throw new TemplateException("Unexpected exception during function execution"eenv);
             } finally {
                 env.setOut(prevOut);
             }
             return env.getLastReturnValue();
         }
         else {
             throw new NonMethodException(targetModelenv);
         }
     }
 
     public String getCanonicalForm() {
         StringBuffer buf = new StringBuffer();
         buf.append(.getCanonicalForm());
         buf.append("(");
         String list = .getCanonicalForm();
         buf.append(list.substring(1, list.length() -1));
         buf.append(")");
         return buf.toString();
     }
 
     String getNodeTypeSymbol() {
         return "...(...)";
    }
    
        return null;
    }
    boolean isLiteral() {
        return false;
    }
            String replacedIdentifierExpression replacementReplacemenetState replacementState) {
        return new MethodCall(
                .deepCloneWithIdentifierReplaced(replacedIdentifierreplacementreplacementState),
                (ListLiteral).deepCloneWithIdentifierReplaced(replacedIdentifierreplacementreplacementState));
    }
    int getParameterCount() {
        return 1 + ..size();
    }
    Object getParameterValue(int idx) {
        if (idx == 0) {
            return ;
        } else if (idx < getParameterCount()) {
            return ..get(idx - 1);
        } else {
            throw new IndexOutOfBoundsException();
        }
    }
    ParameterRole getParameterRole(int idx) {
        if (idx == 0) {
            return .;
        } else if (idx < getParameterCount()) {
            return .;
        } else {
            throw new IndexOutOfBoundsException();
        }
    }
New to GrepCode? Check out our FAQ X