/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cli_fmw.delegate;
import cli_fmw.ContextParamsHolder;
import cli_fmw.ContextParamsHolder.ContextParams;
import cli_fmw.main.ClipsException;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* Делегат
* Предназначен для instant-обновления базы данных. То есть работа идет
* в онлайновом режиме. В начале работы загружается содержимое делегата,
* функцией load. Загрузка может быть отложенной, ленивой.
* В ходе работы содержимое делегата меняется. При этом должна вызываться
* ОДНА функция делегата, которая в синхронном режиме сохраняет изменения
* в базу данных и в случае ошибки выбрасывает исключение.
*
* @author Axe Ilshat
*/
public class Delegate {
private static Context c;
protected static Object lookupBean(String title) throws ClipsException {
ContextParams contextParams = ContextParamsHolder.getContextParams();
String prefix = "clips-beans/";
try {
return getContext(contextParams).lookup(prefix + title);
} catch(NamingException ne) {
throw new ClipsException("Не удалось получить сервис "+ prefix + title + ". Информация: ", ne);
}
}
static private Context getContext(ContextParams params) throws NamingException {
if(c == null) {
if (params != null){
c = new InitialContext(params.getParams());
}else{
c = new InitialContext();
}
}
return c;
}
}