Google Summer of Code 2008

CORBA support for Apache Tuscany - Wojtek (Wojciech) Janiszewski

Project details

Organization/Project

Apache Software Foundation/Tuscany

GSoC Project Title

CORBA Support for Apache Tuscany

Mentor

Raymond Feng

Project Proposal

http://cwiki.apache.org/confluence/display/TUSCANYWIKI/GSoC08+proposal+-+CORBA+support+for+Apache+Tuscany

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
Before May 26

Learning Apache Tuscany and SCA standard (reading code and documentation, reviewing samples, 'playing with' Apache Tuscany).
Discussing problems related to project.
On 22 April I will deliver 45 minute presentation for university seminar. Presentation will focus on two aspects:
- theory: introduction to Apache Tuscany by showing basic concepts
- practice: building sample application live

First development phase 
May 26 - July6

Implementation of tuscany-binding-corba part I: binding.corba for SCA references.
Implementation of tuscany-binding-corba part II: binding.corba for SCA services
Implementation of JUnit tests.
Documentation update.

Mid-term evaluation
July 7 - July 10

Submitting mid-term evaluation.

Second development phase
July 11 - August 11

Implementation of interface-corba-idl module.
Implementation of itest-corba module.
Implementation of JUnit tests.
Documentation updat

Review
August 12 - August 17

Code/documentation review.

Final evaluation
August 18 - September 1

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

  • No labels