Revision 5550
Added by berkley over 14 years ago
src/edu/ucsb/nceas/metacat/dataone/CrudService.java | ||
---|---|---|
808 | 808 |
//add the ObjectInfo to the ObjectList |
809 | 809 |
if(info.getIdentifier().getValue() != null) |
810 | 810 |
{ //id can be null from tests. should not happen in production. |
811 |
ol.addObjectInfo(info); |
|
811 |
try |
|
812 |
{ //try to serialize info. if it cannot be serialized, then |
|
813 |
//don't add it to the info. bad SM can be added via tests |
|
814 |
//which can break this code. |
|
815 |
serializeObjectInfo(info); |
|
816 |
ol.addObjectInfo(info); |
|
817 |
} |
|
818 |
catch(Exception e) |
|
819 |
{} //don't do anything |
|
820 |
|
|
812 | 821 |
} |
813 | 822 |
|
814 | 823 |
} |
... | ... | |
1650 | 1659 |
} |
1651 | 1660 |
|
1652 | 1661 |
/** |
1662 |
* serialize an ObjectInfo object |
|
1663 |
* @param info |
|
1664 |
* @return |
|
1665 |
* @throws ServiceFailure |
|
1666 |
*/ |
|
1667 |
public static ByteArrayOutputStream serializeObjectInfo(ObjectInfo info) |
|
1668 |
throws ServiceFailure |
|
1669 |
{ |
|
1670 |
IBindingFactory bfact; |
|
1671 |
ByteArrayOutputStream sysmetaOut = null; |
|
1672 |
try { |
|
1673 |
bfact = BindingDirectory.getFactory(ObjectInfo.class); |
|
1674 |
IMarshallingContext mctx = bfact.createMarshallingContext(); |
|
1675 |
sysmetaOut = new ByteArrayOutputStream(); |
|
1676 |
mctx.marshalDocument(info, "UTF-8", null, sysmetaOut); |
|
1677 |
} catch (JiBXException e) { |
|
1678 |
e.printStackTrace(); |
|
1679 |
throw new ServiceFailure("1190", "Failed to serialize and insert SystemMetadata: " + e.getMessage()); |
|
1680 |
} |
|
1681 |
|
|
1682 |
return sysmetaOut; |
|
1683 |
} |
|
1684 |
|
|
1685 |
/** |
|
1653 | 1686 |
* serialize a system metadata doc |
1654 | 1687 |
* @param sysmeta |
1655 | 1688 |
* @return |
Also available in: Unified diff
added a check for bad data into listObjects