Revision 6045
Added by rnahf over 13 years ago
src/edu/ucsb/nceas/metacat/restservice/ResourceHandler.java | ||
---|---|---|
600 | 600 |
printError("Incorrect resource!", response); |
601 | 601 |
} |
602 | 602 |
} catch (Exception e) { |
603 |
logMetacat.error(e.getMessage()); |
|
604 |
System.out.println("Error in ResourceHandler.handle(): " + e.getMessage()); |
|
603 |
logMetacat.error(e.getClass() + ": " + e.getMessage());
|
|
604 |
System.out.println("Error in ResourceHandler.handle(): " + e.getClass() + ": " + e.getMessage());
|
|
605 | 605 |
e.printStackTrace(); |
606 | 606 |
} |
607 | 607 |
} |
... | ... | |
846 | 846 |
} |
847 | 847 |
catch(Exception e) |
848 | 848 |
{ |
849 |
logMetacat.error("Error getting output stream in ResourceHandler.describeObject: " + e.getMessage()); |
|
849 |
logMetacat.error("Error getting output stream in ResourceHandler.describeObject: " + e.getClass() + ": " + e.getMessage());
|
|
850 | 850 |
return; |
851 | 851 |
} |
852 | 852 |
response.setStatus(200); |
... | ... | |
937 | 937 |
} |
938 | 938 |
catch(Exception e) |
939 | 939 |
{ |
940 |
String msg = "Could not get logs from CrudService: " + e.getMessage(); |
|
940 |
String msg = "Could not get logs from CrudService: " + e.getClass() + ": " + e.getMessage();
|
|
941 | 941 |
response.setStatus(500); |
942 | 942 |
ServiceFailure sf = new ServiceFailure("1490", msg); |
943 | 943 |
logMetacat.error(msg); |
... | ... | |
1019 | 1019 |
catch(Exception e) |
1020 | 1020 |
{ |
1021 | 1021 |
e.printStackTrace(); |
1022 |
throw new Exception("Could not load the session data: " + e.getMessage()); |
|
1022 |
throw new Exception("Could not load the session data: " + e.getClass() + ": " + e.getMessage());
|
|
1023 | 1023 |
} |
1024 | 1024 |
} |
1025 | 1025 |
|
... | ... | |
1120 | 1120 |
response.setStatus(500); |
1121 | 1121 |
out.println("<?xml version=\"1.0\"?>"); |
1122 | 1122 |
out.println("<error>"); |
1123 |
out.println(e.getMessage()); |
|
1123 |
out.println(e.getClass() + ": " + e.getMessage());
|
|
1124 | 1124 |
out.println("</error>"); |
1125 | 1125 |
} |
1126 | 1126 |
|
... | ... | |
1220 | 1220 |
System.out.println("Error with Crud.get(). " + |
1221 | 1221 |
"If this is an 'Exception producing data' error, " + |
1222 | 1222 |
"go to CrudService.get() for better debugging. " + |
1223 |
"Here's the error: " + e.getMessage()); |
|
1223 |
"Here's the error: " + e.getClass() + ": " + e.getMessage());
|
|
1224 | 1224 |
e.printStackTrace(); |
1225 | 1225 |
ServiceFailure sf = new ServiceFailure("1030", |
1226 |
"IO Error in ResourceHandler.getObject: " + e.getMessage()); |
|
1226 |
"IO Error in ResourceHandler.getObject: " + e.getClass() + ": " + e.getMessage());
|
|
1227 | 1227 |
serializeException(sf, out); |
1228 | 1228 |
} |
1229 | 1229 |
} |
... | ... | |
1390 | 1390 |
} catch (IOException e) { |
1391 | 1391 |
response.setStatus(500); |
1392 | 1392 |
ServiceFailure sf = new ServiceFailure("1030", |
1393 |
"Error in ResourceHandler.getSystemMetadataObject: " + e.getMessage()); |
|
1393 |
"IO Error in ResourceHandler.getSystemMetadataObject: " + e.getMessage());
|
|
1394 | 1394 |
serializeException(sf, out); |
1395 | 1395 |
} finally { |
1396 | 1396 |
IOUtils.closeQuietly(out); |
... | ... | |
1619 | 1619 |
logMetacat.debug("Disassembling MIME multipart form"); |
1620 | 1620 |
InputStream object = null; |
1621 | 1621 |
InputStream sysmeta = null; |
1622 |
Map<String, List<String>> mutlipartparams;
|
|
1622 |
Map<String, List<String>> multipartparams;
|
|
1623 | 1623 |
|
1624 | 1624 |
try |
1625 | 1625 |
{ |
... | ... | |
1650 | 1650 |
throw new ServiceFailure("1202", "No file keys found in MMP. " + |
1651 | 1651 |
"create/update must have multipart files with names 'object' and 'sysmeta'"); |
1652 | 1652 |
} |
1653 |
Iterator multipartkeys = files.keySet().iterator(); |
|
1654 |
System.out.println("iterating through multipart files: " + multipartkeys); |
|
1655 |
while(multipartkeys.hasNext()) |
|
1653 |
|
|
1654 |
// for logging purposes, dump out the key-value pairs that constitute the request |
|
1655 |
// 3 types exist: request params, multipart params, and multipart files |
|
1656 |
Iterator it = files.keySet().iterator(); |
|
1657 |
System.out.println("iterating through request parts: " + it); |
|
1658 |
while(it.hasNext()) |
|
1656 | 1659 |
{ |
1657 |
String key = (String)multipartkeys.next();
|
|
1660 |
String key = (String)it.next();
|
|
1658 | 1661 |
System.out.println("files key: " + key); |
1659 | 1662 |
System.out.println("files value: " + files.get(key)); |
1660 | 1663 |
} |
1661 | 1664 |
|
1662 |
mutlipartparams = mr.getMultipartParameters();
|
|
1663 |
multipartkeys = mutlipartparams.keySet().iterator();
|
|
1664 |
while(multipartkeys.hasNext())
|
|
1665 |
multipartparams = mr.getMultipartParameters();
|
|
1666 |
it = multipartparams.keySet().iterator();
|
|
1667 |
while(it.hasNext())
|
|
1665 | 1668 |
{ |
1666 |
String key = (String)multipartkeys.next();
|
|
1667 |
System.out.println("mutlipartparams key: " + key);
|
|
1668 |
System.out.println("mutlipartparams value: " + mutlipartparams.get(key));
|
|
1669 |
String key = (String)it.next();
|
|
1670 |
System.out.println("multipartparams key: " + key);
|
|
1671 |
System.out.println("multipartparams value: " + multipartparams.get(key));
|
|
1669 | 1672 |
} |
1670 | 1673 |
|
1671 |
Iterator keys = params.keySet().iterator();
|
|
1672 |
while(keys.hasNext())
|
|
1674 |
it = params.keySet().iterator();
|
|
1675 |
while(it.hasNext())
|
|
1673 | 1676 |
{ |
1674 |
String key = (String)keys.next();
|
|
1677 |
String key = (String)it.next();
|
|
1675 | 1678 |
System.out.println("param key: " + key); |
1676 | 1679 |
System.out.println("param value: " + params.get(key)); |
1677 | 1680 |
} |
1678 |
|
|
1681 |
System.out.println("done iterating the request..."); |
|
1682 |
|
|
1679 | 1683 |
File smFile = files.get("sysmeta"); |
1684 |
if (smFile == null) |
|
1685 |
throw new InvalidRequest("1102", "Missing the required file-part 'sysmeta' from the multipart request."); |
|
1680 | 1686 |
System.out.println("smFile: " + smFile.getAbsolutePath()); |
1681 | 1687 |
sysmeta = new FileInputStream(smFile); |
1682 | 1688 |
File objFile = files.get("object"); |
1689 |
if (objFile == null) |
|
1690 |
throw new InvalidRequest("1102", "Missing the required file-part 'object' from the multipart request."); |
|
1691 |
|
|
1683 | 1692 |
System.out.println("objectfile: " + objFile.getAbsolutePath()); |
1684 | 1693 |
object = new FileInputStream(objFile); |
1685 | 1694 |
|
... | ... | |
1702 | 1711 |
} |
1703 | 1712 |
catch(Exception e) |
1704 | 1713 |
{ |
1705 |
throw new ServiceFailure("1202", "Error handling MMP upload: " + e.getMessage()); |
|
1714 |
throw new ServiceFailure("1202", "Error handling MMP upload: " + e.getClass() + ": " + e.getMessage());
|
|
1706 | 1715 |
} |
1707 | 1716 |
|
1708 | 1717 |
if ( action.equals(FUNCTION_NAME_INSERT)) { //handle inserts |
... | ... | |
1737 | 1746 |
AuthToken token = new AuthToken(sessionId); |
1738 | 1747 |
|
1739 | 1748 |
//do some checks |
1740 |
if(mutlipartparams.get("obsoletedGuid") == null)
|
|
1749 |
if(multipartparams.get("obsoletedGuid") == null)
|
|
1741 | 1750 |
{ |
1742 | 1751 |
throw new InvalidRequest("1202", "obsoletedGuid must be contained in the request parameters."); |
1743 | 1752 |
} |
1744 | 1753 |
//get the obsoletedGuid |
1745 |
String obsGuidS = mutlipartparams.get("obsoletedGuid").get(0);
|
|
1754 |
String obsGuidS = multipartparams.get("obsoletedGuid").get(0);
|
|
1746 | 1755 |
obsoletedGuid.setValue(obsGuidS); |
1747 | 1756 |
|
1748 | 1757 |
if (!im.identifierExists(obsoletedGuid.getValue())) |
... | ... | |
1906 | 1915 |
catch(Exception e) |
1907 | 1916 |
{ |
1908 | 1917 |
response.setStatus(500); |
1909 |
printError("Error setting access in ResourceHandler: " + e.getMessage(), response); |
|
1918 |
printError("Error setting access in ResourceHandler: " + e.getClass() + ": " + e.getMessage(), response);
|
|
1910 | 1919 |
throw e; |
1911 | 1920 |
} |
1912 | 1921 |
} |
Also available in: Unified diff
improved multipart handling (improved logging messages, code, and error checking). Added exception classname to error output when the generic Exception is thrown. Added error check for cases of null value for file parts 'sysmeta' and 'object.'