Program: 188308
Project: 188308
Buggy source:
private static IndexedPreservationEvent solrDocumentToIndexedPreservationEvent(SolrDocument doc){
  final String id=objectToString(doc.get(RodaConstants.INDEX_UUID),null);
  final String aipId=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_AIP_ID),null);
  final String representationUUID=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_REPRESENTATION_UUID),null);
  final String fileUUID=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_FILE_UUID),null);
  IndexedPreservationEvent ipe=new IndexedPreservationEvent();
  ipe.setId(id);
  ipe.setAipID(aipId);
  ipe.setRepresentationUUID(representationUUID);
  ipe.setFileUUID(fileUUID);
  String objectClass=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_OBJECT_CLASS),null);
  if (StringUtils.isNotBlank(objectClass)) {
    ipe.setObjectClass(PreservationMetadataEventClass.valueOf(objectClass.toUpperCase()));
  }
  final Date eventDateTime=objectToDate(doc.get(RodaConstants.PRESERVATION_EVENT_DATETIME));
  final String eventDetail=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_DETAIL),null);
  final String eventType=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_TYPE),null);
  final String eventOutcome=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_OUTCOME),null);
  final List<String> agents=objectToListString(doc.get(RodaConstants.PRESERVATION_EVENT_LINKING_AGENT_IDENTIFIER));
  final List<String> outcomes=objectToListString(doc.get(RodaConstants.PRESERVATION_EVENT_LINKING_OUTCOME_OBJECT_IDENTIFIER));
  final List<String> sources=objectToListString(doc.get(RodaConstants.PRESERVATION_EVENT_LINKING_SOURCE_OBJECT_IDENTIFIER));
  ipe.setEventDateTime(eventDateTime);
  ipe.setEventDetail(eventDetail);
  ipe.setEventType(eventType);
  ipe.setEventOutcome(eventOutcome);
  try {
    List<LinkingIdentifier> ids=new ArrayList<>();
    for (    String source : sources) {
      ids.add(JsonUtils.getObjectFromJson(source,LinkingIdentifier.class));
    }
    ipe.setSourcesObjectIds(ids);
  }
 catch (  GenericException|RuntimeException e) {
    LOGGER.error("String_Node_Str",e);
  }
  try {
    List<LinkingIdentifier> ids=new ArrayList<>();
    for (    String outcome : outcomes) {
      ids.add(JsonUtils.getObjectFromJson(outcome,LinkingIdentifier.class));
    }
    ipe.setOutcomeObjectIds(ids);
  }
 catch (  GenericException|RuntimeException e) {
    LOGGER.error("String_Node_Str",e);
  }
  try {
    List<LinkingIdentifier> ids=new ArrayList<>();
    for (    String agent : agents) {
      ids.add(JsonUtils.getObjectFromJson(agent,LinkingIdentifier.class));
    }
    ipe.setLinkingAgentIds(ids);
  }
 catch (  GenericException|RuntimeException e) {
    LOGGER.error("String_Node_Str",e);
  }
  return ipe;
}

Fixed version (ground truth):
private static IndexedPreservationEvent solrDocumentToIndexedPreservationEvent(SolrDocument doc){
  final String id=objectToString(doc.get(RodaConstants.INDEX_UUID),null);
  final String aipId=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_AIP_ID),null);
  final String representationUUID=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_REPRESENTATION_UUID),null);
  final String fileUUID=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_FILE_UUID),null);
  IndexedPreservationEvent ipe=new IndexedPreservationEvent();
  ipe.setId(id);
  ipe.setAipID(aipId);
  ipe.setRepresentationUUID(representationUUID);
  ipe.setFileUUID(fileUUID);
  String objectClass=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_OBJECT_CLASS),null);
  if (StringUtils.isNotBlank(objectClass)) {
    ipe.setObjectClass(PreservationMetadataEventClass.valueOf(objectClass.toUpperCase()));
  }
  final Date eventDateTime=objectToDate(doc.get(RodaConstants.PRESERVATION_EVENT_DATETIME));
  final String eventDetail=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_DETAIL),"String_Node_Str");
  final String eventType=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_TYPE),"String_Node_Str");
  final String eventOutcome=objectToString(doc.get(RodaConstants.PRESERVATION_EVENT_OUTCOME),"String_Node_Str");
  final List<String> agents=objectToListString(doc.get(RodaConstants.PRESERVATION_EVENT_LINKING_AGENT_IDENTIFIER));
  final List<String> outcomes=objectToListString(doc.get(RodaConstants.PRESERVATION_EVENT_LINKING_OUTCOME_OBJECT_IDENTIFIER));
  final List<String> sources=objectToListString(doc.get(RodaConstants.PRESERVATION_EVENT_LINKING_SOURCE_OBJECT_IDENTIFIER));
  ipe.setEventDateTime(eventDateTime);
  ipe.setEventDetail(eventDetail);
  ipe.setEventType(eventType);
  ipe.setEventOutcome(eventOutcome);
  try {
    List<LinkingIdentifier> ids=new ArrayList<>();
    for (    String source : sources) {
      ids.add(JsonUtils.getObjectFromJson(source,LinkingIdentifier.class));
    }
    ipe.setSourcesObjectIds(ids);
  }
 catch (  GenericException|RuntimeException e) {
    LOGGER.error("String_Node_Str",e);
  }
  try {
    List<LinkingIdentifier> ids=new ArrayList<>();
    for (    String outcome : outcomes) {
      ids.add(JsonUtils.getObjectFromJson(outcome,LinkingIdentifier.class));
    }
    ipe.setOutcomeObjectIds(ids);
  }
 catch (  GenericException|RuntimeException e) {
    LOGGER.error("String_Node_Str",e);
  }
  try {
    List<LinkingIdentifier> ids=new ArrayList<>();
    for (    String agent : agents) {
      ids.add(JsonUtils.getObjectFromJson(agent,LinkingIdentifier.class));
    }
    ipe.setLinkingAgentIds(ids);
  }
 catch (  GenericException|RuntimeException e) {
    LOGGER.error("String_Node_Str",e);
  }
  return ipe;
}