1 31 32 package org.opencms.loader; 33 34 import org.opencms.file.CmsObject; 35 import org.opencms.file.CmsResource; 36 import org.opencms.i18n.CmsLocaleManager; 37 import org.opencms.main.CmsException; 38 import org.opencms.main.CmsLog; 39 import org.opencms.main.OpenCms; 40 import org.opencms.xml.I_CmsXmlDocument; 41 42 import java.io.IOException ; 43 import java.util.List ; 44 import java.util.Locale ; 45 import java.util.Map ; 46 47 import javax.servlet.ServletException ; 48 import javax.servlet.ServletRequest ; 49 import javax.servlet.ServletResponse ; 50 import javax.servlet.http.HttpServletRequest ; 51 import javax.servlet.http.HttpServletResponse ; 52 53 62 abstract class A_CmsXmlDocumentLoader implements I_CmsResourceLoader, I_CmsResourceStringDumpLoader { 63 64 67 public void addConfigurationParameter(String paramName, String paramValue) { 68 69 } 71 72 75 public void destroy() { 76 77 } 79 80 83 public byte[] dump( 84 CmsObject cms, 85 CmsResource resource, 86 String element, 87 Locale selectedLocale, 88 HttpServletRequest req, 89 HttpServletResponse res) throws CmsException, IOException { 90 91 if ((element == null) || (selectedLocale == null)) { 92 throw new CmsLoaderException(Messages.get().container( 94 Messages.ERR_LOADER_XML_NEED_ELEMENT_LOCALE_1, 95 resource.getRootPath())); 96 } 97 98 String value = dumpAsString(cms, resource, element, selectedLocale, req, res); 100 101 if (value != null) { 102 I_CmsXmlDocument doc = unmarshalXmlDocument(cms, resource, req); 104 return value.getBytes(doc.getEncoding()); 106 } 107 return new byte[0]; 108 } 109 110 113 public String dumpAsString( 114 CmsObject cms, 115 CmsResource resource, 116 String element, 117 Locale selectedLocale, 118 ServletRequest req, 119 ServletResponse res) throws CmsException { 120 121 I_CmsXmlDocument doc = unmarshalXmlDocument(cms, resource, req); 123 124 List locales = doc.getLocales(element); 126 if (locales.isEmpty()) { 127 return null; 129 } 130 Locale locale = OpenCms.getLocaleManager().getBestMatchingLocale( 132 selectedLocale, 133 OpenCms.getLocaleManager().getDefaultLocales(cms, cms.getSitePath(resource)), 134 locales); 135 if (locale == null) { 136 throw new CmsLoaderException(Messages.get().container( 138 Messages.ERR_LOADER_UNKNOWN_LOCALE_5, 139 new Object [] { 140 resource.getRootPath(), 141 element, 142 selectedLocale, 143 CmsLocaleManager.getLocaleNames(locales), 144 CmsLocaleManager.getLocaleNames(OpenCms.getLocaleManager().getDefaultLocales( 145 cms, 146 cms.getSitePath(resource)))})); 147 } 148 return doc.getStringValue(cms, element, locale); 150 } 151 152 155 public byte[] export(CmsObject cms, CmsResource resource, HttpServletRequest req, HttpServletResponse res) 156 throws ServletException , IOException , CmsException { 157 158 CmsTemplateLoaderFacade loaderFacade = OpenCms.getResourceManager().getTemplateLoaderFacade( 159 cms, 160 resource, 161 getTemplatePropertyDefinition()); 162 return loaderFacade.getLoader().export(cms, loaderFacade.getLoaderStartResource(), req, res); 163 } 164 165 170 public Map getConfiguration() { 171 172 return null; 173 } 174 175 178 public void initConfiguration() { 179 180 if (CmsLog.INIT.isInfoEnabled()) { 181 CmsLog.INIT.info(Messages.get().getBundle().key( 182 Messages.INIT_LOADER_INITIALIZED_1, 183 this.getClass().getName())); 184 } 185 } 186 187 190 public boolean isStaticExportEnabled() { 191 192 return true; 193 } 194 195 198 public boolean isStaticExportProcessable() { 199 200 return true; 201 } 202 203 206 public boolean isUsableForTemplates() { 207 208 return false; 209 } 210 211 214 public boolean isUsingUriWhenLoadingTemplate() { 215 216 return false; 217 } 218 219 222 public void load(CmsObject cms, CmsResource resource, HttpServletRequest req, HttpServletResponse res) 223 throws ServletException , IOException , CmsException { 224 225 unmarshalXmlDocument(cms, resource, req); 227 228 CmsTemplateLoaderFacade loaderFacade = OpenCms.getResourceManager().getTemplateLoaderFacade( 229 cms, 230 resource, 231 getTemplatePropertyDefinition()); 232 loaderFacade.getLoader().load(cms, loaderFacade.getLoaderStartResource(), req, res); 233 } 234 235 238 public void service(CmsObject cms, CmsResource resource, ServletRequest req, ServletResponse res) 239 throws IOException , CmsException { 240 241 String element = req.getParameter(I_CmsResourceLoader.PARAMETER_ELEMENT); 243 244 String value = dumpAsString(cms, resource, element, cms.getRequestContext().getLocale(), req, res); 246 247 if (value != null) { 248 I_CmsXmlDocument doc = unmarshalXmlDocument(cms, resource, req); 250 byte[] result = value.getBytes(doc.getEncoding()); 252 res.getOutputStream().write(result); 253 } 254 } 255 256 261 protected abstract String getTemplatePropertyDefinition(); 262 263 274 protected abstract I_CmsXmlDocument unmarshalXmlDocument(CmsObject cms, CmsResource resource, ServletRequest req) 275 throws CmsException; 276 }
| Popular Tags
|