1 31 32 package com.opencms.legacy; 33 34 import org.opencms.file.CmsFile; 35 import org.opencms.file.CmsObject; 36 import org.opencms.loader.CmsXmlPageLoader; 37 import org.opencms.main.CmsException; 38 import org.opencms.main.CmsLog; 39 import org.opencms.main.OpenCms; 40 import org.opencms.xml.page.CmsXmlPage; 41 import org.opencms.xml.page.CmsXmlPageFactory; 42 43 import com.opencms.template.*; 44 45 import java.util.Hashtable ; 46 import java.util.Locale ; 47 48 60 public class CmsXmlPageTemplate extends CmsDumpTemplate { 61 62 65 public CmsXmlPageTemplate() { 66 } 68 69 82 public byte[] getContent(CmsObject cms, String filename, String elementName, Hashtable parameters) throws CmsException { 83 if (CmsLog.getLog(this).isDebugEnabled()) { 84 CmsLog.getLog(this).debug("Loading contents of file " + filename); 85 } 86 87 byte[] s = null; 88 try { 89 CmsFile file = cms.readFile(filename); 90 CmsXmlPageLoader loader = (CmsXmlPageLoader)OpenCms.getResourceManager().getLoader(CmsXmlPageLoader.RESOURCE_LOADER_ID); 91 CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file); 93 String absolutePath = cms.getSitePath(file); 94 Locale locale = OpenCms.getLocaleManager().getBestMatchingLocale(cms.getRequestContext().getLocale(), OpenCms.getLocaleManager().getDefaultLocales(cms, absolutePath), page.getLocales()); 95 s = loader.dump(cms, file, elementName, locale, null, null); 96 } catch (java.lang.ClassCastException e) { 97 s = null; 98 throw new CmsLegacyException("[CmsXmlPageTemplate] " + filename + " is not a xml page"); 99 } catch (org.opencms.main.CmsException e) { 100 s = null; 101 throw new CmsLegacyException("[CmsXmlPageTemplate] Error while reading xml page " + filename + "\n" + e, e); 103 } catch (Exception e) { 104 s = null; 105 String errorMessage = "[CmsXmlPageTemplate] Error while loading xml page file " + filename + ": " + e; 106 if (CmsLog.getLog(this).isErrorEnabled()) { 107 CmsLog.getLog(this).error(errorMessage, e); 108 } 109 if (e instanceof CmsException) { 110 throw (CmsException)e; 111 } else { 112 throw new CmsLegacyException(errorMessage, CmsLegacyException.C_UNKNOWN_EXCEPTION); 113 } 114 } 115 return s; 116 } 117 118 124 public boolean isTemplateCacheSet() { 125 return false; 126 } 127 128 139 public boolean shouldReload(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 140 return true; 141 } 142 143 158 public CmsCacheDirectives getCacheDirectives(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 159 return new CmsCacheDirectives(false); 161 } 162 } 163 | Popular Tags |