Package play.mvc

Source Code of play.mvc.ActionFunction

package play.mvc;

import cambridge.ExpressionEvaluationException;
import cambridge.parser.expressions.CambridgeExpression;
import cambridge.parser.expressions.FunctionRunner;

import java.util.Map;

/**
* @author Erdinc Yilmazel
* @since 1/27/11
*/
public class ActionFunction extends FunctionRunner {
   /*
   @('Clients.showAccounts', 23423)
    */

   boolean absolute;

   public ActionFunction(boolean absolute) {
      this.absolute = absolute;
   }

   @Override
   public Object eval(Map<String, Object> p, CambridgeExpression[] params) throws ExpressionEvaluationException {
      if (params == null || params.length == 0) {
         throw new ExpressionEvaluationException("Action name error");
      }

      String call = params[0].asString(p);
      String[] action = call.split("\\.");
      String controller = null;
      String name = null;
      if (action.length == 2) {
         controller = action[0];
         name = action[1];
      } else {
         name = action[0];
      }

      Object[] param = null;
      if (params.length > 1) {
         param = new Object[params.length - 1];
         for (int i = 1; i < param.length; i++) {
            param[i - 1] = params[i].eval(p);
         }
      }

      return ActionRoute.invoke(controller, name, param, absolute);
   }
}
TOP

Related Classes of play.mvc.ActionFunction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.