package com.aggrepoint.winlet;
import java.util.Hashtable;
import org.springframework.context.ApplicationContext;
import com.aggrepoint.winlet.spring.def.WinletDef;
/**
* 负责管理Winlet实例和WindowInstance实例
*
* @author Jiangming Yang (yangjm@gmail.com)
*/
public class WinletManager {
/******************************************************************************
*
* Winlet实例
*
*****************************************************************************/
static Hashtable<String, Object> WINLETS = new Hashtable<String, Object>();
static long SEQ_START = 10000;
static long seqId = SEQ_START;
public static long getSeqId() {
if (seqId == Long.MAX_VALUE)
seqId = SEQ_START;
else
seqId++;
return seqId;
}
/**
* 获取Winlet实例,如果不存在则创建
*
* @param context
* @param req
* @param winletDef
* @return
* @throws Exception
*/
public static synchronized Object getWinlet(ApplicationContext context,
WinletDef winletDef) throws Exception {
Object winlet = WINLETS.get(winletDef.getName());
if (winlet == null) {
winlet = context.getBean(winletDef.getName());
WINLETS.put(winletDef.getName(), winlet);
}
return winlet;
}
}