Google Summer of Code 2008 – Project Proposal
S.H Manoj Pushpakumara
Improvements to Axis2/C Neethi
This is an attempt to improve Axis2/C Neethi with higher extensibility. The idea is to implement Policy Intersection support , removal of the domain specific assertion processing, message and operation level policy support at the client side from Neethi/C.
Implementing intersection support seems to be similar to policy merge support implemented in Neethi/C . Removing domain specific assertions will make Neethi/C more extensible. For an example Security Policy assertions are handled from builders inside secpolicy. After doing this project we will be able to handle Security Policy assertions from Rampart/C. So the advantages of Rampart/C would simply be applied to the Axis2/C Neethi and then it will work as a framework.
However the Axis2/C engine should not depend on Rampart/C. For that we can use a mapping mechanism using hash maps and function pointers. We can specify the assertions that a particular module can handle in module.xml of that module. So that we can come up with syntax for defining it.
Adding operation and message level policy will allow the user to fine-tune Policy handling in a greater granularity level. Right now Axis2/C supports service level policy only. Thus, an Axis2/C user can't specify different policies for two operations or messages in the same service. Rather, operations inherit the policy of the service. This needs to be improved. For that we will use a policy-operation mapping mechanism, where a certain policy defined in the services.xml can be mapped to one or more operation(s). If a certain operation doesn't specify a policy, it will be mapped to the default policy, of which the service is mapped to, which might be specified in the same services.xml.
The main feature of this project would be the higher extensibility. It is targeted to be achieved in two different ways.
- First by providing operation and message level policy support at client side. Second by removing domain specific assertion processing from Neethi/C.
- Implement Policy intersection support for Neethi/C.
- Removing domain specific assertion processing from Neethi/C.
- Implement operation and message level policy support at client side.
Initial Setup - Planned to finish by 31st May
- Include reading and understanding the Neethi/C Architecture.
- Study the Axis2/java implementation and come up with a Specific architecture for the C implementation .
Initial Implementation - Planned to finish by 14th July
- Complete the policy intersection support for Neethi/C.
- Come up with a better design to remove the domain specific assertion.
- Complete operation and message level policy support at client side.
- Prepare documentation for the mid evaluation.
Adding Features - Planned to be ended in 1st September
- Complete the removal of the domain specific assertion from Neethi/C.
- Prepare documentation for the end evaluation.
Finalize and Release
- Fixing Memory leaks and clean up the code.
- Testing the code to check for dependencies.
I am a third year student reading for my BSc in Information Technology degree in University of Moratuwa in Sri Lanka. I am very much familiar with open source software development and I have contributed to some open source as well as non-open source projects previously including Microsoft Imagine Cup in year-2007 (local finals and was placed the second runner-up). My project was to make agent base web application called iddipada egnet. I have published an IEEE paper on this project. Not only that but also I have directly contributed to Axis2/C by developing several unit testing programs, a data service for WSF/PHP (http://labs.wso2.org/wsf/php/resource_view.php?url=%2Flabs%2Fphp%2FDataServices) and a test framework for WSF/C in Perl.
I have written client and server programs using Apache Axis2/C web service platform. While I was writing some test cases for Neethi/C, I realized that it would have been great if there was policy intersection, operations, and message level policy support available in the client side. Also I saw a mail from a user in Axis2/C mailing list asking for these features.
I've been very much interested in this project for the last few months because I was working very closely with Axis2/C. I have come across several bugs in the Axis2/C engine when I ran sample 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 Project as a university student. Improved Axis2/C Neethi would make the module more powerful. I hope many Axis2/C users will benefit from this improvement to the Neethi/C module. I hope I can accomplish this in time with the guidance of people involved in developing Axis2/C Neethi module.