| 1 21 22 package org.opensubsystems.core.www; 23 24 import java.util.Iterator ; 25 import java.util.Map ; 26 import java.util.logging.Level ; 27 import java.util.logging.Logger ; 28 29 import org.apache.commons.collections.map.LinkedMap; 30 import org.opensubsystems.core.error.OSSException; 31 import org.opensubsystems.core.util.ClassFactory; 32 import org.opensubsystems.core.util.GlobalConstants; 33 import org.opensubsystems.core.util.Log; 34 35 44 public class WebModuleDefinitionManager 45 { 46 48 51 private static final String IMPL_LOCK = "IMPL_LOCK"; 52 53 55 58 private static Logger s_logger = Log.getInstance(WebModuleDefinitionManager.class); 59 60 63 private static WebModuleDefinitionManager s_defaultInstance; 64 65 67 71 protected Map m_mapWebModules; 72 73 75 78 public WebModuleDefinitionManager() 79 { 80 m_mapWebModules = new LinkedMap(); 82 } 83 84 86 94 public static WebModuleDefinitionManager getInstance( 95 ) throws OSSException 96 { 97 if (s_defaultInstance == null) 98 { 99 synchronized (IMPL_LOCK) 100 { 101 if (s_defaultInstance == null) 102 { 103 setInstance((WebModuleDefinitionManager) 104 ClassFactory.getInstance().createInstance( 105 WebModuleDefinitionManager.class, 106 WebModuleDefinitionManager.class)); 107 } 108 } 109 110 } 111 return s_defaultInstance; 112 } 113 114 121 public static void setInstance( 122 WebModuleDefinitionManager defaultInstance 123 ) 124 { 125 if (GlobalConstants.ERROR_CHECKING) 126 { 127 assert defaultInstance != null : "Default instance cannot be null"; 128 } 129 130 synchronized (IMPL_LOCK) 131 { 132 s_defaultInstance = defaultInstance; 133 s_logger.fine("Default module definition manager is " 134 + s_defaultInstance.getClass().getName()); 135 } 136 } 137 138 142 public Map getWebModuleDefinitions() 143 { 144 return m_mapWebModules; 145 } 146 147 152 public void add( 153 WebModule moduleDefinition 154 ) 155 { 156 if (GlobalConstants.ERROR_CHECKING) 157 { 158 assert moduleDefinition != null : "Cannot add null definition."; 159 } 160 161 WebModule existingDef; 162 163 existingDef = (WebModule)m_mapWebModules.get( 164 moduleDefinition.getName()); 165 if (existingDef == null) 166 { 167 m_mapWebModules.put(moduleDefinition.getName(), moduleDefinition); 168 s_logger.log(Level.FINEST, "Web module definition for " 169 + moduleDefinition.getName() 170 + " added to the module definition manager."); 171 } 172 } 173 174 180 public String getModuleNameFromURL( 181 String strURL 182 ) 183 { 184 String strModuleNameReturn = null; 185 186 if ((m_mapWebModules != null) && (!m_mapWebModules.isEmpty())) 187 { 188 Iterator itDefinitions; 189 WebModule moduleDefinition; 190 191 for (itDefinitions = m_mapWebModules.values().iterator(); 192 itDefinitions.hasNext();) 193 { 194 moduleDefinition = (WebModule)itDefinitions.next(); 195 if (strURL.startsWith(String.valueOf(WebCommonConstants.URL_SEPARATOR))) 197 { 198 strURL = strURL.substring(WebCommonConstants.URL_SEPARATOR.length()); 199 } 200 201 if (strURL.startsWith(moduleDefinition.getURL())) 204 { 205 strModuleNameReturn = moduleDefinition.getName(); 207 } 208 } 209 } 210 211 return strModuleNameReturn; 212 } 213 } 214 | Popular Tags |