diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java b/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java index ae7815e89c..5311907162 100644 --- a/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java @@ -26,6 +26,7 @@ import ubic.gemma.model.genome.Taxon; import javax.annotation.Nullable; +import java.lang.reflect.Modifier; import java.net.URI; import java.util.Collection; import java.util.List; @@ -105,6 +106,9 @@ public EntityUrl entity( T entity ) { } public EntityUrl entity( Class entityType, Long id ) { + if ( Modifier.isAbstract( entityType.getModifiers() ) ) { + throw new UnsupportedEntityUrlException( "Cannot generate a URL for abstract entity type " + entityType.getSimpleName() + ".", entityType ); + } T entity = BeanUtils.instantiate( entityType ); if ( entity instanceof AbstractIdentifiable ) { ( ( AbstractIdentifiable ) entity ).setId( id ); diff --git a/gemma-core/src/test/java/ubic/gemma/persistence/util/EntityUrlBuilderTest.java b/gemma-core/src/test/java/ubic/gemma/persistence/util/EntityUrlBuilderTest.java index 9085bf9690..9886bece0d 100644 --- a/gemma-core/src/test/java/ubic/gemma/persistence/util/EntityUrlBuilderTest.java +++ b/gemma-core/src/test/java/ubic/gemma/persistence/util/EntityUrlBuilderTest.java @@ -1,6 +1,7 @@ package ubic.gemma.persistence.util; import org.junit.Test; +import ubic.gemma.model.blacklist.BlacklistedEntity; import ubic.gemma.model.common.description.Characteristic; import ubic.gemma.model.expression.arrayDesign.ArrayDesign; import ubic.gemma.model.expression.experiment.ExpressionExperiment; @@ -81,4 +82,9 @@ public void testFactorValueOntologyUrl() { c.setValueUri( "http://purl.obolibrary.org/ont/NCBITaxon_9606" ); assertThrows( UnsupportedEntityUrlException.class, () -> entityUrlBuilder.fromHostUrl().entity( c ).ont().toUriString() ); } + + @Test + public void testAbstractEntityType() { + assertThrows( UnsupportedEntityUrlException.class, () -> entityUrlBuilder.fromHostUrl().entity( BlacklistedEntity.class, 1L ) ); + } } \ No newline at end of file