Mercurial > hg > digilib-old
annotate servlet/src/digilib/servlet/Scaler.java @ 571:6e8488acb499
fixed default file class for DocuDir.size()
author | robcast |
---|---|
date | Wed, 22 Dec 2010 14:46:00 +0100 |
parents | fd2ef7e46119 |
children | 800f2bb57f1f |
rev | line source |
---|---|
1 | 1 package digilib.servlet; |
2 | |
79
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
3 import java.io.File; |
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
4 import java.io.IOException; |
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
5 import java.util.List; |
543
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
6 import java.util.concurrent.ExecutionException; |
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
7 import java.util.concurrent.Future; |
1 | 8 |
79
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
9 import javax.servlet.ServletConfig; |
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
10 import javax.servlet.ServletContext; |
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
11 import javax.servlet.ServletException; |
557 | 12 import javax.servlet.http.HttpServlet; |
79
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
13 import javax.servlet.http.HttpServletRequest; |
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
14 import javax.servlet.http.HttpServletResponse; |
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
15 |
557 | 16 import org.apache.log4j.Logger; |
17 | |
79
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
18 import digilib.auth.AuthOpException; |
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
19 import digilib.auth.AuthOps; |
543
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
20 import digilib.image.DocuImage; |
557 | 21 import digilib.image.ImageJobDescription; |
570 | 22 import digilib.image.ImageOpException; |
557 | 23 import digilib.image.ImageWorker; |
86 | 24 import digilib.io.DocuDirCache; |
335 | 25 import digilib.io.DocuDirectory; |
26 import digilib.io.DocuDirent; | |
563 | 27 import digilib.io.FileOps.FileClass; |
161 | 28 import digilib.io.ImageFile; |
557 | 29 import digilib.util.DigilibJobCenter; |
1 | 30 |
547 | 31 @SuppressWarnings("serial") |
557 | 32 public class Scaler extends HttpServlet { |
263 | 33 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
34 /** digilib servlet version (for all components) */ |
571 | 35 public static final String version = "1.8.2b"; |
79
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
36 |
558 | 37 /** servlet error codes */ |
38 public static enum Error {UNKNOWN, AUTH, FILE, IMAGE}; | |
39 | |
40 /** type of error message */ | |
41 public static enum ErrMsg {IMAGE, TEXT, CODE}; | |
42 | |
557 | 43 /** logger for accounting requests */ |
44 protected static Logger accountlog = Logger.getLogger("account.request"); | |
45 | |
46 /** gengeral logger for this class */ | |
47 protected static Logger logger = Logger.getLogger("digilib.servlet"); | |
48 | |
49 /** logger for authentication related */ | |
50 protected static Logger authlog = Logger.getLogger("digilib.auth"); | |
51 | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
52 /** DocuDirCache instance */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
53 DocuDirCache dirCache; |
161 | 54 |
543
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
55 /** Image executor */ |
547 | 56 DigilibJobCenter<DocuImage> imageJobCenter; |
543
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
57 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
58 /** authentication error image file */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
59 File denyImgFile; |
298
1ecaf9c1fd8a
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
288
diff
changeset
|
60 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
61 /** image error image file */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
62 File errorImgFile; |
298
1ecaf9c1fd8a
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
288
diff
changeset
|
63 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
64 /** not found error image file */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
65 File notfoundImgFile; |
298
1ecaf9c1fd8a
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
288
diff
changeset
|
66 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
67 /** send files as is? */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
68 boolean sendFileAllowed = true; |
298
1ecaf9c1fd8a
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
288
diff
changeset
|
69 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
70 /** DigilibConfiguration instance */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
71 DigilibConfiguration dlConfig; |
1 | 72 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
73 /** use authorization database */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
74 boolean useAuthorization = true; |
298
1ecaf9c1fd8a
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
288
diff
changeset
|
75 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
76 /** AuthOps instance */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
77 AuthOps authOp; |
1 | 78 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
79 /** |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
80 * Initialisation on first run. |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
81 * |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
82 * @throws ServletException |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
83 * |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
84 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig) |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
85 */ |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
86 public void init(ServletConfig config) throws ServletException { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
87 super.init(config); |
181 | 88 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
89 System.out |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
90 .println("***** Digital Image Library Image Scaler Servlet (version " |
563 | 91 + version + ") *****"); |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
92 // say hello in the log file |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
93 logger.info("***** Digital Image Library Image Scaler Servlet (version " |
563 | 94 + version + ") *****"); |
1 | 95 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
96 // get our ServletContext |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
97 ServletContext context = config.getServletContext(); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
98 // see if there is a Configuration instance |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
99 dlConfig = (DigilibConfiguration) context |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
100 .getAttribute("digilib.servlet.configuration"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
101 if (dlConfig == null) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
102 // no Configuration |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
103 throw new ServletException("No Configuration!"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
104 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
105 // set our AuthOps |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
106 useAuthorization = dlConfig.getAsBoolean("use-authorization"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
107 authOp = (AuthOps) dlConfig.getValue("servlet.auth.op"); |
1 | 108 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
109 // DocuDirCache instance |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
110 dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
111 |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
112 // Executor |
547 | 113 imageJobCenter = (DigilibJobCenter<DocuImage>) dlConfig |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
114 .getValue("servlet.worker.imageexecutor"); |
1 | 115 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
116 denyImgFile = ServletOps.getFile( |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
117 (File) dlConfig.getValue("denied-image"), config); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
118 errorImgFile = ServletOps.getFile( |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
119 (File) dlConfig.getValue("error-image"), config); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
120 notfoundImgFile = ServletOps.getFile( |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
121 (File) dlConfig.getValue("notfound-image"), config); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
122 sendFileAllowed = dlConfig.getAsBoolean("sendfile-allowed"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
123 } |
1 | 124 |
557 | 125 /** Returns modification time relevant to the request for caching. |
547 | 126 * |
127 * @see javax.servlet.http.HttpServlet#getLastModified(javax.servlet.http.HttpServletRequest) | |
128 */ | |
129 protected long getLastModified(HttpServletRequest request) { | |
130 accountlog.debug("GetLastModified from " + request.getRemoteAddr() | |
131 + " for " + request.getQueryString()); | |
132 long mtime = -1; | |
133 // create new request | |
134 DigilibRequest dlReq = new DigilibRequest(request); | |
135 // find the file(set) | |
136 DocuDirent f = dirCache.getFile(dlReq.getFilePath(), | |
563 | 137 dlReq.getAsInt("pn"), FileClass.IMAGE); |
547 | 138 // find the requested file |
139 if (f != null) { | |
140 DocuDirectory dd = (DocuDirectory) f.getParent(); | |
141 mtime = dd.getDirMTime() / 1000 * 1000; | |
142 } | |
143 return mtime; | |
144 } | |
145 | |
557 | 146 /* (non-Javadoc) |
147 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) | |
148 */ | |
149 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { | |
150 accountlog.info("GET from " + request.getRemoteAddr()); | |
151 this.processRequest(request, response); | |
152 } | |
547 | 153 |
557 | 154 |
155 /* (non-Javadoc) | |
156 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) | |
157 */ | |
158 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException { | |
159 accountlog.info("POST from " + request.getRemoteAddr()); | |
160 this.processRequest(request, response); | |
161 } | |
162 | |
163 | |
164 /** Service this request using the response. | |
165 * @param request | |
166 * @param response | |
167 * @throws ServletException | |
168 */ | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
169 public void processRequest(HttpServletRequest request, |
557 | 170 HttpServletResponse response) throws ServletException { |
487 | 171 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
172 if (dlConfig == null) { |
557 | 173 logger.error("ERROR: No Configuration!"); |
174 throw new ServletException("NO VALID digilib CONFIGURATION!"); | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
175 } |
502 | 176 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
177 accountlog.debug("request: " + request.getQueryString()); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
178 logger.debug("request: " + request.getQueryString()); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
179 long startTime = System.currentTimeMillis(); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
180 |
547 | 181 // parse request |
182 DigilibRequest dlRequest = new DigilibRequest(request); | |
183 // extract the job information | |
557 | 184 ImageJobDescription jobTicket = ImageJobDescription.getInstance(dlRequest, dlConfig); |
502 | 185 |
558 | 186 // type of error reporting |
187 ErrMsg errMsgType = ErrMsg.IMAGE; | |
188 if (dlRequest.hasOption("errtxt")) { | |
189 errMsgType = ErrMsg.TEXT; | |
190 } else if (dlRequest.hasOption("errcode")) { | |
191 errMsgType = ErrMsg.CODE; | |
192 } | |
193 | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
194 try { |
547 | 195 /* |
196 * check if we can fast-track without scaling | |
197 */ | |
198 ImageFile fileToLoad = jobTicket.getFileToLoad(); | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
199 |
547 | 200 // check permissions |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
201 if (useAuthorization) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
202 // get a list of required roles (empty if no restrictions) |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
203 List<String> rolesRequired = authOp.rolesForPath( |
547 | 204 jobTicket.getFilePath(), request); |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
205 if (rolesRequired != null) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
206 authlog.debug("Role required: " + rolesRequired); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
207 authlog.debug("User: " + request.getRemoteUser()); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
208 // is the current request/user authorized? |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
209 if (!authOp.isRoleAuthorized(rolesRequired, request)) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
210 // send deny answer and abort |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
211 throw new AuthOpException(); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
212 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
213 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
214 } |
79
63c8186455c1
Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents:
73
diff
changeset
|
215 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
216 // if requested, send image as a file |
547 | 217 if (sendFileAllowed && jobTicket.getSendAsFile()) { |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
218 String mt = null; |
547 | 219 if (jobTicket.hasOption("rawfile")) { |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
220 mt = "application/octet-stream"; |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
221 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
222 logger.debug("Sending RAW File as is."); |
557 | 223 ServletOps.sendFile(fileToLoad.getFile(), mt, null, response); |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
224 logger.info("Done in " + (System.currentTimeMillis() - startTime) + "ms"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
225 return; |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
226 } |
487 | 227 |
547 | 228 // if possible, send the image without actually having to transform it |
229 if (! jobTicket.isTransformRequired()) { | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
230 logger.debug("Sending File as is."); |
557 | 231 ServletOps.sendFile(fileToLoad.getFile(), null, null, response); |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
232 logger.info("Done in " + (System.currentTimeMillis() - startTime) + "ms"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
233 return; |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
234 } |
181 | 235 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
236 // check load of workers |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
237 if (imageJobCenter.isBusy()) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
238 logger.error("Servlet overloaded!"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
239 response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
240 return; |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
241 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
242 // create job |
557 | 243 ImageWorker job = new ImageWorker(dlConfig, jobTicket); |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
244 // submit job |
543
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
245 Future<DocuImage> jobResult = imageJobCenter.submit(job); |
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
246 // wait for result |
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
247 DocuImage img = jobResult.get(); |
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
248 // send image |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
249 ServletOps.sendImage(img, null, response); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
250 logger.debug("Job Processing Time: " |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
251 + (System.currentTimeMillis() - startTime) + "ms"); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
252 |
570 | 253 } catch (ImageOpException e) { |
254 logger.error(e.getClass() + ": " + e.getMessage()); | |
255 digilibError(errMsgType, Error.IMAGE, null, response); | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
256 } catch (IOException e) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
257 logger.error(e.getClass() + ": " + e.getMessage()); |
558 | 258 digilibError(errMsgType, Error.FILE, null, response); |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
259 } catch (AuthOpException e) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
260 logger.error(e.getClass() + ": " + e.getMessage()); |
558 | 261 digilibError(errMsgType, Error.AUTH, null, response); |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
262 } catch (InterruptedException e) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
263 logger.error(e.getClass() + ": " + e.getMessage()); |
543
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
264 } catch (ExecutionException e) { |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
265 logger.error(e.getClass() + ": " + e.getMessage()); |
557 | 266 String causeMsg = e.getCause().getMessage(); |
267 logger.error("caused by: " + causeMsg); | |
558 | 268 digilibError(errMsgType, Error.IMAGE, causeMsg, response); |
543
919e008ab1fb
more steps towards more standard java.util.concurrent design
robcast
parents:
542
diff
changeset
|
269 } |
405
ffb2036da205
first stab at PDF printer servlet. DOES NOT WORK YET!
robcast
parents:
394
diff
changeset
|
270 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
271 } |
298
1ecaf9c1fd8a
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
288
diff
changeset
|
272 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
273 /** |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
274 * Sends an error to the client as text or image. |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
275 * |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
276 * @param type |
558 | 277 * @param error |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
278 * @param msg |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
279 * @param response |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
280 */ |
558 | 281 public void digilibError(ErrMsg type, Error error, String msg, |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
282 HttpServletResponse response) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
283 try { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
284 File img = null; |
557 | 285 int status = 0; |
558 | 286 if (error == Error.AUTH) { |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
287 if (msg == null) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
288 msg = "ERROR: Unauthorized access!"; |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
289 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
290 img = denyImgFile; |
557 | 291 status = HttpServletResponse.SC_FORBIDDEN; |
558 | 292 } else if (error == Error.FILE) { |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
293 if (msg == null) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
294 msg = "ERROR: Image file not found!"; |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
295 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
296 img = notfoundImgFile; |
557 | 297 status = HttpServletResponse.SC_NOT_FOUND; |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
298 } else { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
299 if (msg == null) { |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
300 msg = "ERROR: Other image error!"; |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
301 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
302 img = this.errorImgFile; |
557 | 303 status = HttpServletResponse.SC_BAD_REQUEST; |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
304 } |
558 | 305 if (type == ErrMsg.TEXT) { |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
306 ServletOps.htmlMessage(msg, response); |
558 | 307 } else if (type == ErrMsg.CODE) { |
557 | 308 response.sendError(status, msg); |
309 } else if (img != null) { | |
310 // default: image | |
311 ServletOps.sendFile(img, null, null, response); | |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
312 } |
570 | 313 } catch (Exception e) { |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
314 logger.error("Error sending error!", e); |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
315 } |
298
1ecaf9c1fd8a
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
288
diff
changeset
|
316 |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
317 } |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
318 |
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
319 public static String getVersion() { |
563 | 320 return version; |
544
5ff500d6812a
more steps towards more standard java.util.concurrent design
robcast
parents:
543
diff
changeset
|
321 } |
489
882ee6a055bd
try to fix small problem with version number display
robcast
parents:
487
diff
changeset
|
322 |
500 | 323 } |