Google Summer of Code 2006 – Project Proposal
C Implementation of WSDL2C Code generator for Axis2/C
This is an attempt to implement a WSDL2C code generator in C language following the same architecture of Apache WSDL2Java Code generator. The idea is to generate both service deployment and client side code for a particular web service from its WSDL(Web Service Description Language), making the task of web service programmers quick and effortless.
The main feature of this tool would be the higher extensibility. It is targeted to be achieved in two different ways.
- First by providing a template like mechanism to allow extend it to generate codes for any language. But as the first Step it would be default to Apache Axis2/C clients.
- Second by giving an interface to build extensions which allow to add new features to the main core engine.
The ultimate goal of the project would be to provide an executable WSDL2C tool and a simple API which make it possible to plug the code generator into famous IDEs like Eclipse/ Microsoft Visual Studio. The most challenging part of the project is to keep high performance and modularity provided by the Axis2C Web services engine and generate the most optimized code from any complex Web service Description.
- WSDL2Java template to extend it capabilities to generate Axis2/C clients and service deployment code.
- Implementation for the WSDL2C code generator in C language following the same architecture in WSDL2Java.
- Documentation for continuations the project with guides for develop extensions and templates.
- Setting up the Project Web site.
- Release WSDL2C 1st Milestone.
Initial Setup -Planned to finish by 31st May
- Include reading and understanding the WSDL2Java Architecture and the source tree and generate Axis2/C clients using it.
- Study the Axis2/C WSDL object model and come up with a Specific architecture for the C implementation.
Initial Implementation- Planned to finish by 10th July
- Design the framework with the support for extensibility.
- Add basic features as extensions to test the framework.
- Prepare documentation for the mid evaluation.
Adding Features - Planned to be ended in 31st July
- Implement web service specifications as extensions to the framework
- Extension to validate code.
Finalize and Release
- Fix Memory leaks and clean up the code.
- Prepare samples and documentations.
- Build the project website.
I am a third year student specializing Computer science and Engineering for my B Sc Engineering degree in University of Moratuwa in Sri Lanka. I am very new to Open source software development but I have contributed to some non-open source projects previously including a local competition held by National Institute of Education in last year (2005) for best educational software and was placed the runner-up. My project was to make a simulator for chemical organic reactions targeting the syllabus of local Advanced level examination. Some of my projects are listed in www.cse.mrt.ac.lk/~dimuthu/projects.htm
Recently web services become my first interest as I have good guidance from web service implementors who works on Apache Axis2 Project. I have written client programs using Apache Axis2/C web service engine to invoke simple web services like Google spell check. And requirement of a code generation tool arouse when trying to handle complex web services. These days I am working on developing a Mozilla extension for consuming Web services using Axis2/C engine and I was successful in implementing XML in/out model and asynchronous invocations with a very similar API as AJAX.
Although I have not directly contributed to Axis2/C project yet, I've been very much aware of the project for the last few months by lurking in the mailing lists. I often download the latest source from SVN and refactor my web service clients accordingly. I have come across several bugs in the engine when I run clients and fixing these bugs have made the code more robust.
I feel Google summer of code would provide me a good opportunity to get involved in the Apache Web Service Projects as a university student. WSDL2C code generator would be a key module of the Axis2/C project as the users of the main product will definitely depend on this. I hope I can accomplish this in time with the guidance of people who implement the WSDL2Java tool and who are working on Axis2 projects.