...
The Apache Tuscany Project implements the SCA specifications and easier SOA developments by it's comprehensive infrastructure of components that can be assembled into applications called composites. Tuscany also provide provides extensions revealed to be useful when binding components with one another using specific protocol (CORBA, JSON, SOA/HTTP). To make a bright and effective use of Tuscany SCA's opportunities, applications are to be developed on fully featured and OPENED platform so that innovative and reusable solutions and components can be created and reassembled. The new Google Android Mobile platform provides such features(opensource, extendable, operating system, api, sdk, middleware, adequate tools) and has consequently been targeted to host tuscany and to demonstrate it capabilities under the "tuscany-host-android" subproject. Started last year at GSOC08, the project has been going peacefully along, and great efforts have already been accomplished including porting tuscany SCA(core/runtime + extensions) in a light version onto Android and partially implementing an android store app, which consumes services from a an SCA friendly store app.
For the current GSOC edition, it'll be about completing the Android SCA Runtime module, and mainly demonstrating Tuscany's SCA capabilities by extending the existing android store application.
...
Android client: Makes a call to the catalog service in order to retrieve the full catalog or part of it by specifying a search criteria. This will result into a JSONRPC invocation having the webservice URI and the request search criteria as parameters.
Store web App: Will Answer to the call, and load the catalog items from a datasource, probably XML file. Either all items or a part equivalent to the user's request, will be loaded and sent back to the Client as a JSON String. In case it's a request for a part of the catalog, the catalog service will not do the search itself, but will just reference a catalogBrowser service to perform the search. Another process should there be undertaken too, to decide how items are going to be displayed, according to the catalog currency. Handling automatically the switch from a currency to another and providing the choice of currency from a user predefined list will be interesting there. This emphasis then the need to create a currencies datasource, from which they can all be loaded, and their value values easily be converted to one another. A simple xml file once again will make it.
...
This file will contain all possible currencies the store can use. This means an extension of the number of currencies that can be used.
It should reference one of the currencies as the reference currency, and all conversions will be made passing by thoughrout it. A DTD or a schema
validation may be implemented to validate it's structure.
...
This file will hold all catalog items and attributes like the store name, catalog currency. For each catalog item, it will describe it's
category, name, price, image file path. A DTD or a schema validation may be implemented to validate it's structure too. Find a sample below.
<?xml version="1.0" xmlns="http://www.w3.org/">
<store xmlns="http://www.w3.org/">
<configuration currency="USD" name="Tuscanily"/>
<catalog>
<category name="fruits">
<item name="Pear" price="2.2" image_file="fruits/pear.gif"/>
<item name="Apple" price="1.2" image_file="fruits/apple.gif"/>
</category>
<category name="Bakery">
<item name="Bread" price="0.7" image_file="bakery/bread.gif"/>
<item name="cake" price="3.2" image_file="bakery/cake.gif"/>
</category>
</catalog>
</store>
...
This directory on the server will contain a subdirectory for each catalog category., and every product may have it's image in the relevant
category. Default images may be provided. Due to the size of the end user screen (mobile device), images size will be fixed to 30*30be in thumbanails format (32*32).
Web App Store
...
Android Client Store: This part will be made of
- The store UI screens
* Store Home page with buttons driving to:
\[X\]
* Catalog categories page;
* Products list page - (This page should will show up after a category has been selected, or after a product search submission);
Items will be displayed in a listView using a simpleAdaptor to re-arrange the item's attribute that are to be displayed. Items quantity can be typed in from the list.
* Product details page: displays all possible details about the product;
* Shopping cart page: Displays selected items, and the total.
\[/X\]
and
\* Preferences page;
I intend to assemble \[X/\] pages under a same TabActivity, for a practical switch between them. Any other proposal surely will be welcomed and discussed. * Store Home page which will include a search form and buttons driving to: Wiki Markup
[X]
* Catalog categories page;
* Products list page - (This page should will show up after a category has been selected, or after a product search submission);
Items will be displayed in a listView using a simpleAdaptor to re-arrange the item's attribute that are to be displayed. Items quantity can be typed in from the list.
* Product details page: displays all possible details about the product;
* Shopping cart page: Displays selected items, and the total.
[/X]
and
* Preferences page;
I intend to assemble [X/] pages under a same TabActivity, for a practical switch between them. Any other proposal surely will be welcomed and discussed.
UI prototype proposal adapted to the current version of the store catalog items attributes (Name - price) below.
...
In order to make users shopping cart available at next application launch, Android SharedPreferences feature will be used to save the cart contents to the application preferences. Also, as the community opinions is optional, users will be provided a way enabling or disabling the feature. The A last preference for the application will could be about setting its theme.
...
- Get Android.jar sources of the android SDK using Git and Repo as described at: http://source.android.com/download/using-repo#TOC-Task-reference
in a directory named "Android"
- Add tuscany extensions sources files (Java, meta-inf...) to the "Android" folder;
- Iterate all over the subdirectories in the "Android" folder and check whether java source files paths match their package name using a script written in java;
- Build the Android folder content (using ant for exemple) to android .jar. This jar will already contain meta-inf and other non .java files of Tuscany extensions;
- Convert the jar into a dex using the ADT "dx" tool as described here: http://developer.android.com/guide/developing/tools/othertools.html#dx
- Drop the dex file at the right place in the device.
...
- Store web app service: May 23 - June 20
- Catalog component: Retrieve full catalog from XML datasource files;
- CatalogBrowser Component: Retrieve catalog items based on aspecified a specified query;
- ShoppingCart component: Support now cart total calculation taking in account items quantities;
- CurrencyConverter component: Currencies symbol and value computation based on an XML file
- Android Store client: June 20 - August 10
- "services" package update in order to fit the new offered services;
- Complete implementation of the 6 screens quoted above;
- Additional tests, UI reviews and thoughts on possible additional features like an M-Payment service implementation: August 10th - August 17th;
- According to how fast i advance on the project the rating service may be implemented before or after the end of the GSOC programm:
- On the web app side, the component should retrieve items' ratings and recalculate note after a new rating submission from an end user.
- On the android client side ratings should be loaded, and each item could be rated if of course the user enables this fonctionnality in his preferences.
...
Development environment
- Android Debug Bridge, Development Tools and Android Emulator.
- I'll be developing under Windows Vista, and Ubuntu alternatively.
- IDE: Eclipse. Of course, if the Apache Tuscany Project uses some other tools, i'll be pleased to use them.
About Me
Birth Date: 22 Juin 1987
Home Country: Benin Benin Republic
Country of residence: France
School: National School of Applied Sciences - Agadir / Morocco Kingdom.
Technical skills: C, C++, C#, VB.net, Java, Batch, Shell scripting, HTML, CSS, XML/XSD/XSL/XPATH/DTD, Javascript, ASP, PHP, JSP.
Relational skills: Dynamism, Motivation, Ability to work as a team member, Good sense of creativity imagination and share knowledge, Curiosity.
Time dedication: Roughly 30-35 hours per week.