Inheritance of classes works in Brightspot as expected in Java. Brightspot does not save instances of abstract classes, such as BaseArticle:

public abstract class BaseArticle extends Content {

    private String headline;
    private Author author;
    private bodyText;

    // Getters and Setters

Concrete classes extending an abstract class are available in Brightspot. For example, users can create new instances of the following NewsArticle concrete class.

public class NewsArticle extends BaseArticle {

    private List<String> newsKeywords;

    // Getters and Setters

The Brightspot UI reflects both the base fields and fields derived from parent classes, and allows you to search any of those fields.


The Dari framework provides functionality to assist you in working with inheritance relationships:

  • See Querying for information about searching on abstract classes. To use the above example, you could search on BaseArticle, and the Query API would return all instances that inherit from that base class.


Modifications provide the capability to add new fields to existing classes. They can be used to update classes for which you do not have the source. In addition, modifications can be the best solution for adding new fields to many classes, a solution that leverages Java inheritance.

For example, say that you want to add a logo image to all of the Content-derived classes on a site. You can add the logo field to each base class that derives from Content. Alternatively, you can create a Logo class that extends the Modification class. The target of the modification is Content, so the modification will impact all new and existing objects that inherit from Content.

public class Logo extends Modification<Content> {

   private StorageItem logoImage;
   private Date releaseDate;

   public StorageItem getLogoImage() {
     return logoImage;

   public void setLogoImage(StorageItem logoImage) {
     this.logoImage = logoImage;

   public Date getReleaseDate() {
     return releaseDate;

   public void setReleaseDate(Date date) {
     this.releaseDate = date;

The Brightspot UI reflects fields added via modification, for example:


See Modifications for more information.