1 31 32 package org.opencms.file; 33 34 import org.opencms.main.CmsException; 35 import org.opencms.main.CmsResourceInitException; 36 import org.opencms.main.I_CmsResourceInit; 37 import org.opencms.main.OpenCms; 38 39 import javax.servlet.ServletRequest ; 40 import javax.servlet.http.HttpServletRequest ; 41 import javax.servlet.http.HttpServletResponse ; 42 43 52 public class CmsBackupResourceHandler implements I_CmsResourceInit { 53 54 55 public static final String ATTRIBUTE_NAME = "org.opencms.file.CmsBackupResourceHandler"; 56 57 58 public static final String BACKUP_HANDLER = "/system/shared/showversion"; 59 60 61 public static final String PARAM_VERSIONID = "versionid"; 62 63 70 public static boolean isBackupRequest(ServletRequest req) { 71 72 return null != req.getAttribute(ATTRIBUTE_NAME); 73 } 74 75 79 public CmsResource initResource(CmsResource resource, CmsObject cms, HttpServletRequest req, HttpServletResponse res) 80 throws CmsResourceInitException { 81 82 if (req != null) { 86 String versionId = req.getParameter(PARAM_VERSIONID); 87 88 if (resource == null && versionId != null) { 90 91 String uri = cms.getRequestContext().getUri(); 92 if (uri.startsWith(BACKUP_HANDLER)) { 94 if (cms.existsResource(BACKUP_HANDLER)) { 97 try { 98 uri = uri.substring(BACKUP_HANDLER.length(), uri.length()); 100 int id = new Integer (versionId).intValue(); 101 cms.getRequestContext().saveSiteRoot(); 103 cms.getRequestContext().setSiteRoot("/"); 104 resource = cms.readBackupFile(uri, id); 105 req.setAttribute(ATTRIBUTE_NAME, Boolean.TRUE); 107 } catch (CmsException e) { 108 if (OpenCms.getLog(this).isErrorEnabled()) { 109 OpenCms.getLog(this).error( 110 Messages.get().container(Messages.ERR_BACKUPRESOURCE_2, uri, versionId)); 111 } 112 throw new CmsResourceInitException(Messages.get().container( 113 Messages.ERR_SHOWVERSION_2, 114 uri, 115 versionId), e); 116 } finally { 117 cms.getRequestContext().restoreSiteRoot(); 119 if (resource != null) { 120 cms.getRequestContext().setUri(cms.getSitePath(resource)); 122 } 123 } 124 } 125 } 126 } 127 } 128 return resource; 129 } 130 } | Popular Tags |