[ 
https://issues.apache.org/jira/browse/TUSCANY-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Amita Vadhavkar updated TUSCANY-1431:
-------------------------------------

    Attachment: 1431.patch

I have applied the patch for 1431 on latest on sandbox and checked that it is 
working. Below
are the details of the changes made in the patch. 

Changes -
---------
1) topmost pom.xml - ldap module commented out for time being.

Module - tuscany-das-api
----------------------------
1) Command - changed
added setDataSourceConnection - to make Command aware of the connection it 
needs to
use to execute the underlying query

2) DasFactory - changed
Different implemnetations of DAS will use different Configs and so there is no 
need to have Config
at api level, but it needs to be defined and used at impl level. From this 
point, removed Config.xsd
from api. Removed from DasFactory any refs to Config and replaced with Object. 
It is responsibility of 
individual impls to use their specific Config at runtime and do checks if 
needed to ensure the Config 
is appropriate as per the requirement of impls. For this, in tuscany-das-api, 
changed createDAS()
methods.

DAS connects to DataSource which can be database , file system, directory 
system,...So, DAS api should
be generic enough to acept different types of DataSource Connections (can be 
java.sql.Connection, can
be custom File System Connections and so forth.). DASFactory APIs in api module 
thus need to support
generic Data Source Connection. From this point of view, introduced Interface 
DataSourceConnection
and used it in tuscany-xquery-impl into 2 different connections viz. 
DatabaseConnection, 
FileSystemConnection. For this, in tuscany-das-api, changed createDAS() methods.

3) ConfigHelper - removed
As there is no need to have Config at tuscany-das-api, there is no need to have 
ConfigHelper either
at this level. Also, as different impls Configs will differ, having some common 
refactoring
in tuscany-das-api level ConfigHelper may not give lot of advantages. 

4) DataSourceConnection - added
For reasons discussed in 1), 2)

5) ImplementationFactory - added
If the particular DAS impl (say XQuery) supports different implementations for 
underlying query 
format (e.g. RDB DAS - may support JDBC, XQuery DAS - may support Saxon impl of 
XQuery, DB2 Express 
for XQuery All these may not be XQJ compliant (e.g. Saxon may be compliant, but 
DB2 Express may not 
be. So, ImplementationFactory is the way to plugin required impl support (only 
1 in 1 runtime) - 
like Saxon OR DB2 Express

6) DAS - changed
added setImplementationFactory(ImplementationFactory) - hook to specify - e.g. 
say for XQuery DAS - 
are we using Saxon/DB2 Express/...

7) pom.xml - changed
added dependecy for log4j,stax and ensured JDK 1.5 usage for -source, -target

8) config.xsd - removed
config should exist on impl level and not api level

Module - tuscany-das-xquery
----------------------------
1) ConfigHelper - added
To provide helper methods for Config specific to tuscany-das-xquery

2) XQueryDB2FactoryImpl, XQuerySaxonFactoryImpl - added
implements ImplementationFactory from tuscany-das-api

3) XQueryServiceProvider, XQueryServiceLoader - added
use Service Provider approach to handle support for different XQuery 
Implemntations like
Saxon-B, DB2 Express. Based on the XQuery Implementation Service Provider name, 
required 
implementation will be supported/used at runtime

4) MappingWrapper - added
Wrapper over Config

5) XQueryDASFactoryImpl - changed
extends DASFactory from tuscany-das-api. 

6) XQueryDB2CommandImpl , XQuerySaxonCommandImpl
command implementations specific to XQuery Impl (this can be refactored if reqd 
in generic class and subclasses)

7) ConfigUtil - added
Util to support impl specific Config

8) CommandHelper - added
Depending on ImplementationFactory being used, this will provide instance of 
Command to be used
for query execution. e.g. for Saxon, the CommandImpl will be specific to XQJ, 
For DB2 Express,
CommandImpl will be specific to some custom APIs from DB2 Express. 

9) config.xsd - Config specific to XQuery DAS

10) pom. xml - to ensure JDK 1.5 source and target usage

11) services/org.apache.tuscany.das.ImplementationFactory - added
To support Service Provider Framework for different XQuery Implementations.
file with only 1 string mentioning which XQuery 
implementation is being used - e.g. DB2 Express, Saxon (can not say XQJ 
because, as XQJ is still
evolving, there can be descrepancies between Saxon and latest XQJ specs)

12) BooksCfg.xml - added
example Config to demo Saxon XQuery Impl
books - xml, xsd, dtd - example files

13) DatabaseConnection, FileSystemConnection - added
inherit from DataSourceConnection

14) XQueryDASImpl - added
DASImpl for XQuery

Module - tuscany-das-xquery
---------------------------
Unit Tests
----------
1) XQueryDASFactoryTestCase.testDiscoverDASFactoryInstance
2) XQueryDASFactoryTestCase.testGetDASInstance
3) XQueryDASFactoryTestCase.testDiscoverXQueryImplementationFactory
4) XQueryDASFactoryTestCase.testGetCommand
5) XQueryDASFactoryTestCase.testExecuteCommand

Note: In order to run the test cases saxon jars need to be present in classpath 
(saxon8 and saxon8-xqj)

> DAS with XQuery based data access support
> -----------------------------------------
>
>                 Key: TUSCANY-1431
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1431
>             Project: Tuscany
>          Issue Type: New Feature
>          Components: Java DAS XQuery
>    Affects Versions: Java-DAS-Next
>            Reporter: Amita Vadhavkar
>         Attachments: 1431.patch, 1431_api.patch, 1431_xquery.patch
>
>
> place for submitting incremental patches for the ground work of XQuery DAS

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to