Mercurial > hg > digilib
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) %> <% } } %>}