From 222d6e76f20602bf44705966308040230c08ec5f Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Mon, 8 Aug 2016 16:35:04 +0200 Subject: [PATCH] ref #5616 Fix possible NPE for BulkEditor inputs --- .../bulkeditor/input/AbstractBulkEditorInput.java | 14 +------------- .../bulkeditor/input/AgentEditorInput.java | 11 +++++++++++ .../bulkeditor/input/GroupEditorInput.java | 10 ++++++++++ .../bulkeditor/input/MediaEditorInput.java | 9 +++++++++ .../bulkeditor/input/NameEditorInput.java | 8 +++++++- .../bulkeditor/input/OccurrenceEditorInput.java | 9 +++++++++ .../bulkeditor/input/UserEditorInput.java | 10 ++++++++++ 7 files changed, 57 insertions(+), 14 deletions(-) diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java index cb0b8710d..ee8a765bb 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java @@ -10,7 +10,6 @@ package eu.etaxonomy.taxeditor.bulkeditor.input; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -59,8 +58,6 @@ public abstract class AbstractBulkEditorInput extends CdmEnt private IEntityCreator entityCreator; private final ConversationHolder conversation; - private static Class serviceClass; - public AbstractBulkEditorInput() { super(true); this.conversation = CdmStore.createConversation(); @@ -103,16 +100,7 @@ public abstract class AbstractBulkEditorInput extends CdmEnt */ protected abstract List listEntities(IIdentifiableEntityServiceConfigurator configurator); - /** - *

loadEntity

- * - * @param entityUuid a {@link java.util.UUID} object. - * @return a T object. - */ - protected T loadEntity(UUID entityUuid) { - List propertyPaths = Arrays.asList(new String[]{}); - return (T) CdmStore.getService(serviceClass).load(entityUuid, propertyPaths); - } + protected abstract T loadEntity(UUID entityUuid); private void setEntityUuid(UUID entityUuid){ this.entityUuid = entityUuid; diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java index f7f65de9f..26e12964f 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java @@ -9,11 +9,14 @@ */ package eu.etaxonomy.taxeditor.bulkeditor.input; +import java.util.Arrays; import java.util.List; +import java.util.UUID; import eu.etaxonomy.cdm.api.service.IAgentService; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException; +import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.agent.AgentBase; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; @@ -171,4 +174,12 @@ public class AgentEditorInput extends AbstractBulkEditorInput } + @Override + protected TeamOrPersonBase loadEntity(UUID entityUuid) { + List propertyPaths = Arrays.asList(new String[]{}); + return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), TeamOrPersonBase.class); + } + + + } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java index 008293998..b86856244 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java @@ -10,11 +10,15 @@ package eu.etaxonomy.taxeditor.bulkeditor.input; +import java.util.Arrays; import java.util.List; +import java.util.UUID; +import eu.etaxonomy.cdm.api.service.IAgentService; import eu.etaxonomy.cdm.api.service.IGroupService; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException; +import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.Group; import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator; import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.GroupCreator; @@ -120,6 +124,12 @@ public class GroupEditorInput extends AbstractBulkEditorInput { } + @Override + protected Group loadEntity(UUID entityUuid) { + List propertyPaths = Arrays.asList(new String[]{}); + return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), Group.class); + } + } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/MediaEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/MediaEditorInput.java index 6f3ccb262..2af42543a 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/MediaEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/MediaEditorInput.java @@ -9,7 +9,9 @@ */ package eu.etaxonomy.taxeditor.bulkeditor.input; +import java.util.Arrays; import java.util.List; +import java.util.UUID; import eu.etaxonomy.cdm.api.service.IMediaService; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; @@ -91,4 +93,11 @@ public class MediaEditorInput extends AbstractBulkEditorInput { return sortProviders; } + + @Override + protected Media loadEntity(UUID entityUuid) { + List propertyPaths = Arrays.asList(new String[]{}); + return CdmStore.getService(IMediaService.class).load(entityUuid, propertyPaths); + } + } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java index 51568f5cb..1cc24918e 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java @@ -10,7 +10,6 @@ package eu.etaxonomy.taxeditor.bulkeditor.input; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; @@ -180,6 +179,13 @@ public class NameEditorInput extends AbstractBulkEditorInput { } + @Override + protected TaxonNameBase loadEntity(UUID entityUuid) { + List propertyPaths = Arrays.asList(new String[]{}); + return CdmStore.getService(INameService.class).load(entityUuid, getPropertyPaths()); + } + + private List getPropertyPaths(){ List nameBasePropertyPaths = Arrays.asList(new String[] { "name.descriptions", diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java index 929379d27..5f2077240 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java @@ -10,7 +10,9 @@ package eu.etaxonomy.taxeditor.bulkeditor.input; +import java.util.Arrays; import java.util.List; +import java.util.UUID; import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; @@ -173,4 +175,11 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput propertyPaths = Arrays.asList(new String[]{}); + return CdmStore.getService(IOccurrenceService.class).load(entityUuid, propertyPaths); + } + } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java index 72dd138a4..46ce65fbe 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java @@ -10,7 +10,9 @@ package eu.etaxonomy.taxeditor.bulkeditor.input; +import java.util.Arrays; import java.util.List; +import java.util.UUID; import eu.etaxonomy.cdm.api.service.IUserService; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; @@ -121,6 +123,14 @@ public class UserEditorInput extends AbstractBulkEditorInput { public void merge() { } + + + @Override + protected User loadEntity(UUID entityUuid) { + List propertyPaths = Arrays.asList(new String[]{}); + return CdmStore.getService(IUserService.class).load(entityUuid, propertyPaths); + } + } -- 2.34.1