View | Details | Raw Unified | Return to bug 57647
Collapse All | Expand All

(-)a/java/org/apache/jasper/servlet/TldScanner.java (-2 / +2 lines)
Lines 277-283 public class TldScanner { Link Here
277
        }
277
        }
278
    }
278
    }
279
279
280
    private class TldScannerCallback implements JarScannerCallback {
280
    class TldScannerCallback implements JarScannerCallback {
281
        private boolean tldFound = false;
281
        private boolean tldFound = false;
282
        private boolean jarFound = false;
282
        private boolean jarFound = false;
283
283
Lines 381-387 public class TldScanner { Link Here
381
        }
381
        }
382
382
383
383
384
        private boolean scanFoundNoTLDs() {
384
        boolean scanFoundNoTLDs() {
385
            return jarFound && !tldFound;
385
            return jarFound && !tldFound;
386
        }
386
        }
387
    }
387
    }
(-)a/test/org/apache/jasper/servlet/TestTldScanner.java (+31 lines)
Lines 17-27 Link Here
17
package org.apache.jasper.servlet;
17
package org.apache.jasper.servlet;
18
18
19
import java.io.File;
19
import java.io.File;
20
import java.lang.reflect.Constructor;
21
import java.net.JarURLConnection;
22
import java.net.URL;
20
import java.util.HashMap;
23
import java.util.HashMap;
21
import java.util.List;
24
import java.util.List;
22
import java.util.Map;
25
import java.util.Map;
23
26
24
import org.junit.Assert;
27
import org.junit.Assert;
28
import org.junit.Ignore;
25
import org.junit.Test;
29
import org.junit.Test;
26
30
27
import org.apache.catalina.Context;
31
import org.apache.catalina.Context;
Lines 29-34 import org.apache.catalina.startup.Tomcat; Link Here
29
import org.apache.catalina.startup.TomcatBaseTest;
33
import org.apache.catalina.startup.TomcatBaseTest;
30
import org.apache.tomcat.util.buf.ByteChunk;
34
import org.apache.tomcat.util.buf.ByteChunk;
31
import org.apache.tomcat.util.scan.StandardJarScanner;
35
import org.apache.tomcat.util.scan.StandardJarScanner;
36
import org.easymock.EasyMock;
32
37
33
public class TestTldScanner extends TomcatBaseTest {
38
public class TestTldScanner extends TomcatBaseTest {
34
39
Lines 86-89 public class TestTldScanner extends TomcatBaseTest { Link Here
86
        Assert.assertTrue(result, result.indexOf("<p>" + expected + "</p>") > 0);
91
        Assert.assertTrue(result, result.indexOf("<p>" + expected + "</p>") > 0);
87
    }
92
    }
88
93
94
    @Ignore("Illustrates Bug 57647")
95
    @Test
96
    public void testBug57647() throws Exception {
97
        TldScanner scanner = EasyMock.createMock(TldScanner.class);
98
        Constructor<TldScanner.TldScannerCallback> constructor =
99
                TldScanner.TldScannerCallback.class.getDeclaredConstructor(TldScanner.class);
100
        constructor.setAccessible(true);
101
        TldScanner.TldScannerCallback callback = constructor.newInstance((TldScanner) scanner);
102
103
        File webappDir = new File("webapps/examples");
104
        Assert.assertFalse(callback.scanFoundNoTLDs());
105
        scan(callback, webappDir, "WEB-INF/lib/taglibs-standard-spec-1.2.3.jar");
106
        Assert.assertTrue(callback.scanFoundNoTLDs());
107
        scan(callback, webappDir, "WEB-INF/lib/taglibs-standard-impl-1.2.3.jar");
108
        Assert.assertTrue(callback.scanFoundNoTLDs());
109
    }
110
111
    private static void scan(TldScanner.TldScannerCallback callback, File webapp, String path)
112
            throws Exception {
113
        String fullPath = new File(webapp, path).toURI().toString();
114
        URL jarUrl = new URL("jar:" + fullPath + "!/");
115
        JarURLConnection connection = (JarURLConnection) jarUrl.openConnection();
116
        callback.scan(connection, path, true);
117
    }
118
89
}
119
}
120

Return to bug 57647