Project

General

Profile

« Previous | Next » 

Revision 5a308801

Added by Patrick Plitzner about 6 years ago

fix #7030 Fix potential NPE

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java
30 30
import org.eclipse.ui.PartInitException;
31 31
import org.eclipse.ui.handlers.HandlerUtil;
32 32

  
33
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
33 34
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
34 35
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
35 36
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
......
307 308
	 * @return either a FieldUnit or a the topmost DerivedUnit (which can be itself)
308 309
	 */
309 310
	public static SpecimenOrObservationBase<?> getTopMostDerivate(SpecimenOrObservationBase<?> specimen){
311
	    if(specimen==null){
312
	        return null;
313
	    }
310 314
	    if(specimen.isInstanceOf(FieldUnit.class)){
311 315
	        return specimen;
312 316
	    }
313
	    else if(specimen instanceof DerivedUnit
314
	            && ((DerivedUnit) specimen).getOriginals()!=null
315
	            && !((DerivedUnit) specimen).getOriginals().isEmpty()){
316
	        for(SpecimenOrObservationBase<?> original:((DerivedUnit) specimen).getOriginals()){
317
	            return getTopMostDerivate(original);
317
	    else if(specimen.isInstanceOf(DerivedUnit.class)){
318
	        DerivedUnit derivedUnit = HibernateProxyHelper.deproxy(specimen, DerivedUnit.class);
319
	        if(derivedUnit.getOriginals()!=null
320
	                && !(derivedUnit.getOriginals().isEmpty())){
321
	            for(SpecimenOrObservationBase<?> original:((DerivedUnit) specimen).getOriginals()){
322
	                return getTopMostDerivate(original);
323
	            }
318 324
	        }
319
	        //needed to add this for compilation although this is unreachable
320
	        return specimen;
321
	    }
322
	    else{
323
	        return specimen;
324 325
	    }
326
	    return specimen;
325 327
	}
326 328

  
327 329
    /**

Also available in: Unified diff