01: /*
02: * Copyright (c) 2001-2007, Jean Tessier
03: * All rights reserved.
04: *
05: * Redistribution and use in source and binary forms, with or without
06: * modification, are permitted provided that the following conditions
07: * are met:
08: *
09: * * Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: *
12: * * Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: *
16: * * Neither the name of Jean Tessier nor the names of his contributors
17: * may be used to endorse or promote products derived from this software
18: * without specific prior written permission.
19: *
20: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
24: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31: */
32:
33: package com.jeantessier.classreader;
34:
35: import java.io.*;
36:
37: import org.apache.log4j.*;
38:
39: public class PermissiveDispatcher implements ClassfileLoaderDispatcher {
40: public Action dispatch(String filename) {
41: Action result;
42:
43: if (filename.endsWith(".zip")) {
44: result = Action.ZIP;
45: Logger.getLogger(getClass()).debug(
46: "Dispatching \"" + filename + "\": ACTION_ZIP");
47: } else if (filename.endsWith(".jar")) {
48: result = Action.JAR;
49: Logger.getLogger(getClass()).debug(
50: "Dispatching \"" + filename + "\": ACTION_JAR");
51: } else if (filename.endsWith(".class")) {
52: result = Action.CLASS;
53: Logger.getLogger(getClass()).debug(
54: "Dispatching \"" + filename + "\": ACTION_CLASS");
55: } else if (new File(filename).isDirectory()) {
56: result = Action.DIRECTORY;
57: Logger.getLogger(getClass()).debug(
58: "Dispatching \"" + filename
59: + "\": ACTION_DIRECTORY");
60: } else if (filename.endsWith("/") || filename.endsWith(".bat")
61: || filename.endsWith(".css")
62: || filename.endsWith(".dtd")
63: || filename.endsWith(".gif")
64: || filename.endsWith(".htm")
65: || filename.endsWith(".html")
66: || filename.endsWith(".java")
67: || filename.endsWith(".jpeg")
68: || filename.endsWith(".jpg")
69: || filename.endsWith(".js")
70: || filename.endsWith(".jsp")
71: || filename.endsWith("MANIFEST.MF")
72: || filename.endsWith(".properties")
73: || filename.endsWith(".ps")
74: || filename.endsWith(".txt")
75: || filename.endsWith(".xml")
76: || filename.endsWith(".xsl")) {
77: result = Action.IGNORE;
78: Logger.getLogger(getClass()).debug(
79: "Dispatching \"" + filename + "\": ACTION_IGNORE");
80: } else {
81: result = Action.ZIP;
82: Logger.getLogger(getClass()).debug(
83: "Dispatching \"" + filename + "\": ACTION_ZIP");
84: }
85:
86: return result;
87: }
88: }
|