Differences between revisions 5 and 6
Revision 5 as of 2007-03-20 05:26:21
Size: 5169
Editor: esaliya
Revision 6 as of 2009-09-20 23:35:49
Size: 5169
Editor: localhost
Comment: converted to 1.6 markup
No differences found!

Google Summer of Code 2007 Proposal


Canonical XML Implementation on Apache AXIOM


Saliya Ekanayake


saliya@cse.mrt.ac.lk, esaliya@gmail.com

Project Title

Canonical XML Implementation on Apache AXIOM


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.


1. Implementation of C14N based on Axiom

2. Tests for C14N based on Axiom

3. Documentation to support continuation of the project


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.

Deliverable(s): Prototype and documentation for mid evaluation Estimated Completion: 2nd July 2007

Step3: Modifications and Tests

Modifications or improvements suggested at the mid evaluation would be completed in this step. Apart from that Test cases for C14N would be modified to work with Axiom.

Deliverable(s): Prototype including tests Estimated Completion: 6th August 2007

Step4: Final Product and Documents

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


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.

Mentor Information

Mr. Ruchith Fernando










SaliyaEkanayake/GSoC2007Proposal/AXIOM-C14N (last edited 2009-09-20 23:35:49 by localhost)