From 54c7f5a3bddb6879b6988bb3cde329f21842e6a0 Mon Sep 17 00:00:00 2001 From: KevinVdV Date: Wed, 28 Jan 2015 16:25:14 +0100 Subject: [PATCH] [DS-2131] SWORDv2 ingestion fails with NullPointerException when replacing a non archived item --- .../packager/AbstractMETSIngester.java | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java b/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java index 69f995e287..c79e093c51 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java @@ -21,15 +21,7 @@ import java.util.zip.ZipFile; import org.apache.log4j.Logger; import org.dspace.authorize.AuthorizeException; -import org.dspace.content.Bitstream; -import org.dspace.content.BitstreamFormat; -import org.dspace.content.Bundle; -import org.dspace.content.Collection; -import org.dspace.content.Community; -import org.dspace.content.DSpaceObject; -import org.dspace.content.FormatIdentifier; -import org.dspace.content.Item; -import org.dspace.content.WorkspaceItem; +import org.dspace.content.*; import org.dspace.content.crosswalk.CrosswalkException; import org.dspace.content.crosswalk.MetadataValidationException; import org.dspace.core.ConfigurationManager; @@ -37,6 +29,8 @@ import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.core.LogManager; import org.dspace.handle.HandleManager; +import org.dspace.workflow.WorkflowItem; +import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem; import org.jdom.Element; /** @@ -660,8 +654,24 @@ public abstract class AbstractMETSIngester extends AbstractPackageIngester addBitstreams(context, item, manifest, pkgFile, params, callback); // have subclass manage license since it may be extra package file. - addLicense(context, item, license, (Collection) dso - .getParentObject(), params); + Collection owningCollection = (Collection) dso.getParentObject(); + if(owningCollection == null) + { + //We are probably dealing with an item that isn't archived yet + InProgressSubmission inProgressSubmission = WorkspaceItem.findByItem(context, item); + if(inProgressSubmission == null) + { + if (ConfigurationManager.getProperty("workflow", "workflow.framework").equals("xmlworkflow")) + { + inProgressSubmission = XmlWorkflowItem.findByItem(context, item); + }else{ + inProgressSubmission = WorkflowItem.findByItem(context, item); + } + } + owningCollection = inProgressSubmission.getCollection(); + } + + addLicense(context, item, license, owningCollection, params); // FIXME ? // should set lastModifiedTime e.g. when ingesting AIP.