Extensibility

Bloomreach Content is designed to support a wide range of implementation requirements. Extensibility is a core attribute of its architecture. Rather than providing a solution for every use case, Bloomreach Content offers an extensible platform that you can adapt to meet specific project needs.

Delivery Framework Extension Points

The delivery framework in Bloomreach Content includes extension points across all major architectural areas. Each major component exposes interfaces, abstract base classes, and standard implementations that you can extend. The framework follows an inversion of control design, allowing you to substitute components through Spring configuration or by updating configuration in the content repository.

MVC Components

The delivery framework uses the Hierarchical Model-View-Controller (HMVC) pattern for page rendering. Models, known as content beans, and controllers, known as components, are interface-based. You can extend or substitute these interfaces as needed. Many use cases can be addressed by configuring or extending the available standard components. If required, you can implement components from scratch.

Views are rendered using templating engines. Both Freemarker and JSP are supported by default. The standard tag library is also extensible.

HippoBean and document bean extensibility inheritance diagram

Diagram: This UML diagram shows how content beans can be extended. HippoItem is extended by HippoDocument, which is further extended by a custom BaseDocument class. BaseDocument is then extended by NewsArticle, Product, and BlogPost. The HippoBean interface is extended by HippoDocumentBean. Dashed arrows indicate interface implementation. This structure enables custom document classes to inherit from shared base classes while integrating with the standard HippoBean and HippoDocumentBean model.

HMVC model extension using the HippoBean interface.

HstComponent inheritance diagram for extensible HMVC components

Diagram: This UML diagram illustrates the inheritance hierarchy for HST components. GenericHstComponent implements the HstComponent interface. BaseHstComponent extends GenericHstComponent. CommonComponent extends BaseHstComponent. Standard components such as Essentials ListComponent, Essentials DocumentComponent, and Essentials MenuComponent extend from CommonComponent. Essentials SearchComponent extends Essentials ListComponent. Custom components, such as ProductReviews Component and MyBlogPost Component, extend Essentials ListComponent and Essentials DocumentComponent, respectively. This structure allows you to build custom controllers on top of shared base and standard component classes.

HMVC controller standard components extension.

Request Handling

Both the matching and processing phases of request handling in the delivery framework are extensible.

During the matching phase, URLs are matched to sitemap items, which define the page component configuration and content to render. You can extend this behavior using sitemap item handlers. Handlers can modify request attributes, add response headers or cookies, return a different sitemap item, or delegate the request to another servlet.

UML diagram of HstSiteMapItemHandler extension hierarchy

Diagram: This UML diagram shows the extension hierarchy for sitemap item handlers. HstSiteMapItemHandler is implemented by AbstractHstSiteMapItemHandler, which is extended by MyCustomSiteMapItemHandler. FilterChainAwareHstSiteMapHandler extends HstSiteMapItemHandler, is implemented by AbstractFilterChainAwareHstSiteMapItemHandler, which is extended by MyDelegatingSiteMapItemHandler. Dashed arrows indicate interface implementation; solid arrows indicate inheritance. This structure supports custom sitemap item handler implementations.

Request matching extension using the HstSiteMapItemHandler interface.

In the processing phase, a pipeline of valves handles responsibilities such as security, localization, content retrieval, component rendering, page aggregation, and caching. The framework provides standard pipelines for HMVC-based web page rendering and JAX-RS-based RESTful services. Pipelines use inversion of control and are assembled through Spring configuration. You can extend request processing by adding custom valves at any point in the pipeline.

UML diagram of Valve and OrderableValve inheritance hierarchy

Diagram: This UML diagram shows the relationship between the Valve and OrderableValve interfaces and their implementations. OrderableValve extends Valve. AbstractValve implements Valve, and AbstractOrderableValve implements OrderableValve and extends AbstractValve. MyCustomValve extends AbstractOrderableValve. This structure allows you to add custom request-processing valves using the orderable valve abstraction.

Request processing extension using the OrderableValve interface.

RESTful Services

The delivery framework includes JAX-RS support, allowing you to define custom REST endpoints. This enables integration with external systems and supports content-as-a-service (CaaS) scenarios.

Experience Manager Open UI Extension Points

Open UI extension points allow you to extend the Experience Manager user interface, which marketers and webmasters use to manage delivery channels. Currently, you can add custom page tools to the Experience Manager. Future releases will introduce additional extension points.

Share Feedback
Page: /about/why-brxm/extensibility
Section: About
Category *