diff --git a/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java index 03c57a0b97..3b22027a84 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java @@ -1840,6 +1840,7 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea List finalCollections = null; if (theOwningCollection != null){ + finalCollections = new ArrayList<>(); finalCollections.add(theOwningCollection); finalCollections.addAll(collectionList); } diff --git a/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java b/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java index 46def3b8f2..b36134b9ed 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java @@ -99,7 +99,11 @@ public class EPersonServiceImpl extends DSpaceObjectServiceImpl impleme @Override public List search(Context context, String query) throws SQLException { - if(StringUtils.isBlank(query)) query = null; + if(StringUtils.isBlank(query)) + { + //If we don't have a query, just return everything. + return findAll(context, EPerson.EMAIL); + } return search(context, query, -1, -1); } @@ -116,7 +120,10 @@ public class EPersonServiceImpl extends DSpaceObjectServiceImpl impleme } catch(IllegalArgumentException e) { MetadataField firstNameField = metadataFieldService.findByElement(context, "eperson", "firstname", null); MetadataField lastNameField = metadataFieldService.findByElement(context, "eperson", "lastname", null); - if (StringUtils.isBlank(query)) query = null; + if (StringUtils.isBlank(query)) + { + query = null; + } return ePersonDAO.search(context, query, Arrays.asList(firstNameField, lastNameField), Arrays.asList(firstNameField, lastNameField), offset, limit); } } diff --git a/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java b/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java index 5b086a699b..338619f97b 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java +++ b/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java @@ -227,7 +227,11 @@ public class MetadataConverterPlugin implements ConverterPlugin } config.read(is, "file://" + mappingPath, FileUtils.guessLang(mappingPath)); try { - is.close(); + // Make sure that we have an input stream to avoid NullPointer + if(is != null) + { + is.close(); + } } catch (IOException ex) { diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java index 2cfdc9aee0..7db7011ffa 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java @@ -14,10 +14,7 @@ import gr.ekt.bte.core.Value; import gr.ekt.bte.exceptions.MalformedSourceException; import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpException; @@ -78,7 +75,7 @@ public abstract class NetworkSubmissionLookupDataLoader implements : null; String year = getSearchTerms().get("year") != null ? getSearchTerms() .get("year").iterator().next() - : null; + : String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); int yearInt = Integer.parseInt(year); results = search(null, title, authors, yearInt); } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java index d4adbc4250..4b326e0e19 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java @@ -361,7 +361,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService { e.printStackTrace(); } finally { - if((nextStep != null && nextActionConfig != null) || wfi.getItem().isArchived()){ + if((nextStep != null && currentStep != null && nextActionConfig != null) || (wfi.getItem().isArchived() && currentStep != null)){ logWorkflowEvent(c, currentStep.getWorkflow().getID(), currentStep.getId(), currentActionConfig.getId(), wfi, user, nextStep, nextActionConfig); } } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AssignOriginalSubmitterAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AssignOriginalSubmitterAction.java index cf29c29506..60cfae2bb4 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AssignOriginalSubmitterAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AssignOriginalSubmitterAction.java @@ -95,6 +95,12 @@ public class AssignOriginalSubmitterAction extends UserSelectionAction{ while(nextAction != null && !nextAction.requiresUI()){ nextAction = nextAction.getStep().getNextAction(nextAction); } + if(nextAction == null) + { + //Should never occur, but just in case + log.error("Could not find next action for step with id: " + step.getId() + " to assign a submitter to. Aborting the action."); + throw new IllegalStateException(); + } createTaskForEPerson(c, wfi, step, nextAction, submitter); diff --git a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RequestItemServlet.java b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RequestItemServlet.java index c36357a355..9c300c0fbe 100644 --- a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RequestItemServlet.java +++ b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RequestItemServlet.java @@ -311,14 +311,16 @@ public class RequestItemServlet extends DSpaceServlet { Item item = requestItem.getItem(); String title = ""; + String handle = ""; if (item != null) { title = itemService.getMetadataFirstValue(item, "dc", "title", null, Item.ANY); if (title == null) { title = ""; } + handle = item.getHandle(); } request.setAttribute("request-name", requestItem.getReqName()); - request.setAttribute("handle", item.getHandle()); + request.setAttribute("handle", handle); request.setAttribute("title", title); JSPManager.showJSP(request, response, diff --git a/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadStep.java b/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadStep.java index cf38b99f36..eaa71cccfb 100644 --- a/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadStep.java +++ b/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadStep.java @@ -217,11 +217,11 @@ public class JSPUploadStep extends JSPStep size = bitstream.getSize(); url = request.getContextPath() + "/retrieve/" + bitstreamID + "/" + UIUtil.encodeBitstreamName(bitstreamName); + jsonResponse.addUploadFileStatus(bitstreamName, bitstreamID, size, + url, status); + response.getWriter().print(gson.toJson(jsonResponse)); + response.flushBuffer(); } - jsonResponse.addUploadFileStatus(bitstreamName, bitstreamID, size, - url, status); - response.getWriter().print(gson.toJson(jsonResponse)); - response.flushBuffer(); return; } diff --git a/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadWithEmbargoStep.java b/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadWithEmbargoStep.java index c35e6ae5af..115fd32b32 100644 --- a/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadWithEmbargoStep.java +++ b/dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPUploadWithEmbargoStep.java @@ -143,11 +143,11 @@ public class JSPUploadWithEmbargoStep extends JSPUploadStep size = bitstream.getSize(); url = request.getContextPath() + "/retrieve/" + bitstreamID + "/" + UIUtil.encodeBitstreamName(bitstreamName); + jsonResponse.addUploadFileStatus(bitstreamName, bitstreamID, size, + url, status); + response.getWriter().print(gson.toJson(jsonResponse)); + response.flushBuffer(); } - jsonResponse.addUploadFileStatus(bitstreamName, bitstreamID, size, - url, status); - response.getWriter().print(gson.toJson(jsonResponse)); - response.flushBuffer(); return; } diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/api/CollectionsService.java b/dspace-oai/src/main/java/org/dspace/xoai/services/api/CollectionsService.java index 398a1aab6f..e1454f8100 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/api/CollectionsService.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/api/CollectionsService.java @@ -10,13 +10,14 @@ package org.dspace.xoai.services.api; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.Item; +import org.dspace.xoai.services.api.context.ContextService; import java.sql.SQLException; import java.util.List; import java.util.UUID; public interface CollectionsService { - List getAllSubCollections(UUID communityId) throws SQLException; + List getAllSubCollections(ContextService contextService, UUID communityId) throws SQLException; List flatParentCommunities(Collection collection) throws SQLException; List flatParentCommunities(Community community) throws SQLException; List flatParentCommunities(Item item) throws SQLException; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceCollectionsService.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceCollectionsService.java index 2143698239..231611a2c7 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceCollectionsService.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceCollectionsService.java @@ -25,12 +25,11 @@ import org.dspace.content.service.CommunityService; public class DSpaceCollectionsService implements CollectionsService { - private ContextService contextService; private static final CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); @Override - public List getAllSubCollections(UUID communityId) + public List getAllSubCollections(ContextService contextService, UUID communityId) throws SQLException { Queue comqueue = new LinkedList<>(); diff --git a/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java b/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java index 94b41d6b07..4e66c46d54 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java @@ -919,7 +919,6 @@ public class ItemsResource extends Resource // Must used own style. if ((metadata.length < 2) || (metadata.length > 3)) { - context.abort(); log.error("Finding failed, bad metadata key."); throw new WebApplicationException(Response.Status.NOT_FOUND); } diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/FlowAuthorizationUtils.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/FlowAuthorizationUtils.java index e6f1a229e7..6116ebfb75 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/FlowAuthorizationUtils.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/FlowAuthorizationUtils.java @@ -258,6 +258,9 @@ public class FlowAuthorizationUtils { .authorizeManageItemPolicy(context, (Item) (bitstreamService.getParentObject(context, (Bitstream) policyParent))); break; } + default: + //If we can't find a parent the policy will receive a NULL dspace object, this is not something we want. + throw new IllegalArgumentException("Invalid DSpaceObject type provided"); } policy = resourcePolicyService.create(context); policy.setdSpaceObject(policyParent); diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/item/EditItemMetadataForm.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/item/EditItemMetadataForm.java index db44b32261..1fafe34fed 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/item/EditItemMetadataForm.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/administrative/item/EditItemMetadataForm.java @@ -132,7 +132,7 @@ public class EditItemMetadataForm extends AbstractDSpaceTransformer { // Metadata editing is the only type of editing available for a template item. boolean editingTemplateItem = false; String templateCollectionID = parameters.getParameter("templateCollectionID", null); - Collection templateCollection = templateCollectionID != null ? null : collectionService.find(context, UUID.fromString(templateCollectionID)); + Collection templateCollection = templateCollectionID == null ? null : collectionService.find(context, UUID.fromString(templateCollectionID)); if (templateCollection != null) { Item templateItem = templateCollection.getTemplateItem(); @@ -144,7 +144,7 @@ public class EditItemMetadataForm extends AbstractDSpaceTransformer { // DIVISION: main Division main = body.addInteractiveDivision("edit-item-status", contextPath+"/admin/item", Division.METHOD_POST,"primary administrative item"); - if (editingTemplateItem) + if (templateCollection != null && editingTemplateItem) { main.setHead(T_template_head.parameterize(templateCollection.getName())); } diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java index faf6b717e4..7c92b240b9 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java @@ -273,9 +273,16 @@ public class ConfigurableBrowse extends AbstractDSpaceTransformer implements HttpServletResponse response = (HttpServletResponse)objectModel .get(HttpEnvironment.HTTP_RESPONSE_OBJECT); response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; } BrowseInfo info = getBrowseInfo(); + if(info == null) + { + HttpServletResponse response = (HttpServletResponse)objectModel.get(HttpEnvironment.HTTP_RESPONSE_OBJECT); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } String type = info.getBrowseIndex().getName(); diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseAction.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseAction.java index f948572763..f21600088e 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseAction.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseAction.java @@ -81,7 +81,7 @@ public class ItemRequestResponseAction extends AbstractAction String title; Item item = requestItem.getItem(); String titleDC = item.getName(); - if (titleDC != null || titleDC.length() > 0) + if (titleDC != null && titleDC.length() > 0) title=titleDC; else title="untitled"; diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseTrueForm.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseTrueForm.java index d540089a5d..f2bffe7a1c 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseTrueForm.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ItemRequestResponseTrueForm.java @@ -124,7 +124,7 @@ public class ItemRequestResponseTrueForm extends AbstractDSpaceTransformer imple String title; Item item = requestItem.getItem(); String titleDC = item.getName(); - if (titleDC != null || titleDC.length() > 0) + if (titleDC != null && titleDC.length() > 0) title = titleDC; else title = "untitled"; diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/handle/HandleResolverReader.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/handle/HandleResolverReader.java index dd7fd6c3b3..4d2311dc53 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/handle/HandleResolverReader.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/handle/HandleResolverReader.java @@ -142,6 +142,12 @@ public class HandleResolverReader extends AbstractReader implements Recyclable { log.error("SQLException: ", e); return; } + if(jsonString == null) + { + //No handle found bad request + resp.sendError(HttpServletResponse.SC_BAD_REQUEST); + return; + } try { ObjectModelHelper.getResponse(objectModel).setHeader("Content-Type", CONTENTTYPE);