Java developer with 14+ years commercial development experience. Worked across the full stack of software development, from backend highly concurrent systems, to front-end UIs Justin has posted 1 posts at DZone. You can read more from them at their website. View Full User Profile

Mobile Internet Portal Development on the NetBeans Platform

11.15.2010
| 4525 views |
  • submit to reddit
My name is Justin Lawler, working for Amdocs ChangingWorlds. Amdocs is a large telecommunications software company and acquired ChangingWorlds towards the end of 2008. Amdocs ChangingWorlds is headquartered in Dublin, Ireland and creates software for large telcos worldwide to help them build mobile internet portals. We have development offices in Dublin and Kuala Lumpur and in Noida, India.

 

Background

Amdocs Changing Worlds develops a suite of products to let telco operators develop and maintain their mobile portals. The Amdocs Changing Worlds product suite consists of the following products:

  • Intelligent Portal Manager. End-end portal platform that enables MNOs (Mobile Network Operators) to create/manage and deliver personalized portal content to mobile subscribers
  • Recommender. Uses a range of advanced machine learning and intelligent personalization strategies to recommend relevant content to mobile subscribers, thus enhancing content discovery
  • Ad Personalizer. Uses advanced behavioural targeting to deliver relevant personalized ads to mobile subscribers, thus increasing ad response rates
  • Mobile Internet Bridge. Adds a personalized navigation-bar to off-portal sites, to enhance the mobile internet user experience
  • Mobile Internet Personalizer. Employs a range of intelligent personalization techniques to recommend relevant ‘off-portal’ sites and content to mobile subscribers.
  • BI. Provides advanced business intelligence on usage of the MNO’s mobile internet services. For example, how many users are using a particular make/model of phone or what websites have been viewed most in the past week.
  • Template Builder. Developer application that enables portal designers to quickly and easily build style-sheets to govern the presentation of portal pages on mobile handsets.

 

Template Builder

To allow our customers to easily customize & maintain the presentation of their mobile portals, we have developed our Template Builder product. Template Builder is created on the NetBeans Platform and consists of a GUI that allows developers to generate XSL without having to write any XSL by abstracting away the logic from the presentation via easy-to-use drag-and-droppable modules.

Using Template Builder modules and data sources, users can construct XSL to:

  • Iterate over XML element lists
  • Selectively apply markup to specific XML elements
  • Selectively display markup blocks depending on the XML feed content
  • Select attributes/element values from the XML feed.

Users construct device markup pages using the above module/data source constructs to generate XSL that will render the XML feed.

Once the markup is fully constructed in the GUI, they can generate and deploy the XSL to the rendering engine through the GUI. An example page of rendered XSL would look like below:

The Template Builder GUI

Below is a screenshot of the main window:

The GUI consists of the following features:

  • Project Tree. Lets users see all devices in the project, along with different views associated with each device. Users can also see all the different XSL modules on this page.
  • Editor. Allows users to write the markup. Here users can see various different sections associated with each module.
  • Properties Pane. Displays & allows users to view/edit properties associated with project/devices/modules/etc.
  • CSS Pane. Lets users add/edit CSS to a device page
  • Errors/Warnings Pane. Highlights any errors/warnings in the project, such as any invalid mark-up errors.
  • Show Usages Pane. Lets users search for all instances of an XSL component.
  • Data Source Pane. Lets users view all XSL ‘data sources’ available in any particular XSL component.

 

NetBeans Platform

We’re currently using the following features of the NetBeans Platform:

  • Lifecycle management
  • Layout/docking framework
  • NetBeans module system
  • Layer.xml for action registrations
  • NetBeans APIs

In particular, we're using the following NetBeans APIs:

  • Lookup API
  • Window System API
  • Progress API
  • Nodes API and Explorer & Property Sheet API

In searching for a framework on which to develop the Template Builder on, we looked at a number of different options, such as the Eclipse RCP, the Spring RCP and JIDE. We chose the NetBeans platform because:

  • It offered a stable, fully functional framework for both docking functionality and for a rich set of APIs/GUI components.
  • It facilitated reuse of our existing codebase. All our existing GUI code base was all swing based.
  • Developers in the company only had Swing based experience. Coming up to speed on a new set of libraries such as Eclipse SWT was not an option.
  • It provides code editing APIs.
  • It offers multi-platform support.

 

Evolution of the NetBeans Platform

When we started out developing on the NetBeans platform, the team struggled with the platform. In particular with the lack of detailed "coming up to speed" documents. The NetBeans platform offers a comprehensive set of APIs and requires a long learning curve to become expert in it. It took a long time to figure out the optimal set of functions we should adopt for Template Builder. The long learning curve has largely been solved with the much better NetBeans Platform documentation, with resources such as the NetBeans Platform DZone Refcard and an excellent set of blogs/articles on all aspects of the NetBeans Platform.

NetBeans Platform and the Future Road Map for Template Builder

We have many additional features that we wish to implement in the future and we are confident that NetBeans will provide the underlying functionality that will enable us to deliver on our Template Builder roadmap.

Published at DZone with permission of its author, Justin Lawler.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)