annotate text/src/main/java/digilib/servlet/Texter.java @ 1132:d47513632da5

additional annotationSafeTokenUrl for https url, used with passwords. we don't always use https for issues with self-signed certs.
author robcast
date Tue, 13 Nov 2012 19:29:23 +0100
parents afd82fe0c48a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
903
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
1 /* Texter.java -- Servlet for displaying text
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
2 * Digital Image Library servlet components
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
3 * Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
4 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or modify it
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
6 * under the terms of the GNU General Public License as published by the Free
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
7 * Software Foundation; either version 2 of the License, or (at your option)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
8 * any later version. Please read license.txt for the full details. A copy of
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
9 * the GPL may be found at http://www.gnu.org/copyleft/lgpl.html
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
10 * You should have received a copy of the GNU General Public License along with this
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
11 * program; if not, write to the Free Software Foundation, Inc., 59 Temple
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
12 * Place, Suite 330, Boston, MA 02111-1307 USA
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
13 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
14 * Created on 15.09.2003 by casties
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
15 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
16
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
17 package digilib.servlet;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
18
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
19 import java.io.IOException;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
20
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
21 import javax.servlet.ServletConfig;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
22 import javax.servlet.ServletContext;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
23 import javax.servlet.ServletException;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
24 import javax.servlet.http.HttpServlet;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
25 import javax.servlet.http.HttpServletRequest;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
26 import javax.servlet.http.HttpServletResponse;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
27
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
28 import org.apache.log4j.Logger;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
29
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
30 import digilib.auth.AuthOps;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
31 import digilib.image.ImageOpException;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
32 import digilib.io.DocuDirCache;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
33 import digilib.io.FileOps;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
34 import digilib.io.FileOps.FileClass;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
35 import digilib.io.TextFile;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
36
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
37 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
38 * Servlet for displaying text
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
39 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
40 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
41 * @author casties
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
42 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
43 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
44 public class Texter extends HttpServlet {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
45
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
46 private static final long serialVersionUID = 6678666342141409867L;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
47
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
48 /** Servlet version */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
49 public static String tlVersion = "0.1b3";
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
50
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
51 /** DigilibConfiguration instance */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
52 DigilibServletConfiguration dlConfig = null;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
53
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
54 /** general logger */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
55 Logger logger = Logger.getLogger("digilib.texter");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
56
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
57 /** logger for accounting requests */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
58 protected static Logger accountlog = Logger.getLogger("account.texter.request");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
59
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
60 /** FileOps instance */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
61 FileOps fileOp;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
62
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
63 /** AuthOps instance */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
64 AuthOps authOp;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
65
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
66 /** ServletOps instance */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
67 ServletOps servletOp;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
68
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
69 /** DocuDirCache instance */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
70 DocuDirCache dirCache;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
71
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
72 /** use authentication */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
73 boolean useAuthentication = false;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
74
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
75 /*
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
76 * (non-Javadoc)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
77 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
78 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
79 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
80 public void init(ServletConfig config) throws ServletException {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
81 super.init(config);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
82
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
83 System.out.println("***** Digital Image Library Text Servlet (version "
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
84 + tlVersion + ") *****");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
85
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
86 // get our ServletContext
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
87 ServletContext context = config.getServletContext();
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
88 // see if there is a Configuration instance
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
89 dlConfig = (DigilibServletConfiguration) context
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
90 .getAttribute("digilib.servlet.configuration");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
91 if (dlConfig == null) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
92 // no Configuration
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
93 throw new ServletException("No Configuration!");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
94 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
95 // say hello in the log file
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
96 logger.info("***** Digital Image Library Text Servlet (version "
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
97 + tlVersion + ") *****");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
98
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
99 // set our AuthOps
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
100 useAuthentication = dlConfig.getAsBoolean("use-authorization");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
101 authOp = (AuthOps) dlConfig.getValue("servlet.auth.op");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
102 // DocuDirCache instance
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
103 dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
104 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
105
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
106 /*
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
107 * (non-Javadoc)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
108 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
109 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
110 * javax.servlet.http.HttpServletResponse)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
111 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
112 protected void doGet(HttpServletRequest request,
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
113 HttpServletResponse response) throws ServletException, IOException {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
114 accountlog.info("GET from " + request.getRemoteAddr());
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
115 // do the processing
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
116 processRequest(request, response);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
117 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
118
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
119 /*
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
120 * (non-Javadoc)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
121 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
122 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
123 * javax.servlet.http.HttpServletResponse)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
124 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
125 protected void doPost(HttpServletRequest request,
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
126 HttpServletResponse response) throws ServletException, IOException {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
127 accountlog.info("POST from " + request.getRemoteAddr());
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
128 // do the processing
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
129 processRequest(request, response);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
130 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
131
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
132 protected void processRequest(HttpServletRequest request,
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
133 HttpServletResponse response) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
134
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
135 /*
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
136 * request parameters
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
137 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
138 // create new request with defaults
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
139 DigilibServletRequest dlRequest = new DigilibServletRequest(request);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
140 try {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
141
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
142 /*
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
143 * find the file to load/send
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
144 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
145 TextFile f = getTextFile(dlRequest, "/txt");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
146 if (f != null) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
147 ServletOps.sendFile(f.getFile(), null, null, response, logger);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
148 } else {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
149 f = getTextFile(dlRequest, "");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
150 if (f != null) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
151 ServletOps.sendFile(f.getFile(), null, null, response, logger);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
152 } else {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
153 response.sendError(HttpServletResponse.SC_NOT_FOUND, "Text-File not found!");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
154 //ServletOps.htmlMessage("No Text-File!", response);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
155 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
156 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
157
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
158 } catch (ImageOpException e) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
159 // most likely wrong file format...
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
160 logger.error("ERROR sending text file: ", e);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
161 try {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
162 response.sendError(HttpServletResponse.SC_BAD_REQUEST);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
163 } catch (IOException e1) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
164 logger.error("ERROR sending error: ", e1);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
165 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
166 } catch (IOException e) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
167 logger.error("ERROR sending text file: ", e);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
168 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
169 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
170
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
171
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
172 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
173 * Looks for a file in the given subDirectory.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
174 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
175 * @param dlRequest
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
176 * The received request which has the file path.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
177 * @param subDirectory
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
178 * The subDirectory of the file path where the file should
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
179 * be found.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
180 * @return The wanted Textfile or null if there wasn't a file.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
181 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
182
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
183 private TextFile getTextFile(DigilibServletRequest dlRequest, String subDirectory) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
184 String loadPathName = dlRequest.getFilePath() + subDirectory;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
185 // find the file(set)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
186 return (TextFile) dirCache.getFile(loadPathName, dlRequest.getAsInt("pn"),
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
187 FileClass.TEXT);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
188 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
189 }