Mercurial > hg > digilib-old
comparison servlet2/src/main/java/digilib/servlet/DigilibServletConfiguration.java @ 911:0cea7e608080
add relative-basedir back in. fix digicat.
| author | robcast |
|---|---|
| date | Tue, 24 May 2011 13:48:37 -0400 |
| parents | 7779b37d1d05 |
| children | b2d97b842612 |
comparison
equal
deleted
inserted
replaced
| 910:91e5f20a7c56 | 911:0cea7e608080 |
|---|---|
| 162 */ | 162 */ |
| 163 public DigilibServletConfiguration(ServletContext c) throws Exception { | 163 public DigilibServletConfiguration(ServletContext c) throws Exception { |
| 164 readConfig(c); | 164 readConfig(c); |
| 165 } | 165 } |
| 166 | 166 |
| 167 /** | 167 /** |
| 168 * read parameter list from the XML file in init parameter "config-file" | 168 * read parameter list from the XML file in init parameter "config-file" or |
| 169 * or file digilib-config.xml | 169 * file digilib-config.xml |
| 170 */ | 170 */ |
| 171 @SuppressWarnings("unchecked") | 171 @SuppressWarnings("unchecked") |
| 172 public void readConfig(ServletContext c) throws Exception { | 172 public void readConfig(ServletContext c) throws Exception { |
| 173 | 173 |
| 174 /* | 174 /* |
| 175 * Get config file name. The file name is first looked for as an init | 175 * Get config file name. The file name is first looked for as an init |
| 176 * parameter, then in a fixed location in the webapp. | 176 * parameter, then in a fixed location in the webapp. |
| 177 */ | 177 */ |
| 178 if (c == null) { | 178 if (c == null) { |
| 179 // no config no file... | 179 // no config no file... |
| 180 return; | 180 return; |
| 181 } | 181 } |
| 182 String fn = c.getInitParameter("config-file"); | 182 String fn = c.getInitParameter("config-file"); |
| 183 if (fn == null) { | 183 if (fn == null) { |
| 184 fn = ServletOps.getConfigFile("digilib-config.xml", c); | 184 fn = ServletOps.getConfigFile("digilib-config.xml", c); |
| 185 if (fn == null) { | 185 if (fn == null) { |
| 186 logger.fatal("readConfig: no param config-file"); | 186 logger.fatal("readConfig: no param config-file"); |
| 187 throw new ServletException("ERROR: no digilib config file!"); | 187 throw new ServletException("ERROR: no digilib config file!"); |
| 188 } | 188 } |
| 189 } | 189 } |
| 190 File f = new File(fn); | 190 File f = new File(fn); |
| 191 // setup config file list reader | 191 // setup config file list reader |
| 192 XMLListLoader lilo = | 192 XMLListLoader lilo = new XMLListLoader("digilib-config", "parameter", |
| 193 new XMLListLoader("digilib-config", "parameter", "name", "value"); | 193 "name", "value"); |
| 194 // read config file into HashMap | 194 // read config file into HashMap |
| 195 Map<String,String> confTable = lilo.loadURL(f.toURL().toString()); | 195 Map<String, String> confTable = lilo.loadURL(f.toURL().toString()); |
| 196 | 196 |
| 197 // set config file path parameter | 197 // set config file path parameter |
| 198 setValue("servlet.config.file", f.getCanonicalPath()); | 198 setValue("servlet.config.file", f.getCanonicalPath()); |
| 199 | 199 |
| 200 /* | 200 /* |
| 201 * read parameters | 201 * read parameters |
| 202 */ | 202 */ |
| 203 | 203 |
| 204 for (Entry<String, String> confEntry: confTable.entrySet()) { | 204 for (Entry<String, String> confEntry : confTable.entrySet()) { |
| 205 Parameter p = get(confEntry.getKey()); | 205 Parameter p = get(confEntry.getKey()); |
| 206 if (p != null) { | 206 if (p != null) { |
| 207 if (p.getType() == 's') { | 207 if (p.getType() == 's') { |
| 208 // type 's' Parameters are not overwritten. | 208 // type 's' Parameters are not overwritten. |
| 209 continue; | 209 continue; |
| 210 } | 210 } |
| 211 if (!p.setValueFromString(confEntry.getValue())) { | 211 if (!p.setValueFromString(confEntry.getValue())) { |
| 212 /* | 212 /* |
| 213 * automatic conversion failed -- try special cases | 213 * automatic conversion failed -- try special cases |
| 214 */ | 214 */ |
| 215 | 215 |
| 216 // basedir-list | 216 // basedir-list |
| 217 if (confEntry.getKey().equals("basedir-list")) { | 217 if (confEntry.getKey().equals("basedir-list")) { |
| 218 // split list into directories | 218 // split list into directories |
| 219 String[] sa = FileOps.pathToArray(confEntry.getValue()); | 219 String[] dirs = FileOps.pathToArray(confEntry.getValue()); |
| 220 if (sa != null) { | 220 for (int j = 0; j < dirs.length; j++) { |
| 221 p.setValue(sa); | 221 // make relative directory paths be inside the webapp |
| 222 } | 222 dirs[j] = ServletOps.getFile(dirs[j], c); |
| 223 } | 223 } |
| 224 } | 224 if (dirs != null) { |
| 225 } else { | 225 p.setValue(dirs); |
| 226 // parameter unknown -- just add | 226 } |
| 227 newParameter(confEntry.getKey(), null, confEntry.getValue(), 'f'); | 227 } |
| 228 } | 228 } |
| 229 } | 229 } else { |
| 230 // initialise static DocuImage class instance | 230 // parameter unknown -- just add |
| 231 DigilibServletConfiguration.docuImageClass = (Class<DocuImageImpl>) Class.forName(getAsString("docuimage-class")); | 231 newParameter(confEntry.getKey(), null, confEntry.getValue(), |
| 232 } | 232 'f'); |
| 233 } | |
| 234 } | |
| 235 // initialise static DocuImage class instance | |
| 236 DigilibServletConfiguration.docuImageClass = (Class<DocuImageImpl>) Class | |
| 237 .forName(getAsString("docuimage-class")); | |
| 238 } | |
| 233 | 239 |
| 234 } | 240 } |
