# HG changeset patch
# User robcast
# Date 1070898659 -3600
# Node ID 8125a068af80b2902c7fa4b41240a264ca717ee6
# Parent f921735dc57859b0261f807e2d0ab581dcd6aba6
Servlet version 1.18b5
- fix for config file names on non-unix systems
diff -r f921735dc578 -r 8125a068af80 client/digitallibrary/WEB-INF/lib/DigilibServlet.jar
Binary file client/digitallibrary/WEB-INF/lib/DigilibServlet.jar has changed
diff -r f921735dc578 -r 8125a068af80 servlet/src/digilib/servlet/DigilibConfiguration.java
--- a/servlet/src/digilib/servlet/DigilibConfiguration.java Wed Dec 03 18:52:26 2003 +0100
+++ b/servlet/src/digilib/servlet/DigilibConfiguration.java Mon Dec 08 16:50:59 2003 +0100
@@ -48,7 +48,7 @@
* denyImgFileName: image file to send if access is denied.
baseDirs:
* array of base directories in order of preference (prescaled versions first).
*
useAuth: use authentication information.
authConfPath:
- * authentication configuration file.
...
+ * authentication configuration file.
...
*
* @author casties
*
@@ -70,7 +70,7 @@
super(20);
// we start with a default logger config
BasicConfigurator.configure();
-
+
/*
* Definition of parameters and default values. System parameters that
* are not read from config file have a type 's'.
@@ -142,7 +142,7 @@
newParameter("log-config-file", "log4j-config.xml", null, 'f');
// maximum destination image size (0 means no limit)
newParameter("max-image-size", new Integer(0), null, 'f');
-
+
}
/**
@@ -171,8 +171,7 @@
}
String fn = c.getInitParameter("config-file");
if (fn == null) {
- fn =
- c.getServletContext().getRealPath("WEB-INF/digilib-config.xml");
+ fn = ServletOps.getConfigFile("digilib-config.xml", c);
if (fn == null) {
logger.fatal("readConfig: no param config-file");
throw new ServletException("ERROR: no digilib config file!");
@@ -227,25 +226,18 @@
*/
// set up logger
- String logConfPath = getAsString("log-config-file");
- if (!logConfPath.startsWith("/")) {
- // relative path -> use getRealPath to resolve in WEB-INF
- logConfPath =
- c.getServletContext().getRealPath("WEB-INF/" + logConfPath);
- }
+ String logConfPath =
+ ServletOps.getConfigFile(getAsString("log-config-file"), c);
DOMConfigurator.configure(logConfPath);
// directory cache
String[] bd = (String[]) getValue("basedir-list");
- int[] fcs = { FileOps.CLASS_IMAGE, FileOps.CLASS_TEXT, FileOps.CLASS_SVG };
+ int[] fcs =
+ { FileOps.CLASS_IMAGE, FileOps.CLASS_TEXT, FileOps.CLASS_SVG };
DocuDirCache dirCache;
if (getAsBoolean("use-mapping")) {
// with mapping file
- String mapConfPath = getAsString("mapping-file");
- if (!mapConfPath.startsWith("/")) {
- // relative path -> use getRealPath to resolve in WEB-INF
- mapConfPath =
- c.getServletContext().getRealPath("WEB-INF/" + mapConfPath);
- }
+ String mapConfPath =
+ ServletOps.getConfigFile(getAsString("mapping-file"), c);
dirCache = new AliasingDocuDirCache(bd, fcs, mapConfPath);
} else {
// without mapping
@@ -257,13 +249,8 @@
// DB version
//authOp = new DBAuthOpsImpl(util);
// XML version
- String authConfPath = getAsString("auth-file");
- if (!authConfPath.startsWith("/")) {
- // relative path -> use getRealPath to resolve in WEB-INF
- authConfPath =
- c.getServletContext().getRealPath(
- "WEB-INF/" + authConfPath);
- }
+ String authConfPath =
+ ServletOps.getConfigFile(getAsString("auth-file"), c);
AuthOps authOp = new XMLAuthOps(authConfPath);
setValue("servlet.auth.op", authOp);
}
@@ -271,7 +258,7 @@
String s = getAsString("docuimage-class");
Class cl = Class.forName(getAsString("docuimage-class"));
docuImageClass = Class.forName(getAsString("docuimage-class"));
- setValue("servlet.docuimage.class", docuImageClass);
+ setValue("servlet.docuimage.class", docuImageClass.getName());
}
/**
diff -r f921735dc578 -r 8125a068af80 servlet/src/digilib/servlet/DocumentBean.java
--- a/servlet/src/digilib/servlet/DocumentBean.java Wed Dec 03 18:52:26 2003 +0100
+++ b/servlet/src/digilib/servlet/DocumentBean.java Mon Dec 08 16:50:59 2003 +0100
@@ -93,6 +93,9 @@
useAuthentication = dlConfig.getAsBoolean("use-authorization");
authOp = (AuthOps) dlConfig.getValue("servlet.auth.op");
authURLPath = dlConfig.getAsString("auth-url-path");
+ if (useAuthentication && (authOp == null)) {
+ throw new ServletException("ERROR: use-authorization configured but no AuthOp!");
+ }
}
/**
diff -r f921735dc578 -r 8125a068af80 servlet/src/digilib/servlet/Scaler.java
--- a/servlet/src/digilib/servlet/Scaler.java Wed Dec 03 18:52:26 2003 +0100
+++ b/servlet/src/digilib/servlet/Scaler.java Mon Dec 08 16:50:59 2003 +0100
@@ -59,7 +59,7 @@
public class Scaler extends HttpServlet {
// digilib servlet version (for all components)
- public static final String dlVersion = "1.18b4";
+ public static final String dlVersion = "1.18b5";
// logger for accounting requests
Logger accountlog = Logger.getLogger("account.request");
diff -r f921735dc578 -r 8125a068af80 servlet/src/digilib/servlet/ServletOps.java
--- a/servlet/src/digilib/servlet/ServletOps.java Wed Dec 03 18:52:26 2003 +0100
+++ b/servlet/src/digilib/servlet/ServletOps.java Mon Dec 08 16:50:59 2003 +0100
@@ -28,6 +28,7 @@
import java.io.PrintWriter;
import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
@@ -60,6 +61,28 @@
return pathArray;
}
+
+ /** get a real file name for a config file pathname.
+ *
+ * If filename starts with "/" its treated as absolute else the path is appended
+ * to the WEB-INF directory of the web-app.
+ *
+ * @param filename
+ * @param sc
+ * @return
+ */
+ public static String getConfigFile(String filename, ServletConfig sc) {
+ File f = new File(filename);
+ // is the filename absolute?
+ if (!f.isAbsolute()) {
+ // relative path -> use getRealPath to resolve in WEB-INF
+ filename =
+ sc.getServletContext().getRealPath("WEB-INF/" + filename);
+ }
+ return filename;
+ }
+
+
/**
* print a servlet response and exit
*/