diff --git a/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageDisseminator.java b/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageDisseminator.java index 3120fb1545..e81e797fc0 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageDisseminator.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageDisseminator.java @@ -114,73 +114,77 @@ public abstract class AbstractPackageDisseminator //try to disseminate the first object using provided PackageDisseminator disseminate(context, dso, params, pkgFile); - //add to list of successfully disseminated packages - addToPackageList(pkgFile); - - //We can only recursively disseminate non-Items - //(NOTE: Items have no children, as Bitstreams/Bundles are created from Item packages) - if(dso.getType()!=Constants.ITEM) + //check if package was disseminated + if(pkgFile.exists()) { - //Determine where first file package was disseminated to, as all - //others will be written to same directory - String pkgDirectory = pkgFile.getCanonicalFile().getParent(); - if(!pkgDirectory.endsWith(File.separator)) + //add to list of successfully disseminated packages + addToPackageList(pkgFile); + + //We can only recursively disseminate non-Items + //(NOTE: Items have no children, as Bitstreams/Bundles are created from Item packages) + if(dso.getType()!=Constants.ITEM) { - pkgDirectory += File.separator; - } - String fileExtension = PackageUtils.getFileExtension(pkgFile.getName()); + //Determine where first file package was disseminated to, as all + //others will be written to same directory + String pkgDirectory = pkgFile.getCanonicalFile().getParent(); + if(!pkgDirectory.endsWith(File.separator)) + { + pkgDirectory += File.separator; + } + String fileExtension = PackageUtils.getFileExtension(pkgFile.getName()); - //recursively disseminate content, based on object type - switch (dso.getType()) - { - case Constants.COLLECTION : - //Also find all Items in this Collection and disseminate - Collection collection = (Collection) dso; - ItemIterator iterator = collection.getAllItems(); - while(iterator.hasNext()) - { - Item item = iterator.next(); + //recursively disseminate content, based on object type + switch (dso.getType()) + { + case Constants.COLLECTION : + //Also find all Items in this Collection and disseminate + Collection collection = (Collection) dso; + ItemIterator iterator = collection.getAllItems(); + while(iterator.hasNext()) + { + Item item = iterator.next(); - //disseminate all items (recursively!) - String childFileName = pkgDirectory + PackageUtils.getPackageName(item, fileExtension); - disseminateAll(context, item, params, new File(childFileName)); - } + //disseminate all items (recursively!) + String childFileName = pkgDirectory + PackageUtils.getPackageName(item, fileExtension); + disseminateAll(context, item, params, new File(childFileName)); + } - break; - case Constants.COMMUNITY : - //Also find all SubCommunities in this Community and disseminate - Community community = (Community) dso; - Community[] subcommunities = community.getSubcommunities(); - for(int i=0; i