# HG changeset patch # User robcast # Date 1365956067 -7200 # Node ID 72c68a2dc14e6f97d8adb24a45b2a47a96a8f22b # Parent 95f9e334c0d3f84e539da95e569ba62fbe3e1c71 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. diff -r 95f9e334c0d3 -r 72c68a2dc14e common/src/main/java/digilib/conf/DigilibRequest.java --- 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; + } + } diff -r 95f9e334c0d3 -r 72c68a2dc14e servlet/src/main/java/digilib/auth/MetaAccessServletAuthOps.java --- 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!"); } diff -r 95f9e334c0d3 -r 72c68a2dc14e servlet/src/main/java/digilib/conf/DigilibServletRequest.java --- 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 */ /** diff -r 95f9e334c0d3 -r 72c68a2dc14e webapp/src/main/webapp/api/ImgInfo-json.jsp --- 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) %> <% } } %>}