You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/09/06 16:18:59 UTC
svn commit: r1520575 - in /tomcat/trunk:
java/org/apache/catalina/webresources/
test/org/apache/catalina/webresources/ webapps/docs/config/
Author: markt
Date: Fri Sep 6 14:18:59 2013
New Revision: 1520575
URL: http://svn.apache.org/r1520575
Log:
Fix some issues with the new Resources implementation reported by Dan Mikusa:
- The zero-arg constructors for WebResourceSet implementations were either missing or always failed meaning that they could not be specified in a context.xml file as the digester was unable to create them
- The internalPath attribute was not configurable
Modified:
tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java
tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java
tomcat/trunk/java/org/apache/catalina/webresources/DirResourceSet.java
tomcat/trunk/java/org/apache/catalina/webresources/FileResourceSet.java
tomcat/trunk/java/org/apache/catalina/webresources/JarResourceSet.java
tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSet.java
tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java
tomcat/trunk/test/org/apache/catalina/webresources/TestDirResourceSet.java
tomcat/trunk/test/org/apache/catalina/webresources/TestFileResourceSet.java
tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSet.java
tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSetInternal.java
tomcat/trunk/webapps/docs/config/resources.xml
Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java Fri Sep 6 14:18:59 2013
@@ -26,13 +26,12 @@ public abstract class AbstractFileResour
protected static final String[] EMPTY_STRING_ARRAY = new String[0];
- protected final String internalPath;
protected File fileBase;
protected String absoluteBase;
protected String canonicalBase;
protected AbstractFileResourceSet(String internalPath) {
- this.internalPath = checkInternalPath(internalPath);
+ setInternalPath(internalPath);
}
protected File file(String name, boolean mustExist) {
@@ -104,7 +103,7 @@ public abstract class AbstractFileResour
//-------------------------------------------------------- Lifecycle methods
@Override
protected void initInternal() throws LifecycleException {
- fileBase = new File(getBase(), internalPath);
+ fileBase = new File(getBase(), getInternalPath());
checkType(fileBase);
String absolutePath = fileBase.getAbsolutePath();
Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java Fri Sep 6 14:18:59 2013
@@ -28,8 +28,10 @@ public abstract class AbstractResourceSe
private WebResourceRoot root;
private String base;
+ private String internalPath;
private String webAppMount;
+
protected static final StringManager sm =
StringManager.getManager(Constants.Package);
@@ -40,15 +42,6 @@ public abstract class AbstractResourceSe
}
}
- protected final String checkInternalPath(String internalPath) {
- checkPath(internalPath);
- // Optimise internal processing
- if (internalPath.equals("/")) {
- return "";
- }
- return internalPath;
- }
-
@Override
public final void setRoot(WebResourceRoot root) {
this.root = root;
@@ -58,6 +51,21 @@ public abstract class AbstractResourceSe
return root;
}
+
+ public String getInternalPath() {
+ return internalPath;
+ }
+
+ public void setInternalPath(String internalPath) {
+ checkPath(internalPath);
+ // Optimise internal processing
+ if (internalPath.equals("/")) {
+ this.internalPath = "";
+ } else {
+ this.internalPath = internalPath;
+ }
+ }
+
public final void setWebAppMount(String webAppMount) {
checkPath(webAppMount);
// Optimise internal processing
Modified: tomcat/trunk/java/org/apache/catalina/webresources/DirResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/DirResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/DirResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/DirResourceSet.java Fri Sep 6 14:18:59 2013
@@ -38,7 +38,7 @@ public class DirResourceSet extends Abst
* A no argument constructor is required for this to work with the digester.
*/
public DirResourceSet() {
- super("");
+ super("/");
}
/**
Modified: tomcat/trunk/java/org/apache/catalina/webresources/FileResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/FileResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/FileResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/FileResourceSet.java Fri Sep 6 14:18:59 2013
@@ -35,7 +35,7 @@ public class FileResourceSet extends Abs
* A no argument constructor is required for this to work with the digester.
*/
public FileResourceSet() {
- super("");
+ super("/");
}
/**
Modified: tomcat/trunk/java/org/apache/catalina/webresources/JarResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/JarResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/JarResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/JarResourceSet.java Fri Sep 6 14:18:59 2013
@@ -40,7 +40,12 @@ public class JarResourceSet extends Abst
private HashMap<String,JarEntry> jarFileEntries = new HashMap<>();
private String baseUrl;
- private final String internalPath;
+
+ /**
+ * A no argument constructor is required for this to work with the digester.
+ */
+ public JarResourceSet() {
+ }
/**
* Creates a new {@link org.apache.catalina.WebResourceSet} based on a JAR
@@ -63,8 +68,8 @@ public class JarResourceSet extends Abst
String internalPath) throws IllegalArgumentException {
setRoot(root);
setBase(base);
+ setInternalPath(internalPath);
setWebAppMount(webAppMount);
- this.internalPath = checkInternalPath(internalPath);
if (getRoot().getState().isAvailable()) {
try {
@@ -100,7 +105,7 @@ public class JarResourceSet extends Abst
// an empty resource for requests outside of the mount point.
if (path.startsWith(webAppMount)) {
- String pathInJar = internalPath + path.substring(
+ String pathInJar = getInternalPath() + path.substring(
webAppMount.length(), path.length());
// Always strip off the leading '/' to get the JAR path
if (pathInJar.charAt(0) == '/') {
@@ -125,7 +130,7 @@ public class JarResourceSet extends Abst
return new EmptyResource(root, path);
} else {
return new JarResource(root, getBase(), baseUrl, jarEntry,
- internalPath, path);
+ getInternalPath(), path);
}
}
} else {
@@ -141,7 +146,7 @@ public class JarResourceSet extends Abst
ArrayList<String> result = new ArrayList<>();
if (path.startsWith(webAppMount)) {
String pathInJar =
- internalPath + path.substring(webAppMount.length());
+ getInternalPath() + path.substring(webAppMount.length());
// Always strip off the leading '/' to get the JAR path
if (pathInJar.charAt(0) == '/') {
pathInJar = pathInJar.substring(1);
@@ -193,7 +198,7 @@ public class JarResourceSet extends Abst
ResourceSet<String> result = new ResourceSet<>();
if (path.startsWith(webAppMount)) {
String pathInJar =
- internalPath + path.substring(webAppMount.length());
+ getInternalPath() + path.substring(webAppMount.length());
// Always strip off the leading '/' to get the JAR path and make
// sure it ends in '/'
if (pathInJar.charAt(pathInJar.length() - 1) != '/') {
@@ -212,7 +217,7 @@ public class JarResourceSet extends Abst
if (nextSlash == -1 || nextSlash == name.length() - 1) {
if (name.startsWith(pathInJar)) {
result.add(webAppMount + '/' +
- name.substring(internalPath.length()));
+ name.substring(getInternalPath().length()));
}
}
}
Modified: tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSet.java (original)
+++ tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSet.java Fri Sep 6 14:18:59 2013
@@ -351,4 +351,8 @@ public abstract class AbstractTestResour
getMount() + "/new-test", is, false));
}
}
+
+ // ------------------------------------------------------------ constructors
+
+ public abstract void testNoArgConstructor();
}
Modified: tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java (original)
+++ tomcat/trunk/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java Fri Sep 6 14:18:59 2013
@@ -67,4 +67,9 @@ public abstract class AbstractTestResour
InputStream is = new ByteArrayInputStream("test".getBytes());
Assert.assertFalse(resourceRoot.write("/", is, false));
}
+
+ @Override
+ public void testNoArgConstructor() {
+ // NO-OP
+ }
}
Modified: tomcat/trunk/test/org/apache/catalina/webresources/TestDirResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/webresources/TestDirResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/webresources/TestDirResourceSet.java (original)
+++ tomcat/trunk/test/org/apache/catalina/webresources/TestDirResourceSet.java Fri Sep 6 14:18:59 2013
@@ -18,6 +18,8 @@ package org.apache.catalina.webresources
import java.io.File;
+import org.junit.Test;
+
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.WebResourceSet;
@@ -43,4 +45,11 @@ public class TestDirResourceSet extends
public String getBaseDir() {
return "test/webresources/dir1";
}
+
+ @Override
+ @Test
+ public void testNoArgConstructor() {
+ @SuppressWarnings("unused")
+ Object obj = new DirResourceSet();
+ }
}
Modified: tomcat/trunk/test/org/apache/catalina/webresources/TestFileResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/webresources/TestFileResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/webresources/TestFileResourceSet.java (original)
+++ tomcat/trunk/test/org/apache/catalina/webresources/TestFileResourceSet.java Fri Sep 6 14:18:59 2013
@@ -18,6 +18,8 @@ package org.apache.catalina.webresources
import java.io.File;
+import org.junit.Test;
+
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.WebResourceSet;
@@ -60,4 +62,11 @@ public class TestFileResourceSet extends
public String getBaseDir() {
return "test/webresources/dir2";
}
+
+ @Override
+ @Test
+ public void testNoArgConstructor() {
+ @SuppressWarnings("unused")
+ Object obj = new FileResourceSet();
+ }
}
Modified: tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSet.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSet.java (original)
+++ tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSet.java Fri Sep 6 14:18:59 2013
@@ -18,6 +18,8 @@ package org.apache.catalina.webresources
import java.io.File;
+import org.junit.Test;
+
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.WebResourceSet;
@@ -42,4 +44,11 @@ public class TestJarResourceSet extends
public String getBaseDir() {
return "test/webresources";
}
+
+ @Override
+ @Test
+ public void testNoArgConstructor() {
+ @SuppressWarnings("unused")
+ Object obj = new JarResourceSet();
+ }
}
Modified: tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSetInternal.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSetInternal.java?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSetInternal.java (original)
+++ tomcat/trunk/test/org/apache/catalina/webresources/TestJarResourceSetInternal.java Fri Sep 6 14:18:59 2013
@@ -18,6 +18,8 @@ package org.apache.catalina.webresources
import java.io.File;
+import org.junit.Test;
+
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.WebResourceSet;
@@ -42,4 +44,11 @@ public class TestJarResourceSetInternal
public String getBaseDir() {
return "test/webresources";
}
+
+ @Override
+ @Test
+ public void testNoArgConstructor() {
+ @SuppressWarnings("unused")
+ Object obj = new JarResourceSet();
+ }
}
Modified: tomcat/trunk/webapps/docs/config/resources.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/resources.xml?rev=1520575&r1=1520574&r2=1520575&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/resources.xml (original)
+++ tomcat/trunk/webapps/docs/config/resources.xml Fri Sep 6 14:18:59 2013
@@ -132,8 +132,8 @@
the resources are not located at the root of the JAR as is the case with
resource JARs. This attribute is required by the
<code>org.apache.catalina.WebResourceSet</code> implementations provided
- by Tomcat. Custom implementations may not require it. If not specified,
- the default value of the empty string will be used.</p>
+ by Tomcat and must start with '/'. Custom implementations may not require
+ it. If not specified, the default value '/' will be used.</p>
</attribute>
<attribute name="webAppMount" required="false">
@@ -142,7 +142,7 @@
<code>org.apache.catalina.WebResourceSet</code> implementations provided
by Tomcat, this attribute is required and must start with '/'. Custom
implementations may not require it. If not specified, the default value of
- "/" will be used.</p>
+ '/' will be used.</p>
</attribute>
</attributes>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org