avoid NPE in derivate label provider
authorKatja Luther <k.luther@bgbm.org>
Thu, 6 Apr 2017 08:56:14 +0000 (10:56 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 6 Apr 2017 08:56:14 +0000 (10:56 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java

index 6559248f4ad79f4081ce31fe6816f74019ab1c70..7ca576b65ad48511ee33eb4914f9e63e38375f94 100644 (file)
@@ -150,6 +150,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
         if(element instanceof FieldUnit){
             return ((FieldUnit) element).getTitleCache();
         }
+
         else if(element instanceof MediaSpecimen){
             text = CdmFormatterFactory.format(element,
                     new FormatKey[]{
@@ -189,6 +190,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
             });
         }
         else if(element instanceof IdentifiableEntity){
+
                IdentifiableEntity identifiableEntity = (IdentifiableEntity) element;
                if(identifiableEntity.isProtectedTitleCache()){
                        text = identifiableEntity.getTitleCache();
@@ -495,9 +497,15 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
         if(rootElements!=null){
             Collection<DerivedUnit> derivedUnits = new ArrayList<DerivedUnit>();
             for (SpecimenOrObservationBase specimenOrObservationBase : rootElements) {
-                derivedUnits.addAll(CdmStore.getService(IOccurrenceService.class).getAllChildDerivatives(specimenOrObservationBase.getUuid()));
+                List<DerivedUnit> childUnits = CdmStore.getService(IOccurrenceService.class).getAllChildDerivatives(specimenOrObservationBase.getUuid());
+                if (childUnits != null){
+                    derivedUnits.addAll(childUnits);
+                }
                 if(specimenOrObservationBase.isInstanceOf(DerivedUnit.class)){
-                    derivedUnits.add(HibernateProxyHelper.deproxy(specimenOrObservationBase, DerivedUnit.class));
+                    specimenOrObservationBase = CdmStore.getService(IOccurrenceService.class).load(specimenOrObservationBase.getUuid());
+                    if (specimenOrObservationBase != null){
+                        derivedUnits.add(HibernateProxyHelper.deproxy(specimenOrObservationBase, DerivedUnit.class));
+                    }
                 }
             }
             for (DerivedUnit derivedUnit : derivedUnits) {