Google Summer of Code 2007 Proposal

Project Title

Canonical XML Implementation on Apache AXIOM

Abstract

Apache Axis2 uses Axiom as its underlying object model which provides an efficient yet less memory-intensive object model. The current implementations of Canonical XML and Exclusive XML Canonicalization specifications of The Apache XML Project use DOM underneath. These implementations are used in Axis2 in providing WS-Security with great hassle due to the expensive conversion between DOM and Axiom.

The intention of this project is to eliminate such conversion and to improve the efficiency for relying parties of XML canonicalization by implementing both specifications based on Axiom. Eventually it would provide a vital improvement to Axis2 as its WS-Security implementation heavily depends on XML canonicalization.

Deliverables

1. Implementation of C14N based on Axiom

2. Tests for C14N based on Axiom

3. Documentation to support continuation of the project

Overview

XML canonicalization (C14N) provides a mean of comparing the equivalence of two XML documents which may be different in their physical representations. Such comparison is vastly beneficial in the context of XML security. The Apache XML Project delivers implementations for both Canonical XML and Exclusive XML Canonicalization specifications based on DOM.

Rampart, the module providing WS-Security for Axis2, depends on Apache WSS4J which in turn depends on Apache XML Security. Thus C14N relies at the bottom of Rampart being very useful. The DOM implementations of C14N, however, don’t match with Axis2’s Object Model (OM). Thus at present DOOM (DOM Over OM) serves the conversion between DOM and OM. The conversion would eventually degrade the performance. Thus the solution would be to rewrite C14N based on Axiom.

Thus I plan to port the existing DOM implementation of C14N to Axiom. I would keep the existing structure of the implementation as it is being optimized over time. It is in fact very familiar to the developers. Hence I believe it is wise to change the internal implementation without affecting the outer structure.

Project Plan

I have broken down the project under 4 steps as follows.

Step1: Initial Planning and Designing

I would look into the current implementation of C14N under this step. It would be very important to plan and design the porting of the implementation to Axiom. Eventually I would have the skeleton of the implementation.

Estimated Completion: 21st May 2007

Step2: Implementation

I would focus on porting the DOM code to Axiom in this step. The skeleton designed in step 1 would be filled with necessary logic.

This step would complete the porting of C14N implementation to Axiom. Necessary documents would also be present with the final product.

Deliverable(s): Final product and documentation Estimated Completion: 13th August 2007

Biography

I’m a level 3 undergraduate of the Department of Computer Science & Engineering of the University of Moratuwa, Sri Lanka. I have involved in Open Source development regarding Web services based on Axis2. I have implemented a client API in JavaScript to invoke Web services based on Rhino as part of my internship. I have also improved the E4X message receiver for Axis2 to support both E4X and JSON service implementations. Thus I was able to gain a fair knowledge on Axis2, Axiom and DOM with these projects. Moreover, I was able to stiffen my knowledge on Axiom by implementing a MTOM sample for Axis2. Additionally, I have also created the TCPMonitor utility of Axis2 available as a plug-in for Eclipse IDE.

I’m really passionate in Open Source development and Web services. Thus I found this project really appealing as it lies on the path of my experience. I believe that I have the necessary background knowledge to make this a success. Eventually I hope that my involvement in this project would polish my software engineering skills whilst adding a whole new experience to my career.