1 13 package org.ejbca.ui.web.admin.services; 14 15 import java.io.ByteArrayInputStream ; 16 import java.io.ByteArrayOutputStream ; 17 import java.io.IOException ; 18 import java.io.ObjectInputStream ; 19 import java.io.ObjectOutputStream ; 20 import java.util.ArrayList ; 21 import java.util.Collection ; 22 import java.util.HashMap ; 23 24 import org.apache.log4j.Logger; 25 import org.ejbca.ui.web.admin.services.servicetypes.CRLUpdateWorkerType; 26 import org.ejbca.ui.web.admin.services.servicetypes.CertificateExpirationNotifierWorkerType; 27 import org.ejbca.ui.web.admin.services.servicetypes.CustomActionType; 28 import org.ejbca.ui.web.admin.services.servicetypes.CustomIntervalType; 29 import org.ejbca.ui.web.admin.services.servicetypes.CustomWorkerType; 30 import org.ejbca.ui.web.admin.services.servicetypes.MailActionType; 31 import org.ejbca.ui.web.admin.services.servicetypes.NoActionType; 32 import org.ejbca.ui.web.admin.services.servicetypes.PeriodicalIntervalType; 33 import org.ejbca.ui.web.admin.services.servicetypes.ServiceType; 34 import org.ejbca.ui.web.admin.services.servicetypes.WorkerType; 35 36 46 public class ServiceTypeManager implements java.io.Serializable { 47 48 57 private static final long serialVersionUID = -7328709803784066077L; 58 59 private static Logger log = Logger.getLogger(ServiceTypeManager.class); 60 61 private static HashMap availableTypesByName = new HashMap (); 63 private static HashMap availableTypesByClassPath = new HashMap (); 64 private static ArrayList workerTypes = new ArrayList (); 65 66 67 private HashMap localAvailableTypesByName; 68 private HashMap localAvailableTypesByClassPath; 69 private ArrayList localWorkerTypes; 70 71 static{ 72 ServiceTypeManager.registerServiceType(new CustomIntervalType()); 73 ServiceTypeManager.registerServiceType(new PeriodicalIntervalType()); 74 ServiceTypeManager.registerServiceType(new CustomActionType()); 75 ServiceTypeManager.registerServiceType(new NoActionType()); 76 ServiceTypeManager.registerServiceType(new MailActionType()); 77 ServiceTypeManager.registerServiceType(new CustomWorkerType()); 78 ServiceTypeManager.registerServiceType(new CRLUpdateWorkerType()); 79 ServiceTypeManager.registerServiceType(new CertificateExpirationNotifierWorkerType()); 80 } 81 82 83 84 public ServiceTypeManager(){ 85 try{ 87 ByteArrayOutputStream baos = new ByteArrayOutputStream (); 88 ObjectOutputStream oos = new ObjectOutputStream (baos); 89 oos.writeObject(availableTypesByName); 90 oos.writeObject(availableTypesByClassPath); 91 oos.writeObject(workerTypes); 92 ByteArrayInputStream bais = new ByteArrayInputStream (baos.toByteArray()); 93 ObjectInputStream ois = new ObjectInputStream (bais); 94 localAvailableTypesByName = (HashMap ) ois.readObject(); 95 localAvailableTypesByClassPath = (HashMap ) ois.readObject(); 96 localWorkerTypes = (ArrayList ) ois.readObject(); 97 }catch(IOException e){ 98 log.error(e); 99 } catch (ClassNotFoundException e) { 100 log.error(e); 101 } 102 103 104 } 105 106 111 public static void registerServiceType(ServiceType serviceType){ 112 availableTypesByName.put(serviceType.getName(), serviceType); 113 if(!serviceType.isCustom()){ 114 availableTypesByClassPath.put(serviceType.getClassPath(), serviceType); 115 } 116 if(serviceType instanceof WorkerType){ 117 workerTypes.add(serviceType); 118 } 119 120 } 121 122 123 126 public ServiceType getServiceTypeByName(String name){ 127 return (ServiceType) localAvailableTypesByName.get(name); 128 } 129 130 134 public ServiceType getServiceTypeByClassPath(String classPath){ 135 return (ServiceType) localAvailableTypesByClassPath.get(classPath); 136 } 137 138 141 public Collection getAvailableWorkerTypes(){ 142 return localWorkerTypes; 143 } 144 145 146 147 148 } 149 150 | Popular Tags |