00001
00027 package org.objectweb.jonas_ejb.container;
00028
00029 import java.util.Hashtable;
00030
00031 import javax.naming.Context;
00032 import javax.naming.Name;
00033 import javax.naming.Reference;
00034 import javax.naming.spi.ObjectFactory;
00035
00036 import org.objectweb.util.monolog.api.BasicLevel;
00037
00045 public class HomeFactory implements ObjectFactory {
00046
00059 public Object getObjectInstance(Object refObj, Name name, Context nameCtx, Hashtable env) throws Exception {
00060 Reference ref = (Reference) refObj;
00061 String clname = ref.getClassName();
00062
00063 TraceEjb.interp.log(BasicLevel.DEBUG, clname);
00064
00065 if (clname.equals("org.objectweb.jonas_ejb.container.JLocalHome")) {
00066
00067 String beanName = (String) ref.get("bean.name").getContent();
00068 JLocalHome localhome = JLocalHome.getLocalHome(beanName);
00069 if (localhome == null) {
00070 TraceEjb.logger.log(BasicLevel.ERROR, "cannot get " + beanName);
00071 }
00072 return localhome;
00073 } else if (clname.equals("org.objectweb.jonas_ejb.container.JServiceEndpointHome")) {
00074
00075 String beanName = (String) ref.get("bean.name").getContent();
00076 JServiceEndpointHome sehome = JServiceEndpointHome.getSEHome(beanName);
00077 if (sehome == null) {
00078 TraceEjb.logger.log(BasicLevel.ERROR, "cannot get " + beanName);
00079 }
00080 return sehome;
00081 } else {
00082 TraceEjb.logger.log(BasicLevel.ERROR, "bad class name: " + clname);
00083 }
00084
00085 return null;
00086 }
00087 }