| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| ContextConnector |
|
| 2.0;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 | } |