Revision 5337
Added by berkley almost 14 years ago
MetacatHandler.java | ||
---|---|---|
57 | 57 |
import javax.servlet.http.HttpServletRequest; |
58 | 58 |
import javax.servlet.http.HttpServletResponse; |
59 | 59 |
import javax.servlet.http.HttpSession; |
60 |
import javax.activation.MimetypesFileTypeMap; |
|
60 | 61 |
|
61 | 62 |
import org.apache.log4j.Logger; |
62 | 63 |
import org.ecoinformatics.eml.EMLParser; |
... | ... | |
114 | 115 |
private static final String ERROR = "<error>"; |
115 | 116 |
private static final String ERRORCLOSE = "</error>"; |
116 | 117 |
|
117 |
private ServletContext servletContext; |
|
118 | 118 |
private Timer timer; |
119 | 119 |
|
120 |
public MetacatHandler(ServletContext servletContext, Timer timer) { |
|
121 |
this.servletContext = servletContext; |
|
120 |
public MetacatHandler(Timer timer) { |
|
122 | 121 |
this.timer = timer; |
123 | 122 |
} |
124 | 123 |
|
... | ... | |
955 | 954 |
|
956 | 955 |
if (response != null) { |
957 | 956 |
// MIME type |
958 |
String contentType = servletContext.getMimeType(filename); |
|
957 |
//String contentType = servletContext.getMimeType(filename); |
|
958 |
String contentType = (new MimetypesFileTypeMap()).getContentType(filename); |
|
959 | 959 |
if (contentType == null) { |
960 | 960 |
ContentTypeProvider provider = new ContentTypeProvider( |
961 | 961 |
docid); |
... | ... | |
1097 | 1097 |
private void readFromURLConnection(HttpServletResponse response, |
1098 | 1098 |
String docid) throws IOException, MalformedURLException { |
1099 | 1099 |
ServletOutputStream out = response.getOutputStream(); |
1100 |
String contentType = servletContext.getMimeType(docid); //MIME type |
|
1100 |
//String contentType = servletContext.getMimeType(docid); //MIME type |
|
1101 |
String contentType = (new MimetypesFileTypeMap()).getContentType(docid); |
|
1101 | 1102 |
if (contentType == null) { |
1102 | 1103 |
if (docid.endsWith(".xml")) { |
1103 | 1104 |
contentType = "text/xml"; |
... | ... | |
1286 | 1287 |
* Handle the database putdocument request and write an XML document to the |
1287 | 1288 |
* database connection |
1288 | 1289 |
*/ |
1289 |
public void handleInsertOrUpdateAction(String ipAddress,
|
|
1290 |
public String handleInsertOrUpdateAction(String ipAddress,
|
|
1290 | 1291 |
HttpServletResponse response, PrintWriter out, Hashtable<String, String[]> params, |
1291 | 1292 |
String user, String[] groups) { |
1292 | 1293 |
Logger logMetacat = Logger.getLogger(MetaCatServlet.class); |
... | ... | |
1300 | 1301 |
} |
1301 | 1302 |
|
1302 | 1303 |
if(params.get("docid") == null){ |
1303 |
out.println("<?xml version=\"1.0\"?>"); |
|
1304 |
out.println("<error>"); |
|
1305 |
out.println("Docid not specified"); |
|
1306 |
out.println("</error>"); |
|
1307 |
logMetacat.error("MetaCatServlet.handleInsertOrUpdateAction - Docid not specified"); |
|
1308 |
return; |
|
1304 |
String msg = "<?xml version=\"1.0\"?>" + |
|
1305 |
"<error>" + |
|
1306 |
"Docid not specified" + |
|
1307 |
"</error>"; |
|
1308 |
if(out != null) |
|
1309 |
{ |
|
1310 |
out.println(msg); |
|
1311 |
logMetacat.error("MetaCatServlet.handleInsertOrUpdateAction - Docid not specified"); |
|
1312 |
} |
|
1313 |
return msg; |
|
1309 | 1314 |
} |
1310 | 1315 |
|
1311 | 1316 |
try { |
1312 | 1317 |
if (!AuthUtil.canInsertOrUpdate(user, groups)) { |
1313 |
out.println("<?xml version=\"1.0\"?>"); |
|
1314 |
out.println("<error>"); |
|
1315 |
out.println("User '" + user + "' not allowed to insert and update"); |
|
1316 |
out.println("</error>"); |
|
1318 |
String msg = "<?xml version=\"1.0\"?>" + |
|
1319 |
"<error>" + |
|
1320 |
"User '" + user + "' not allowed to insert and update" + |
|
1321 |
"</error>"; |
|
1322 |
if(out != null) |
|
1323 |
{ |
|
1324 |
out.println(msg); |
|
1325 |
} |
|
1326 |
|
|
1317 | 1327 |
logMetacat.error("MetaCatServlet.handleInsertOrUpdateAction - User '" + user + "' not allowed to insert and update"); |
1318 |
return; |
|
1328 |
return msg;
|
|
1319 | 1329 |
} |
1320 | 1330 |
} catch (MetacatUtilException ue) { |
1321 | 1331 |
logMetacat.error("MetaCatServlet.handleInsertOrUpdateAction - Could not determine if user could insert or update: " |
... | ... | |
1346 | 1356 |
} |
1347 | 1357 |
|
1348 | 1358 |
if(doctext == null){ |
1349 |
out.println("<?xml version=\"1.0\"?>"); |
|
1350 |
out.println("<error>"); |
|
1351 |
out.println("Document text not submitted"); |
|
1352 |
out.println("</error>"); |
|
1359 |
String msg = "<?xml version=\"1.0\"?>" + |
|
1360 |
"<error>" + |
|
1361 |
"Document text not submitted." + |
|
1362 |
"</error>"; |
|
1363 |
if(out != null) |
|
1364 |
{ |
|
1365 |
out.println(msg); |
|
1366 |
} |
|
1367 |
|
|
1353 | 1368 |
// TODO: this should really throw an exception |
1354 |
return; |
|
1369 |
return msg;
|
|
1355 | 1370 |
} |
1356 | 1371 |
|
1357 | 1372 |
logMetacat.debug("MetaCatServlet.handleInsertOrUpdateAction - the xml document in metacat servlet (before parsing):\n" + doctext[0]); |
... | ... | |
1463 | 1478 |
} |
1464 | 1479 |
|
1465 | 1480 |
if (qformat == null || qformat.equals("xml")) { |
1466 |
response.setContentType("text/xml"); |
|
1467 |
out.println(output); |
|
1481 |
if(response != null) |
|
1482 |
{ |
|
1483 |
response.setContentType("text/xml"); |
|
1484 |
out.println(output); |
|
1485 |
} |
|
1486 |
return output; |
|
1468 | 1487 |
} else { |
1469 | 1488 |
try { |
1470 | 1489 |
DBTransform trans = new DBTransform(); |
... | ... | |
1479 | 1498 |
e.printStackTrace(System.out); |
1480 | 1499 |
} |
1481 | 1500 |
} |
1501 |
return null; |
|
1482 | 1502 |
} |
1483 | 1503 |
|
1484 | 1504 |
/** |
Also available in: Unified diff
removed CrudService dependency on servlet params. CrudService is now a singleton. I'm getting an error from metacat saying it can't find teh systemmetadata schema, even though it is, in fact, registered with metacat. need to identify why this is happening.