/* * Created by LuaView. * Copyright (c) 2017, Alibaba Group. All rights reserved. * * This source code is licensed under the MIT. * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree. */ package com.taobao.luaview.userdata.base; import com.taobao.luaview.cache.LuaCache; import com.taobao.luaview.global.LuaView; import org.luaj.vm2.Globals; import org.luaj.vm2.LuaValue; import org.luaj.vm2.Varargs; /** * Cacheable UserData * * @author song * @date 16/1/21 * 下午5:14 song XXX */ public abstract class BaseCacheUserdata extends BaseUserdata implements LuaCache.CacheableObject { public BaseCacheUserdata(Globals globals, LuaValue metatable) { super(globals, metatable); cacheObject(); } public BaseCacheUserdata(Globals globals, LuaValue metatable, Varargs varargs) { super(globals, metatable, varargs); cacheObject(); } public BaseCacheUserdata(Object obj, Globals globals, LuaValue metatable) { super(obj, globals, metatable); cacheObject(); } public BaseCacheUserdata(Object obj, Globals globals, LuaValue metatable, Varargs varargs) { super(obj, globals, metatable, varargs); cacheObject(); } private void cacheObject() { final Globals globals = getGlobals(); final LuaCache luaCache = globals != null ? globals.getLuaCache() : null; if(luaCache != null){ luaCache.cacheObject(getClass(), this); } } }