Coverage Report - net.fckeditor.connector.impl.ContextConnector
 
Classes in this File Line Coverage Branch Coverage Complexity
ContextConnector
0%
0/11
0%
0/4
2
 
 1  
 /*
 2  
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 3  
  * Copyright (C) 2004-2010 Frederico Caldeira Knabben
 4  
  * 
 5  
  * == BEGIN LICENSE ==
 6  
  * 
 7  
  * Licensed under the terms of any of the following licenses at your
 8  
  * choice:
 9  
  * 
 10  
  *  - GNU General Public License Version 2 or later (the "GPL")
 11  
  *    http://www.gnu.org/licenses/gpl.html
 12  
  * 
 13  
  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 14  
  *    http://www.gnu.org/licenses/lgpl.html
 15  
  * 
 16  
  *  - Mozilla Public License Version 1.1 or later (the "MPL")
 17  
  *    http://www.mozilla.org/MPL/MPL-1.1.html
 18  
  * 
 19  
  * == END LICENSE ==
 20  
  */
 21  
 package net.fckeditor.connector.impl;
 22  
 
 23  
 import javax.servlet.ServletContext;
 24  
 
 25  
 import net.fckeditor.handlers.PropertiesLoader;
 26  
 import net.fckeditor.requestcycle.impl.ContextPathBuilder;
 27  
 
 28  
 import org.slf4j.Logger;
 29  
 import org.slf4j.LoggerFactory;
 30  
 
 31  
 /**
 32  
  * Context filesystem backend connector. The file access will be restricted to
 33  
  * the real context root of the currently deployed webapp.
 34  
  * <p>
 35  
  * Though, this connector has some drawbacks:
 36  
  * <ul>
 37  
  * <li>Stored files and folders will be gone if the context is undeployed,
 38  
  * unless you have saved them before.</li>
 39  
  * <li>Some servers are unable to write to the real context root (like
 40  
  * WebSphere), see {@link #init(ServletContext)} for more details.</li>
 41  
  * <li>Some containers (like Jetty) unpack the war file to a different directory
 42  
  * at server start which means that files are gone in temp.</li>
 43  
  * </ul>
 44  
  * </p>
 45  
  * Use the {@link ContextPathBuilder} in conjunction with this class.
 46  
  * 
 47  
  * @version $Id: ContextConnector.java 4785 2009-12-21 20:10:28Z mosipov $
 48  
  */
 49  0
 public class ContextConnector extends AbstractLocalFileSystemConnector {
 50  
         
 51  0
         private final Logger logger = LoggerFactory.getLogger(ContextConnector.class);
 52  
 
 53  
         /**
 54  
          * {@inheritDoc}
 55  
          * This method will prepare the connector for further usage, additionally it
 56  
          * will check if the aforementioned drawback exists. It will try to resolve
 57  
          * the default {@link PropertiesLoader#getUserFilesPath() UserFilesPath}
 58  
          * with
 59  
          * <code><a href="http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath(java.lang.String)"
 60  
          * target="_blank">ServletContext.getRealPath(String)</a></code> against the
 61  
          * local filesystem (real path). If it fails, it will emit helpful log
 62  
          * messages and will throw an exception too.
 63  
          */
 64  
         public void init(final ServletContext servletContext) throws Exception {
 65  0
                 this.servletContext = servletContext;
 66  0
                 String defaultAbsolutePath = getRealUserFilesAbsolutePath(PropertiesLoader
 67  
                                 .getUserFilesPath());
 68  
 
 69  0
                 if (defaultAbsolutePath == null) {
 70  0
                         logger.error("The context root cannot be resolved against the local filesystem");
 71  0
                         logger.info("Your servlet container/application server does not expand deployed war files");
 72  0
                         logger.debug("Use another Connector implementation (e.g. LocalConnector) and consult http://www.fckeditor.net/forums/viewtopic.php?f=6&t=11568");
 73  0
                         throw new NullPointerException(
 74  
                                         "The real context root cannot be resolved against the local filesystem");
 75  
                 }
 76  0
         }
 77  
 
 78  
         /**
 79  
          * Resolves the userfiles absolute path against the current context real
 80  
          * path.
 81  
          */
 82  
         @Override
 83  
         protected String getRealUserFilesAbsolutePath(String userFilesAbsolutePath) {
 84  0
                 return servletContext.getRealPath(userFilesAbsolutePath);
 85  
         }
 86  
 
 87  
 }