package com.taobao.easyweb.core.groovy.metamethod; import com.taobao.easyweb.core.context.ThreadContext; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created with IntelliJ IDEA. * User: jimmey * Date: 13-3-26 * Time: ����11:30 * To change this template use File | Settings | File Templates. */ public class MetaMethodFactory { private static Map<String, IMetaMethod> appMetaMethods = new ConcurrentHashMap<String, IMetaMethod>(); private static IMetaMethod defaultImpl; static { defaultImpl = new MetaMethodImpl(); } public static void regist(String appName, IMetaMethod iMetaMethod) { appMetaMethods.put(appName, iMetaMethod); } public static Object invoke(final String methodName, final Object[] arguments) { IMetaMethod metaMethod = appMetaMethods.get(ThreadContext.getContext().getAppName()); Object obj = null; if (metaMethod != null) { obj = metaMethod.invoke(methodName, arguments); } if (obj == null) { obj = defaultImpl.invoke(methodName, arguments); } return obj; } }