1 46 package org.mr.core.persistent; 47 48 import java.util.HashMap ; 49 import java.util.WeakHashMap ; 50 51 import org.apache.commons.logging.Log; 52 import org.apache.commons.logging.LogFactory; 53 import org.mr.MantaAgent; 54 import org.mr.core.configuration.ConfigManager; 55 import org.mr.core.persistent.db.DBPersistencyManager; 56 import org.mr.core.persistent.db.DBPersistencyProxy; 57 import org.mr.core.persistent.file.*; 58 59 64 public class PersistentManagerFactory { 65 public static String backend = null; 66 public static WeakHashMap fileManagers = new WeakHashMap (); 67 68 74 public static synchronized PersistentManager getPersistentManager(String persistentName) { 75 synchronized (PersistentManagerFactory.class) { 76 if (backend == null) { 77 ConfigManager config = MantaAgent.getInstance().getSingletonRepository().getConfigManager(); 78 backend = 79 config.getStringProperty("persistency.backend", "file"); 80 } 81 } 82 if (backend.equals("db")) { 83 return new DBPersistencyManager(persistentName); 84 } else { 85 MantaFileManager result = (MantaFileManager) fileManagers.get(persistentName); 87 if (result == null) { 88 result = new MantaFileManager(new String (persistentName)); 89 fileManagers.put(persistentName, result); 90 } 91 if (!backend.equals("file")) { 92 Log log = LogFactory.getLog("PersistentManagerFactory"); 93 if (log.isWarnEnabled()) { 94 log.warn("Unknown backend: " + backend + ". Using file persistency by default."); 95 } 96 } 97 return result; 98 } 99 } 100 101 private static PersistentManager pm = null; 103 104 public static String [] getAllServices() { 105 106 if (pm == null) { 107 synchronized (PersistentManagerFactory.class) { 108 if (pm == null) { 109 if (backend == null) { 110 ConfigManager config = MantaAgent.getInstance().getSingletonRepository().getConfigManager(); 111 backend = config.getStringProperty("persistency.backend", "file"); 112 } 113 114 if (backend.equals("db")) { 115 pm = new DBPersistencyManager(); 116 } else { 117 pm = new MantaFileManager(); 118 if (!backend.equals("file")) { 119 Log log = LogFactory.getLog("PersistentManagerFactory"); 120 if (log.isWarnEnabled()) { 121 log.warn("Unknown backend: " + backend + ". Using file persistency by default."); 122 } 123 } 124 125 126 } 127 } 128 } 129 } 130 String services[] = pm.getAllServices(); 131 return services; 132 } 133 } 134 | Popular Tags |