ref #5616 Fix possible NPE for BulkEditor inputs
authorPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 8 Aug 2016 14:35:04 +0000 (16:35 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 8 Aug 2016 14:35:04 +0000 (16:35 +0200)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/MediaEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java

index cb0b8710d9ec92e0fdca6bc1fc39acfe97363c7c..ee8a765bb533f00fac5c96ad6924c395dce9adaa 100644 (file)
@@ -10,7 +10,6 @@
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 import java.util.ArrayList;
 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;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -59,8 +58,6 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
        private IEntityCreator<T> entityCreator;
        private final ConversationHolder conversation;
 
        private IEntityCreator<T> entityCreator;
        private final ConversationHolder conversation;
 
-       private static Class serviceClass;
-
        public AbstractBulkEditorInput() {
            super(true);
            this.conversation = CdmStore.createConversation();
        public AbstractBulkEditorInput() {
            super(true);
            this.conversation = CdmStore.createConversation();
@@ -103,16 +100,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
         */
        protected abstract List<T> listEntities(IIdentifiableEntityServiceConfigurator configurator);
 
         */
        protected abstract List<T> listEntities(IIdentifiableEntityServiceConfigurator configurator);
 
-       /**
-        * <p>loadEntity</p>
-        *
-        * @param entityUuid a {@link java.util.UUID} object.
-        * @return a T object.
-        */
-       protected T loadEntity(UUID entityUuid) {
-               List<String> 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;
 
        private void setEntityUuid(UUID entityUuid){
                this.entityUuid = entityUuid;
index f7f65de9f095b112fbc3e781544aba790d752daf..26e12964f5873fec932eb26d4696a3974158161d 100644 (file)
@@ -9,11 +9,14 @@
 */
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 */
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
 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.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;
 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<TeamOrPersonBase>
     }
 
 
     }
 
 
+       @Override
+       protected TeamOrPersonBase loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), TeamOrPersonBase.class);
+       }
+
+
+
 }
 }
index 0082939986a984d95527749de20bf64d7bfb53ca..b868562441ad299f4c0f05c82c9475019e00d6d4 100644 (file)
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
 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.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;
 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<Group> {
 
     }
 
 
     }
 
+       @Override
+       protected Group loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), Group.class);
+       }
+
 
 
 }
 
 
 }
index 6f3ccb262a399b5797e9cf26170e2b5d539526d7..2af42543a735e2914c44d81378a94a1cfd7236be 100644 (file)
@@ -9,7 +9,9 @@
 */
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 */
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IMediaService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 
 import eu.etaxonomy.cdm.api.service.IMediaService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -91,4 +93,11 @@ public class MediaEditorInput extends AbstractBulkEditorInput<Media> {
 
         return sortProviders;
     }
 
         return sortProviders;
     }
+    
+       @Override
+       protected Media loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(IMediaService.class).load(entityUuid, propertyPaths);
+       }
+
 }
 }
index 51568f5cb3226443348f0dd49c99e4998f79ddfb..1cc24918e01040056414c335df3a52e1661c33e5 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
@@ -180,6 +179,13 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
 
     }
 
 
     }
 
+       @Override
+       protected TaxonNameBase loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(INameService.class).load(entityUuid, getPropertyPaths());
+       }
+
+
     private List<String> getPropertyPaths(){
         List<String> nameBasePropertyPaths = Arrays.asList(new String[] {
         "name.descriptions",
     private List<String> getPropertyPaths(){
         List<String> nameBasePropertyPaths = Arrays.asList(new String[] {
         "name.descriptions",
index 929379d2731220a67cd558a7815b56545c18e923..5f20772409c7e74d718ec3a9dcd14df23ff008cc 100644 (file)
@@ -10,7 +10,9 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -173,4 +175,11 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
     public void merge() {
 
     }
     public void merge() {
 
     }
+
+       @Override
+       protected SpecimenOrObservationBase loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(IOccurrenceService.class).load(entityUuid, propertyPaths);
+       }
+
 }
 }
index 72dd138a4fc45db2581d631c2517b9b69ec6a1ae..46ce65fbe542e10062963e7833f759ecd0224c6f 100644 (file)
@@ -10,7 +10,9 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 
 import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -121,6 +123,14 @@ public class UserEditorInput extends AbstractBulkEditorInput<User> {
     public void merge() {
 
     }
     public void merge() {
 
     }
+    
+
+       @Override
+       protected User loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(IUserService.class).load(entityUuid, propertyPaths);
+       }
+
 
 
 }
 
 
 }