1 25 package org.ofbiz.pos.jpos.factory; 26 27 import java.util.HashMap ; 28 import java.util.Map ; 29 30 import jpos.JposConst; 31 import jpos.JposException; 32 import jpos.config.JposEntry; 33 import jpos.loader.JposServiceInstance; 34 import jpos.loader.JposServiceInstanceFactory; 35 36 import org.ofbiz.base.util.ObjectType; 37 import org.ofbiz.pos.jpos.service.BaseService; 38 39 45 public class OfbizJposServiceFactory extends Object implements JposServiceInstanceFactory { 46 47 public static final String module = OfbizJposServiceFactory.class.getName(); 48 private static Map serviceMap = new HashMap (); 49 50 public JposServiceInstance createInstance(String logicalName, JposEntry entry) throws JposException { 51 if (!entry.hasPropertyWithName(JposEntry.SERVICE_CLASS_PROP_NAME)) { 53 throw new JposException(JposConst.JPOS_E_NOSERVICE, "serviceClass property not found!"); 54 } 55 56 String className = (String ) entry.getPropertyValue(JposEntry.SERVICE_CLASS_PROP_NAME); 57 BaseService service = (BaseService) serviceMap.get(className); 58 59 if (service != null) { 60 service.setEntry(entry); 61 } else { 62 try { 63 Object obj = ObjectType.getInstance(className); 64 if (obj == null) { 65 throw new JposException(JposConst.JPOS_E_NOEXIST, "unable to locate serviceClass"); 66 } 67 68 if (!(obj instanceof JposServiceInstance)) { 69 throw new JposException(JposConst.JPOS_E_NOSERVICE, "serviceClass is not an instance of JposServiceInstance"); 70 } else if (!(obj instanceof BaseService)) { 71 throw new JposException(JposConst.JPOS_E_NOSERVICE, "serviceClass is not an instance of BaseKybService"); 72 } else { 73 service = (BaseService) obj; 74 service.setEntry(entry); 75 serviceMap.put(className, service); 76 } 77 } catch (Exception e) { 78 throw new JposException(JposConst.JPOS_E_NOSERVICE, "Error creating the service instance [" + className + "]", e); 79 } 80 } 81 82 return service; 83 } 84 } 85 | Popular Tags |