Google Summer of Code 2008
CORBA support for Apache Tuscany - Wojtek (Wojciech) Janiszewski
Project details
Organization/Project |
|
GSoC Project Title |
|
Mentor |
Raymond Feng |
Project Proposal |
|
Contanct |
wojtek.janiszewski AT gmail DOT com |
Child pages
CORBA bindings features, bugs, issues: http://cwiki.apache.org/confluence/display/TUSCANYWIKI/CORBA+binding+features%2C+bugs%2C+issues
host-corba, host-corba-jdk modules: http://cwiki.apache.org/confluence/display/TUSCANYWIKI/host-corba%2C+host-corba-jdk+features%2C+bugs%2C+issues
JIRA issues:
CORBA service/reference binding: https://issues.apache.org/jira/browse/TUSCANY-2357
Binding corba should use a host-corba module: https://issues.apache.org/jira/browse/TUSCANY-2397
Need a new corba-host-jee module: https://issues.apache.org/jira/browse/TUSCANY-2468
Lightweight implementation of the SCA default binding over the corba binding: https://issues.apache.org/jira/browse/TUSCANY-2469
Timeline
Time period |
Task |
---|---|
Community bonding period |
Learning Apache Tuscany and SCA standard (reading code and documentation, reviewing samples, 'playing with' Apache Tuscany). |
First development phase |
Implementation of tuscany-binding-corba part I: binding.corba for SCA references. |
Mid-term evaluation |
Submitting mid-term evaluation. |
Second development phase |
Implementation of interface-corba-idl module. |
Review |
Code/documentation review. |
Final evaluation |
Submitting final evaluation. |
Project Log
21st April 2008
Accepted to GSoC.
22nd April 2008
Made presentation for university seminar:
1. presented SCA and Tuscany in theory
2. built simple application live using Apache Tuscany.
30th April 2008
Received corba-binding module, which is a skeleton for further work. First Tuscany build attempts with no success.
1st May 2008
I've encountered some problems with missing (wrong named?) message bundles during builds. Finally built Tuscany via 'mvn clean install -fn', which is sufficient for CORBA binding development for now. I'll get back to building in the future.
3rd May 2008
1. I've Submitted Apache CLA. I'm waiting for listing my name on http://people.apache.org/~jim/committers.html page.
2. I've started to learn about extending Tuscany from http://incubator.apache.org/tuscany/sca-java-extension-development-guide.data/ExtendingTuscany-V01.pdf and from CORBA base code. I've created CorbaModuleActivator class, which plugs binding module into Tuscany. I've added following line to META-INF/services/org.apache.tuscany.sca.core.ModuleActivator (which points to previously added activator):
org.apache.tuscany.sca.binding.corba.CorbaModuleActivator
I've also updated org.apache.tuscany.sca.binding.corba.impl.CorbaBindingProviderFactory.createReferenceBindingProvider(...) method to return CorbaReferenceBindingProvider object.
I've tested CORBA base code using my sample prepared for university seminar. I've configured CORBA reference in composite file, I've "mocked" some of CORBA base code (made CorbaInvoker to return fixed response) , and successfully executed method for CORBA reference. Now it's time to know better Tuscany SPI and Tuscany/SCA specification.
6th May 2008
My full name (Wojciech Janiszewski) appeared on "Unlisted CLAs" section on the committers page.
7th May 2008
I've successfully created sample service binding provider, which was able to pass method invocation request to binded component and pass returned value as a response.
26th May 2008
First development phase officially started! Here's a little summary:
1. I've familiarized with Tuscany and binding extensions.
2. I've made several prototypes, mainly to verify CORBA API.
3. I've also fulfilled all (I hope;]) needed papers (both Apache Software Foundation and Google).
News related to project:
1. Task Implementation of interface-corba-idl module was postponed to Second development phase (see project timeline).
2. Currently I'm working on Implementation of tuscany-binding-corba part I: binding.corba for SCA references task. I'd like to have some working and tested code submitted by the end of the week.
30th May 2008
I've submitted first portion of code. Patch is available and ready to review as jira issue: https://issues.apache.org/jira/browse/TUSCANY-2357?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
6th June 2008
Patch accepted, I've also sent patch with Apache license headers. Now working on exception handling. I've encountered some doubts, which may block my progress: http://marc.info/?l=tuscany-dev&m=121267184106875&w=2
9th June 2008
Next patch is ready to be accepted:
1. Translating remote exceptions into user declared exceptions
2. Some exception handling
3. Obtaining and using CORBA references
4. Tests for 1 and 3 - idl files and generated classes added
5. tester.idl was moved to general_tests.idl
I've also created child page, which should help to gather all current/previous topics related to CORBA reference binding: http://cwiki.apache.org/confluence/display/TUSCANYWIKI/CORBA+reference+binding+features%2C+bugs%2C+issues
18th June 2008
Next patch was submitted and applied:
1. Module corba-binding splitted into two modules:
a. model module: binding-corba
b. runtime module: binding-corba-runtime
2. Multiple declared exceptions handling
Jean-Sebastien Delfino requested to create some host modules for ORB: https://issues.apache.org/jira/browse/TUSCANY-2397
19th June 2008
I've submitted patch which adds:
1. enum types
2. validation of user provided java interface (structs, enums, exceptions)
3. some tests to 1 and 2
23rd June 2008
I've submitted patch which includes:
1. General servant class for serving Tuscany components via CORBA (class DynaCorbaServant) - it still requires some work. It uses TypeHelpers created earlier - they are common for marshalling/unmarshalling CORBA objects in reference and service cases
2. Minimal mock implementation of RuntimeComponentService (needed for tests)
3. Tests
4. Update of some previously generated stubs/skeletons (IDs weren't previously changed due to package change)
24th June 2008
I've submitted patch which includes:
1. Service side: validation of component interface (if it's matchable to CORBA), caching operations arguments types
2. BAD_PARAM exception handling (both service and reference side)
3. JUnit Tests
25th June 2008
I've submitted patch for host-corba module request.
26th June 2008
Todays patch contains:
1. Bugfix for host-corba module.
2. CorbaBindingProviderFactory, CorbaReferenceBindingProvider, CorbaServiceBindingProvider, CorbaInvoker classes now uses DynaCorbaRequest, DynaCorbaServant and host-corba API - so service/reference bindings are enabled, and can be tested - I've successfully made simple scenario.
30th June 2008
Changes included in this patch:
1. itest module for corba binding
2. few fixes which appeared during itest module development
Tests for binding-corba-runtime may hang on @AfterClass, I'm looking for cause.
1st July 2008
I've partially solved problem with hanging tests on @AfterClass (binding-corba-runtime). ORB cannot be stopped while some resources are not released - ie. there is exception and request sequence is interrupted. Todays patch contains fix for this one.
Hanging of ORB is also beeing caused by test_enchancedReferences in CorbaTypesTestCase class - there is some problem with implementation of CORBA references types. I've marked it with @Ignore and hope will solve it soon.
I've also noticed that stop() and destroy() methods from ORB does not kill listener. It probably means that service is not beeing killed on stop() method from TransientNameServer class and socket port won't be released until JVM termination. I've added test_ensureORBStopped in host-corba-jdk and made it @Ignore - it needs to be fixed.
3rd July 2008
I've submitted another patch, which contains:
1. Corbaname URI support both for references and services
2. Support for registering and resolving nested services, ie. path/to/some/service
3. JUnit Tests
4. Additional test in itest/corba for corbaname URIs
First development phase ends soon, so here is some update regarding main goal of this phase - CORBA binding module implementation.
9th July 2008
1. I've submitted mid-term evaluation.
2. I've submitted patch, which is is response for recommendations from http://marc.info/?l=tuscany-dev&m=121547511913874&w=2
1. (host-corba, host-corba-jdk) Doubled methods with arguments:
a. corbaname URI
b. name, host, port params
were merged into method with URI argument. Now binding-corba module is responsible to provide URI depending on binding configuration (if URI is not provided then binding-corba will create one from name, host, port).
2. (host-corba, host-corba-jdk) I also used NamingContextExt where I could - in unregisterServant() method.
3. Jean-Sebastien Delfino requested host-corba-jee module: https://issues.apache.org/jira/browse/TUSCANY-2468. Actual host-corba* modules will need some reorganization.
10th July 2008
Patch for host-corba-jee module added:
1. host-corba-jee module (based on host-corba-jdk)
2. Tests for 1 (also based on host-corba-jdk, some removed, one added)
I've tested new module on Sun Java System Application Server Platform Edition 9.0_01 (build b02-p01) in simple webapp with embedded Tuscany - it worked. In JUnit I've configured InitialContext (by jndi.properties) to use mock class, which provides ORB pointing to some manually started name server (from host-corba-jdk).
15th July 2008
I've submitted another patch which mainly adds support to operations mapping from Java2IDLUtil from binding-ejb-runtime module.
1. I've extracted operation mapping code from Java2IDLUtil to new class in new module: binding-util-corba
1a. binding-corba-runtime now uses binding-util-corba
1b. binding-ejb-runtime is NOT USING new module. If idea of sharing common code is ok, then I'll also update method calls in binding-ejb-runtime
2. Patch contains also some bug fixes3. JUnit tests
4. New scenarios for operations mapping in itest/corba
21st July 2008
I'm working now on Lightweight implementation of the SCA default binding over the corba binding. I've submitted patch, witch includes:
1. Binding-sca-corba module
2. Some changes to existing CORBA binding modules, which enables handling Java interfaces which are not specific for CORBA
3. Integration test for SCA default binding over CORBA binding.
30th July 2008
I've heard yesterday that Tuscany PMC has voted for me to become a Tuscany committer. It's great news! Thanks!
What about work? I've submitted patch:
1. binding-corba-runtime module reorganization to allow creating SCA binding over CORBA
2. Passing JAXB objects in CORBA SCA binding
3. JUnit tests in itest/corba
I've encoutered problem while creating WSDLInterfaceContract (I've reused binding-ws-wsdlgen module). Creating contract failed at org.apache.tuscany.sca.databinding.sdo.SDOTypeHelper.addResolvedXSDs at line 165. Thanks to Raymond it was fixed.
3rd August 2008
1. I've updated binding.sca over CORBA to create name server automatically.
2. In binding.corba I've added configuration attribute "provideNameServer" which can force Tuscany to create name server.
3. Created and updated Tuscany web page for binding.corba: http://tuscany.apache.org/sca-java-bindingcorba.html.
4. JUnit tests for 1 and 2.
12th August 2008
1. Removed "provideNameServer" flag.
2. Added host-corba-jse-tns module, which creates Transient Name Server automatically for every localhost service binding.
3. JUnit tests.
4. Updated Tuscany web page for CORBA binding.
18th August 2008
1. Added support for CORBA arrays and unions
2. Updated JUnit tests for binding-corba-runtime and itest/corba
3. Web page update
4. Code cleanup