changeset 1395:4c72696fcc96

added config option iiif-slash-replacement (default "!"). Changed constructor of ParameterMap (move out initParams).
author robcast
date Sat, 26 Sep 2015 14:08:45 +0200
parents e251b6068b68
children 7a2de95a7b8e
files common/src/main/java/digilib/conf/DigilibConfiguration.java common/src/main/java/digilib/conf/DigilibRequest.java common/src/main/java/digilib/util/ParameterMap.java servlet/src/main/java/digilib/conf/DigilibServletRequest.java servlet2/src/main/java/digilib/servlet/Scaler.java servlet2/src/main/java/digilib/servlet/ScalerNoThread.java servlet3/src/main/java/digilib/servlet/Scaler.java
diffstat 7 files changed, 35 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/common/src/main/java/digilib/conf/DigilibConfiguration.java	Thu Jun 04 18:21:08 2015 +0200
+++ b/common/src/main/java/digilib/conf/DigilibConfiguration.java	Sat Sep 26 14:08:45 2015 +0200
@@ -57,7 +57,7 @@
 
     /** digilib version */
     public static String getClassVersion() {
-        return "2.3.0";
+        return "2.3.1";
     }
 
     /* non-static getVersion for Java inheritance */
@@ -94,6 +94,8 @@
         newParameter("default-errmsg-type", "image", null, 'f');
         // prefix for IIIF image API paths (used by DigilibRequest)
         newParameter("iiif-prefix", "IIIF", null, 'f');
+        // character to use as slash-replacement in IIIF identifier part
+        newParameter("iiif-slash-replacement", "!", null, 'f');        
     }
 
     /**
--- a/common/src/main/java/digilib/conf/DigilibRequest.java	Thu Jun 04 18:21:08 2015 +0200
+++ b/common/src/main/java/digilib/conf/DigilibRequest.java	Sat Sep 26 14:08:45 2015 +0200
@@ -67,6 +67,9 @@
     /** IIIF path prefix (taken from config) */
     protected String iiifPrefix = "IIIF";
     
+    /** IIIF slash replacement (taken from config) */
+    protected String iiifSlashReplacement = null;
+    
     /** error message while configuring */
     public String errorMessage = null;
 
@@ -78,6 +81,7 @@
 
     public DigilibRequest() {
         super(30);
+        initParams();
     }
 
     /**
@@ -86,8 +90,9 @@
      * @param config
      */
     public DigilibRequest(DigilibConfiguration config) {
-        super();
+        super(30);
         this.config = config;
+        initParams();
     }
 
     /**
@@ -169,6 +174,7 @@
          */
         if (config != null) {
             iiifPrefix = config.getAsString("iiif-prefix");
+            iiifSlashReplacement = config.getAsString("iiif-slash-replacement");
         }
     }
 
@@ -418,6 +424,10 @@
                     // still escape chars -- decode again
                     identifier = URLDecoder.decode(identifier, "UTF-8");
                 }
+                if (iiifSlashReplacement != null && identifier.contains(iiifSlashReplacement)) {
+                    // change replacement back to slash
+                    identifier = identifier.replace(iiifSlashReplacement, "/");
+                }
                 setValueFromString("fn", identifier);
             } catch (UnsupportedEncodingException e) {
                 errorMessage = "Error decoding identifier in IIIF path!";
--- a/common/src/main/java/digilib/util/ParameterMap.java	Thu Jun 04 18:21:08 2015 +0200
+++ b/common/src/main/java/digilib/util/ParameterMap.java	Sat Sep 26 14:08:45 2015 +0200
@@ -45,21 +45,20 @@
 	protected OptionsSet options;
 	
 	/** Default constructor.
-	 * 
+	 * Does not call initParams().
 	 */
 	public ParameterMap() {
 		params = new HashMap<String, Parameter>();
 		options = new OptionsSet();
-		initParams();
 	}
 
 	/** Constructor with initial size.
+     * Does not call initParams().
 	 * @param size
 	 */
 	public ParameterMap(int size) {
 		params = new HashMap<String, Parameter>(size);
 		options = new OptionsSet();
-		initParams();
 	}
 
 	/** Shallow copy constructor.
@@ -69,6 +68,7 @@
 	@SuppressWarnings("unchecked")
 	public static ParameterMap cloneInstance(ParameterMap pm) {
 		ParameterMap newPm = new ParameterMap();
+        // TODO: initParams?
 		// clone params to this map
 		newPm.params = (HashMap<String, Parameter>) pm.params.clone();
 		newPm.options = (OptionsSet) pm.options.clone();
@@ -82,6 +82,7 @@
 	 */
 	public static ParameterMap getInstance(ParameterMap pm) {
 		ParameterMap newPm = new ParameterMap();
+        // TODO: initParams?
 		// add all params to this map
 		newPm.params.putAll(pm.params);
 		newPm.initOptions();
--- a/servlet/src/main/java/digilib/conf/DigilibServletRequest.java	Thu Jun 04 18:21:08 2015 +0200
+++ b/servlet/src/main/java/digilib/conf/DigilibServletRequest.java	Sat Sep 26 14:08:45 2015 +0200
@@ -76,6 +76,7 @@
      * @throws ImageOpException 
      */
     public DigilibServletRequest(HttpServletRequest request) {
+        super();
         setWithRequest(request);
         initOptions();
     }
@@ -88,7 +89,7 @@
      * @throws ImageOpException 
      */
     public DigilibServletRequest(HttpServletRequest request, DigilibConfiguration config) {
-        this.config = config;
+        super(config);
         setWithRequest(request);
         initOptions();
     }
@@ -99,6 +100,7 @@
      */
     @Override
     protected void initParams() {
+        // TODO: check if we can call super.initParams()
         /*
          * Definition of parameters and default values. Parameter of type 's'
          * are for the servlet.
@@ -175,13 +177,14 @@
         newParameter("img.pix_x", new Integer(0), null, 'c');
         // hires image size y
         newParameter("img.pix_y", new Integer(0), null, 'c');
+        
         /*
-         * TODO: check if we can remove these
-         * // total number of pages
-         * newParameter("pt", new Integer(0), null, 'c');
-         * // marks
-         * newParameter("mk", "", null, 'c');
+         * set local variables from config
          */
+        if (config != null) {
+            iiifPrefix = config.getAsString("iiif-prefix");
+            iiifSlashReplacement = config.getAsString("iiif-slash-replacement");
+        }
     }
 
     /*
--- a/servlet2/src/main/java/digilib/servlet/Scaler.java	Thu Jun 04 18:21:08 2015 +0200
+++ b/servlet2/src/main/java/digilib/servlet/Scaler.java	Sat Sep 26 14:08:45 2015 +0200
@@ -61,7 +61,7 @@
     private static final long serialVersionUID = -5439198888139362735L;
 
     /** digilib servlet version (for all components) */
-    public static final String version = "2.3.0 noasync";
+    public static final String version = "2.3.1 noasync";
 
     /** servlet error codes */
     public static enum Error {
@@ -161,7 +161,7 @@
         accountlog.debug("GetLastModified from " + request.getRemoteAddr() + " for " + request.getQueryString());
         long mtime = -1;
         // create new request
-        DigilibServletRequest dlReq = new DigilibServletRequest(request);
+        DigilibServletRequest dlReq = new DigilibServletRequest(request, dlConfig);
         DocuDirectory dd = dirCache.getDirectory(dlReq.getFilePath());
         if (dd != null) {
             mtime = dd.getDirMTime() / 1000 * 1000;
@@ -223,7 +223,7 @@
         long startTime = System.currentTimeMillis();
 
         // parse request
-        DigilibServletRequest dlRequest = new DigilibServletRequest(request);
+        DigilibServletRequest dlRequest = new DigilibServletRequest(request, dlConfig);
         // extract the job information
         ImageJobDescription jobTicket = ImageJobDescription.getInstance(dlRequest, dlConfig);
 
--- a/servlet2/src/main/java/digilib/servlet/ScalerNoThread.java	Thu Jun 04 18:21:08 2015 +0200
+++ b/servlet2/src/main/java/digilib/servlet/ScalerNoThread.java	Sat Sep 26 14:08:45 2015 +0200
@@ -55,7 +55,7 @@
     private static final long serialVersionUID = 1450947819851623306L;
 
     /** digilib servlet version (for all components) */
-    public static final String version = "2.3.0 nothread";
+    public static final String version = "2.3.1 nothread";
 
     /** servlet error codes */
     public static enum Error {
@@ -144,7 +144,7 @@
         accountlog.debug("GetLastModified from " + request.getRemoteAddr() + " for " + request.getQueryString());
         long mtime = -1;
         // create new request
-        DigilibServletRequest dlReq = new DigilibServletRequest(request);
+        DigilibServletRequest dlReq = new DigilibServletRequest(request, dlConfig);
         DocuDirectory dd = dirCache.getDirectory(dlReq.getFilePath());
         if (dd != null) {
             mtime = dd.getDirMTime() / 1000 * 1000;
@@ -206,7 +206,7 @@
         long startTime = System.currentTimeMillis();
 
         // parse request
-        DigilibServletRequest dlRequest = new DigilibServletRequest(request);
+        DigilibServletRequest dlRequest = new DigilibServletRequest(request, dlConfig);
         // extract the job information
         ImageJobDescription jobTicket = ImageJobDescription.getInstance(dlRequest, dlConfig);
 
--- a/servlet3/src/main/java/digilib/servlet/Scaler.java	Thu Jun 04 18:21:08 2015 +0200
+++ b/servlet3/src/main/java/digilib/servlet/Scaler.java	Sat Sep 26 14:08:45 2015 +0200
@@ -166,7 +166,7 @@
         long mtime = -1;
         try {
             // create new digilib request
-            DigilibServletRequest dlReq = new DigilibServletRequest(request);
+            DigilibServletRequest dlReq = new DigilibServletRequest(request, dlConfig);
             DocuDirectory dd = dirCache.getDirectory(dlReq.getFilePath());
             if (dd != null) {
                 mtime = dd.getDirMTime() / 1000 * 1000;
@@ -234,7 +234,7 @@
         final long startTime = System.currentTimeMillis();
 
         // parse request
-        DigilibServletRequest dlRequest = new DigilibServletRequest(request);
+        DigilibServletRequest dlRequest = new DigilibServletRequest(request, dlConfig);
         // extract the job information
         final ImageJobDescription jobTicket = ImageJobDescription.getInstance(dlRequest, dlConfig);