James Moger
2013-11-21 7bf6e183ff8abd0c35eeb29f399da12389562ecb
src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java
@@ -25,26 +25,28 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.GitBlit;
import com.gitblit.IStoredSettings;
import com.gitblit.Keys;
/**
 * Simple subclass of mixed parameter url coding strategy that works around the
 * encoded forward-slash issue that is present in some servlet containers.
 *
 *
 * https://issues.apache.org/jira/browse/WICKET-1303
 * http://tomcat.apache.org/security-6.html
 *
 *
 * @author James Moger
 *
 *
 */
public class GitblitParamUrlCodingStrategy extends MixedParamUrlCodingStrategy {
   private Logger logger = LoggerFactory.getLogger(GitblitParamUrlCodingStrategy.class);
   private IStoredSettings settings;
   /**
    * Construct.
    *
    *
    * @param <C>
    * @param mountPath
    *            mount path (not empty)
@@ -53,20 +55,25 @@
    * @param parameterNames
    *            the parameter names (not null)
    */
   public <C extends Page> GitblitParamUrlCodingStrategy(String mountPath,
   public <C extends Page> GitblitParamUrlCodingStrategy(
         IStoredSettings settings,
         String mountPath,
         Class<C> bookmarkablePageClass, String[] parameterNames) {
      super(mountPath, bookmarkablePageClass, parameterNames);
      this.settings = settings;
   }
   /**
    * Url encodes a string that is mean for a URL path (e.g., between slashes)
    *
    *
    * @param string
    *            string to be encoded
    * @return encoded string
    */
   @Override
   protected String urlEncodePathComponent(String string) {
      char altChar = GitBlit.getChar(Keys.web.forwardSlashCharacter, '/');
      char altChar = settings.getChar(Keys.web.forwardSlashCharacter, '/');
      if (altChar != '/') {
         string = string.replace('/', altChar);
      }
@@ -76,12 +83,13 @@
   /**
    * Returns a decoded value of the given value (taken from a URL path
    * section)
    *
    *
    * @param value
    * @return Decodes the value
    */
   @Override
   protected String urlDecodePathComponent(String value) {
      char altChar = GitBlit.getChar(Keys.web.forwardSlashCharacter, '/');
      char altChar = settings.getChar(Keys.web.forwardSlashCharacter, '/');
      if (altChar != '/') {
         value = value.replace(altChar, '/');
      }
@@ -90,7 +98,7 @@
   /**
    * Gets the decoded request target.
    *
    *
    * @param requestParameters
    *            the request parameters
    * @return the decoded request target