changeset 1184:72c68a2dc14e

ImgInfo-json shows if authentication is required. MetaAccessServletAuthOps also tries to get file from dir cache (not only from job ticket). DigilibRequest can also hold a DigilibConfiguration.
author robcast
date Sun, 14 Apr 2013 18:14:27 +0200
parents 95f9e334c0d3
children d39cdbbe21da
files common/src/main/java/digilib/conf/DigilibRequest.java servlet/src/main/java/digilib/auth/MetaAccessServletAuthOps.java servlet/src/main/java/digilib/conf/DigilibServletRequest.java webapp/src/main/webapp/api/ImgInfo-json.jsp
diffstat 4 files changed, 61 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/common/src/main/java/digilib/conf/DigilibRequest.java	Fri Apr 12 17:41:43 2013 +0200
+++ b/common/src/main/java/digilib/conf/DigilibRequest.java	Sun Apr 14 18:14:27 2013 +0200
@@ -63,13 +63,27 @@
  */
 public class DigilibRequest extends ParameterMap {
 
-	protected ImageJobDescription ticket; // ImageJobDescription for this request
+    /**  ImageJobDescription for this request */
+	protected ImageJobDescription ticket;
+	
+	/** DigilibConfiguration for this request */
+	protected DigilibConfiguration config;
 
 	public DigilibRequest() {
 		super(30);
 	}
 
-	/** set up parameters.
+	/**
+	 * Create DigilibRequest with DigilibConfiguration.
+	 * 
+     * @param config
+     */
+    public DigilibRequest(DigilibConfiguration config) {
+        super();
+        this.config = config;
+    }
+
+    /** set up parameters.
 	 * 
 	 */
 	protected void initParams() {
@@ -296,4 +310,18 @@
         this.ticket = ticket;
     }
 
+    /**
+     * @return the config
+     */
+    public DigilibConfiguration getDigilibConfig() {
+        return config;
+    }
+
+    /**
+     * @param config the config to set
+     */
+    public void setDigilibConfig(DigilibConfiguration config) {
+        this.config = config;
+    }
+
 }
--- a/servlet/src/main/java/digilib/auth/MetaAccessServletAuthOps.java	Fri Apr 12 17:41:43 2013 +0200
+++ b/servlet/src/main/java/digilib/auth/MetaAccessServletAuthOps.java	Sun Apr 14 18:14:27 2013 +0200
@@ -35,9 +35,14 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+import digilib.conf.DigilibConfiguration;
+import digilib.conf.DigilibServletConfiguration;
 import digilib.conf.DigilibServletRequest;
+import digilib.image.ImageJobDescription;
+import digilib.io.DocuDirCache;
 import digilib.io.DocuDirent;
 import digilib.io.FileOpException;
+import digilib.io.FileOps;
 import digilib.meta.MetadataMap;
 import digilib.util.HashTree;
 import digilib.util.XMLListLoader;
@@ -123,7 +128,16 @@
         HttpServletRequest request = dlRequest.getServletRequest();
         DocuDirent imgs;
         try {
-            imgs = (DocuDirent) dlRequest.getJobDescription().getImageSet();
+            // try to get image file from JobDescription
+            ImageJobDescription ticket = dlRequest.getJobDescription();
+            if (ticket != null) {
+                imgs = (DocuDirent) ticket.getImageSet();
+            } else {
+                // try to get image file from DirCache
+                DigilibConfiguration config = dlRequest.getDigilibConfig();
+                DocuDirCache cache = (DocuDirCache) config.getValue(DigilibServletConfiguration.DIR_CACHE_KEY);
+                imgs = cache.getFile(dlRequest.getFilePath(), dlRequest.getAsInt("pn"), FileOps.FileClass.IMAGE);
+            }
         } catch (FileOpException e) {
             throw new AuthOpException("No file for auth check!");
         }
--- a/servlet/src/main/java/digilib/conf/DigilibServletRequest.java	Fri Apr 12 17:41:43 2013 +0200
+++ b/servlet/src/main/java/digilib/conf/DigilibServletRequest.java	Sun Apr 14 18:14:27 2013 +0200
@@ -35,9 +35,7 @@
 import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
-import digilib.conf.DigilibRequest;
 import digilib.image.DocuImage;
-import digilib.io.FileOps;
 import digilib.util.OptionsSet;
 import digilib.util.Parameter;
 
@@ -81,6 +79,18 @@
     }
 
     /**
+     * Creates a new instance of DigilibRequest with parameters from a
+     * ServletRequest. All undefined parameters are set to default values.
+     * 
+     * @param request
+     */
+    public DigilibServletRequest(HttpServletRequest request, DigilibConfiguration config) {
+        this.config = config;
+        setWithRequest(request);
+        initOptions();
+    }
+
+    /**
      * set up parameters.
      * 
      */
@@ -472,20 +482,6 @@
         return false;
     }
 
-    /**
-     * The image file path to be accessed.
-     * 
-     * The mage file path is assembled from the servlets RequestPath and
-     * Parameter fn and normalized.
-     * 
-     * @return String the effective filepath.
-     */
-    public String getFilePath() {
-        String s = getAsString("request.path");
-        s += getAsString("fn");
-        return FileOps.normalName(s);
-    }
-
     /* Property getter and setter */
 
     /**
--- a/webapp/src/main/webapp/api/ImgInfo-json.jsp	Fri Apr 12 17:41:43 2013 +0200
+++ b/webapp/src/main/webapp/api/ImgInfo-json.jsp	Sun Apr 14 18:14:27 2013 +0200
@@ -42,10 +42,10 @@
 }
 %><%
 // parsing the query
-DigilibServletRequest dlRequest = new DigilibServletRequest(request);
+DigilibServletConfiguration dlConfig = docBean.getDlConfig();
+DigilibServletRequest dlRequest = new DigilibServletRequest(request, dlConfig);
 docBean.setRequest(dlRequest);
 // dir cache
-DigilibServletConfiguration dlConfig = docBean.getDlConfig();
 DocuDirCache dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache");
 // get file
 FileOps.FileClass fc = FileOps.FileClass.IMAGE;
@@ -65,7 +65,8 @@
         if (imgSize != null) { 
             %>,
   "width" : <%= imgSize.getWidth() %>,
-  "height" : <%= imgSize.getHeight() %>
+  "height" : <%= imgSize.getHeight() %>,
+  "authentication_required" : <%= docBean.isAuthRequired(dlRequest) %>
 <% 		}
   	} 
 %>}