Google Summer of Code 2006 : Proposal
Axis 2 Databinding
Axis2Databinding (ADB) does not cover all of XML Schemas. Simple content extension and restriction and Complex content restriction are unsupported XML Schema features that are aimed to be implemented in this project. Completion of this project will broaden the usage of Axis2 by eliminating some ADB limitations.
The initial objective of ADB framework is to provide a simple schema compiler/ Java bean generator, but fully functional like the Apache XMLBeans. Axis2Databinding is written with future extensions in mind, with a clear and flexible way to extend or modify its functionality.
ADB is currently built on an architecture consisting of Schema Compiler, Bean Writer and Type Mapper. The Schema Compiler uses instances of Bean Writer and Type Mapper which respectably handle writing classes and naming the classes to be used for the QNames that Schema Compiler encounters. The main class of the ADB is XSD2Java that allows the schemas to be compiled just by giving the schema file reference.
The Apache XMLBeans fully supports XML schema; classes generated from schema provide constructs for all of the major functionality of XML schema. Therefore, I hope finding out about how XMLBeans handles these features will be a great help. However, the main idea is that the relation between the schema-types should be translated into an inheritance relation between the Java classes in a way that truly supports the extension and also with the use of some validations to support the restriction feature. ADB Generation Modes should be considered in the process of generating classes as well. The major changes apparently occur in Schema Compiler and Bean Writer.
This project can be broken up into five different phases:
Phase 1: Initial planning and design
During this phase I hope to comprehend the current implementation of Axis2 Databinding. This phase also includes the understanding of other supported data bindings like XMLBeans. This should effectively lead me into determining what needs to be changed in ADB in order to support the Simple content extension and restriction and Complex content restriction and finally how to implement those changes. In this phase, I try to come up with a requirement document as well.
Deliverable(s) – Initial Prototype
Estimated completion – June 15th
Phase 2: Initial Implementation
Based on XML Schema features that are aimed to be added, the changes for Axis2 would be implemented. A prototype and documentation for the mid-term evaluation would also be prepared during this phase.
Deliverable(s) - Prototype and Documentation for mid-term evaluation
Estimated completion – June 30th
Phase 3: Secondary Implementation Based on Comments
Based on the feedback from the mentors, the Axis2 developers and users, required changes will be done.
Deliverable(s) – Secondary Prototype
Estimated completion - July 20th
Phase 4: Feature Addition
Based on the feedback from the mentors, the Axis2 developers and users required new features will be added.
Deliverable(s) - Almost Production Quality Code
Estimated completion – August 10th
Phase 5: Final Code Touch Ups and Documentation
During this phase the code would be integrated and tested rigorously. Documentation would also be completed for the final evaluation.
Deliverable(s) - Final Product and Documentation
Estimated completion – August 21st
I am a graduate student at University of California, Los Angeles (UCLA), Department of Computer Science. I recently had the chance to work with Web Services for building a grid-application. One of the tools that I used during this project was Apache Axis2. Web Services interested me so much that I decided to be a part of this world. As it is mentioned in the Axis2 Website “Axis 2.0 will be a platform for the next generation of web services / service oriented applications.” That’s why I chose Apache Axis2 as a way to contribute to this field.