Architecture

Third Party Frameworks

Brix is built on top of the following third-party frameworks.

Apache Wicket

Apache Wicket is a component-based Java Web Framework. Page and Tile rendering and management are handed by Wicket. Brix’s primary management interface is actually a Wicket Panel, which can be easily dropped into any Wicket application.

Apache Jackrabbit

Apache Jackrabbit is an implementation of the Java Content Repository (JCR) specification. Brix uses JCR to store site data. JCR also provides a WebDAV interface for managing site data.

Brix Framework

Brix Core

The core provides the glue necessary to bootstrap and connect Brix into the Wicket application. It also provides an administration panel to which plugins can contribute plugin-specific administration dialogues.

Brix JCR Wrapper

A thin API wrapper around the existing JCR specification. It provides two convenient things:

  • Translates JCR’s checked exceptions API model into one with unchecked exceptions.
  • Provides ability to intercept certain JCR API calls via brix.jcr.api.JcrSession#Behavior interface.

Brix Workspace Manager

Abstraction for dealing with JCR workspaces. It provides two pieces of functionality:

  • An interface with repository-specific implementations of workspace-related functionality such as creation, deletion, etc.
  • Ability to store properties/metadata along with the workspace and a quick lookup index. Brix uses a lot of workspaces: Brix can be used to host multiple websites, each website is represented as a series of workspaces. The lookup index provided by WorkspaceManager makes it quick query for a workspace based on metadata associated with it.
  • Extension Point Registry
  • Mechanism for registering various plugins into the Brix ecosystem.

Standard Plugins

Brix provides several built-in plugins.

Site Plugin

Provides core CMS functionality. This plugin provides support for the basic CMS artifacts discussed below and acts as the glue between JCR nodes and the browser.

  • Resources are raw files stored in the JCR and are streamed directly to the browser.
  • Templates act as page decorators/borders and are meant to build a skin/template for the website. Templates can contain Tiles and make use of Variables. – Templates are special instances of Pages.
  • Pages represent actual web pages that comprise a web site. Unlike Resources, Pages can contain Tiles and Variables. Pages can also specify which Template they would like to use.
  • Tiles are dynamic parts of a web page. Tiles can be used to displaying anything from the current time to a blog or a forum. Tiles are self contained and provide both the view and administrative representations. Tiles can be global or attached to a specific Page or Template.
  • Variables provide basic snippet functionality. Like Tiles, Variables can be global or assigned to a specific Page or Template.

Snapshot Plugin

Provides backup/restore and import/export functionality for the entire site. Any number of snapshots can be made and tracked. The export and import work via an XML file generated by the underlying JCR implementation’s XML export functionality.

Prototype Plugin

This plugin provides a way to template the entire site. Any part of an existing site can be moved into a globally available prototype? section, and then restore onto any other site.

Publisher Plugin

This plugin provides basic site-wide publishing support. The plugin allows the site to be moved between three workspaces: development, staging, production. This provides a simple, yet effective, workflow for content publishing.

Menu Plugin

Allows for creating site menus and sitemaps.

This is a unique website which will require a more modern browser to work!

Please upgrade today!