Title: Creating a new Widget Renderer Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. The Apache Rave development team is striving to build rave-portal as a widget-agnostic mash-up engine. This means that a new widget provider can be added to Apache Rave with a few simple steps. ##1) Get Apache Rave There are multiple ways to build your custom Apache Rave instance, but the simplest is to use a Maven WAR overlay. See [Extending Rave](rave-extensions.html) for an example overlay. ##2) Define a custom web application context See [Adding a custom Application Context](custom-app-context.html) ##3) Add a widget renderer Add an implementation of org.apache.rave.portal.web.renderer.RegionWidgetRenderer to your custom application context. This renderer will get called during the page render process at the point in the page where the HTML markup for the widget is to be output. If your provider needs to add a script block to the render process, you can autowire in a reference to the [ScriptManager](script-manager.html). ##4) Add a widget provider js file If your widget provider has any javascript that needs to be executed to initialize the widget, you can define a widget provider javascript object. The javascript widget provider must have a TYPE property and an initWidget function as documented in rave.js's registerProvider function. The easiest way to add a new widget provider javascript file is to create a separate include file in src/main/webapp/script and add a bean with a dependency on the ScriptManager that registers the Global script block. If you are overriding any of the JSPs or adding your own front end, you can obviously add the script include at any point on the page after rave.js.