Re: [DAS] Refactoring DAS to allow multiple implementatons

2007-03-01 Thread Luciano Resende

I've added a strawman in my sandbox...
Factory still needs some more work to make it more efficient and use some
caching.
Still looking into @Annotations as well.

--
Luciano Resende
http://people.apache.org/~lresende

On 2/23/07, Luciano Resende [EMAIL PROTECTED] wrote:


Thanks Jim

   I'll take a look at how SCA and JPA are working with the annotations to
handle this scenarios.
   As for your comments :

One final thing is whether the type of data source should be
externalized from the client application. For example, I would expect
the application should not need to know whether it is dealing with
relational or LDAP data and that should instead be a concern of the
mapping configuration. For example, the underlying data source could
change an that should not necessarily impact business logic. JPA has
this abstraction notion in its Persistence Unit concept.

   This is exactly what we accomplish using an external DAS config file to
externalize connection information, command definitions, etc.


--
Luciano Resende
http://people.apache.org/~lresende http://people.apache.org/%7Elresende


On 2/21/07, Jim Marino [EMAIL PROTECTED] wrote:


 On Feb 21, 2007, at 3:04 PM, Luciano Resende wrote:

  Current DAS only have one implementation supporting Relational
  Database
  (RDB). In order to allow DAS to support multiple implementations
  (e.g LDAP
  DAS proposed by Ole Ersoy :
  http://www.mail-archive.com/tuscany-dev@ws.apache.org/
  msg13395.html) I would
  like to propose some changes on the DAS project structure as
  explained below
  :
 
  1.Create an das-api project, and move the general interfaces, and
  maybe part
  of the config model to this project as well.
  2.das-rdb and das-ldap would depend on this common das-api project
  3.Enhance the factory pattern to handle multiple das implementations,
  probably implementing the service locator pattern to handle the
  multiple
  implementations.
 
  The new programming model would probably look like :
 
  DASFactory factory = DASFactory.getInstance(RBD)
  DAS rdbDAS = factory.creDas(...)
 
  Current unresolved issue that I have is regarding the config mode,
  i think
  this might be specific to each implementation, and I need to see
  what's the
  best approach to handle this on the das-api.
 
  I should have something in my sandbox over the weekend.
 
  Thoughts ?

 I'm more focused on JPA and SCA so my comments may be biased :-)

 I'd suggest moving away from the service locator pattern except in
 pure J2SE or legacy J2EE 1.4 environments and using dependency
 injection instead. EJB3/JPA does what you outline using annotations
 and it may be worth looking at in-depth since it is based on a lot of
 practical experience from integrating various O/R implementations in
 managed environments. For Tuscany, DAS could support annotations
 similar to what we have done with the JPA integration in trunk (i.e.
 the standard JPA annotations or Tuscany's @Resource) .  For other
 environments such as J2EE 1.5, DAS could probably use the @Resource
 annotation. In Spring you can also define your own custom annotation
 type or resuse @Resource.

 For pure J2SE environments, or where an application wants to manage
 the DAS factory, you may want to consider just allowing the
 application to new up the DASFactory or pass some sort of
 Configuration object or InputStream to an XML source. This will allow
 you to avoid making assumptions about where configuration is located
 or provide an extensibility point for various packaging types. It
 will also allow you to avoid all sorts of nasty problems in
 environments such as OSGi.

 One final thing is whether the type of data source should be
 externalized from the client application. For example, I would expect
 the application should not need to know whether it is dealing with
 relational or LDAP data and that should instead be a concern of the
 mapping configuration. For example, the underlying data source could
 change an that should not necessarily impact business logic. JPA has
 this abstraction notion in its Persistence Unit concept.

 Jim


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







Re: [DAS] Refactoring DAS to allow multiple implementatons

2007-02-23 Thread Luciano Resende

Using something like this :
DASFactory.registerFactory(RDB, 
org.apache.tuscany.das.rdb.impl.DASFactoryImpl);

Implies that the user needs to know about the impl, and register it, this
was something I was avoiding to do, and was suggesting the Service locator
or a different pattern to discover and register the impls.

--
Luciano Resende
http://people.apache.org/~lresende

On 2/21/07, Adriano Crestani [EMAIL PROTECTED] wrote:


I suggest:

DASFactory.registerFactory(RDB, 
org.apache.tuscany.das.rdb.impl.DASFactoryImpl);
DASFactory factory = DASFactory.getInstance(RBD)
DAS rdbDAS = factory.creDas(...)

would it work? Than there would be possible to add factories dynamically.

Adriano Crestani

On 2/21/07, Luciano Resende [EMAIL PROTECTED] wrote:

 Current DAS only have one implementation supporting Relational Database
 (RDB). In order to allow DAS to support multiple implementations (e.gLDAP
 DAS proposed by Ole Ersoy :
 http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg13395.html) I
 would
 like to propose some changes on the DAS project structure as explained
 below
 :

 1.Create an das-api project, and move the general interfaces, and maybe
 part
 of the config model to this project as well.
 2.das-rdb and das-ldap would depend on this common das-api project
 3.Enhance the factory pattern to handle multiple das implementations,
 probably implementing the service locator pattern to handle the multiple
 implementations.

 The new programming model would probably look like :

 DASFactory factory = DASFactory.getInstance(RBD)
 DAS rdbDAS = factory.creDas(...)

 Current unresolved issue that I have is regarding the config mode, i
think
 this might be specific to each implementation, and I need to see what's
 the
 best approach to handle this on the das-api.

 I should have something in my sandbox over the weekend.

 Thoughts ?

 --
 Luciano Resende
 http://people.apache.org/~lresende




Re: [DAS] Refactoring DAS to allow multiple implementatons

2007-02-23 Thread Luciano Resende

Thanks Jim

  I'll take a look at how SCA and JPA are working with the annotations to
handle this scenarios.
  As for your comments :


One final thing is whether the type of data source should be
externalized from the client application. For example, I would expect
the application should not need to know whether it is dealing with
relational or LDAP data and that should instead be a concern of the
mapping configuration. For example, the underlying data source could
change an that should not necessarily impact business logic. JPA has
this abstraction notion in its Persistence Unit concept.


  This is exactly what we accomplish using an external DAS config file to
externalize connection information, command definitions, etc.


--
Luciano Resende
http://people.apache.org/~lresende


On 2/21/07, Jim Marino [EMAIL PROTECTED] wrote:



On Feb 21, 2007, at 3:04 PM, Luciano Resende wrote:

 Current DAS only have one implementation supporting Relational
 Database
 (RDB). In order to allow DAS to support multiple implementations
 (e.g LDAP
 DAS proposed by Ole Ersoy :
 http://www.mail-archive.com/tuscany-dev@ws.apache.org/
 msg13395.html) I would
 like to propose some changes on the DAS project structure as
 explained below
 :

 1.Create an das-api project, and move the general interfaces, and
 maybe part
 of the config model to this project as well.
 2.das-rdb and das-ldap would depend on this common das-api project
 3.Enhance the factory pattern to handle multiple das implementations,
 probably implementing the service locator pattern to handle the
 multiple
 implementations.

 The new programming model would probably look like :

 DASFactory factory = DASFactory.getInstance(RBD)
 DAS rdbDAS = factory.creDas(...)

 Current unresolved issue that I have is regarding the config mode,
 i think
 this might be specific to each implementation, and I need to see
 what's the
 best approach to handle this on the das-api.

 I should have something in my sandbox over the weekend.

 Thoughts ?

I'm more focused on JPA and SCA so my comments may be biased :-)

I'd suggest moving away from the service locator pattern except in
pure J2SE or legacy J2EE 1.4 environments and using dependency
injection instead. EJB3/JPA does what you outline using annotations
and it may be worth looking at in-depth since it is based on a lot of
practical experience from integrating various O/R implementations in
managed environments. For Tuscany, DAS could support annotations
similar to what we have done with the JPA integration in trunk (i.e.
the standard JPA annotations or Tuscany's @Resource) .  For other
environments such as J2EE 1.5, DAS could probably use the @Resource
annotation. In Spring you can also define your own custom annotation
type or resuse @Resource.

For pure J2SE environments, or where an application wants to manage
the DAS factory, you may want to consider just allowing the
application to new up the DASFactory or pass some sort of
Configuration object or InputStream to an XML source. This will allow
you to avoid making assumptions about where configuration is located
or provide an extensibility point for various packaging types. It
will also allow you to avoid all sorts of nasty problems in
environments such as OSGi.

One final thing is whether the type of data source should be
externalized from the client application. For example, I would expect
the application should not need to know whether it is dealing with
relational or LDAP data and that should instead be a concern of the
mapping configuration. For example, the underlying data source could
change an that should not necessarily impact business logic. JPA has
this abstraction notion in its Persistence Unit concept.

Jim


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




[DAS] Refactoring DAS to allow multiple implementatons

2007-02-21 Thread Luciano Resende

Current DAS only have one implementation supporting Relational Database
(RDB). In order to allow DAS to support multiple implementations (e.g LDAP
DAS proposed by Ole Ersoy :
http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg13395.html) I would
like to propose some changes on the DAS project structure as explained below
:

1.Create an das-api project, and move the general interfaces, and maybe part
of the config model to this project as well.
2.das-rdb and das-ldap would depend on this common das-api project
3.Enhance the factory pattern to handle multiple das implementations,
probably implementing the service locator pattern to handle the multiple
implementations.

The new programming model would probably look like :

DASFactory factory = DASFactory.getInstance(RBD)
DAS rdbDAS = factory.creDas(...)

Current unresolved issue that I have is regarding the config mode, i think
this might be specific to each implementation, and I need to see what's the
best approach to handle this on the das-api.

I should have something in my sandbox over the weekend.

Thoughts ?

--
Luciano Resende
http://people.apache.org/~lresende


Re: [DAS] Refactoring DAS to allow multiple implementatons

2007-02-21 Thread Adriano Crestani

I suggest:

DASFactory.registerFactory(RDB, 
org.apache.tuscany.das.rdb.impl.DASFactoryImpl);
DASFactory factory = DASFactory.getInstance(RBD)
DAS rdbDAS = factory.creDas(...)

would it work? Than there would be possible to add factories dynamically.

Adriano Crestani

On 2/21/07, Luciano Resende [EMAIL PROTECTED] wrote:


Current DAS only have one implementation supporting Relational Database
(RDB). In order to allow DAS to support multiple implementations (e.g LDAP
DAS proposed by Ole Ersoy :
http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg13395.html) I
would
like to propose some changes on the DAS project structure as explained
below
:

1.Create an das-api project, and move the general interfaces, and maybe
part
of the config model to this project as well.
2.das-rdb and das-ldap would depend on this common das-api project
3.Enhance the factory pattern to handle multiple das implementations,
probably implementing the service locator pattern to handle the multiple
implementations.

The new programming model would probably look like :

DASFactory factory = DASFactory.getInstance(RBD)
DAS rdbDAS = factory.creDas(...)

Current unresolved issue that I have is regarding the config mode, i think
this might be specific to each implementation, and I need to see what's
the
best approach to handle this on the das-api.

I should have something in my sandbox over the weekend.

Thoughts ?

--
Luciano Resende
http://people.apache.org/~lresende



Re: [DAS] Refactoring DAS to allow multiple implementatons

2007-02-21 Thread Jim Marino


On Feb 21, 2007, at 3:04 PM, Luciano Resende wrote:

Current DAS only have one implementation supporting Relational  
Database
(RDB). In order to allow DAS to support multiple implementations  
(e.g LDAP

DAS proposed by Ole Ersoy :
http://www.mail-archive.com/tuscany-dev@ws.apache.org/ 
msg13395.html) I would
like to propose some changes on the DAS project structure as  
explained below

:

1.Create an das-api project, and move the general interfaces, and  
maybe part

of the config model to this project as well.
2.das-rdb and das-ldap would depend on this common das-api project
3.Enhance the factory pattern to handle multiple das implementations,
probably implementing the service locator pattern to handle the  
multiple

implementations.

The new programming model would probably look like :

DASFactory factory = DASFactory.getInstance(RBD)
DAS rdbDAS = factory.creDas(...)

Current unresolved issue that I have is regarding the config mode,  
i think
this might be specific to each implementation, and I need to see  
what's the

best approach to handle this on the das-api.

I should have something in my sandbox over the weekend.

Thoughts ?


I'm more focused on JPA and SCA so my comments may be biased :-)

I'd suggest moving away from the service locator pattern except in  
pure J2SE or legacy J2EE 1.4 environments and using dependency  
injection instead. EJB3/JPA does what you outline using annotations  
and it may be worth looking at in-depth since it is based on a lot of  
practical experience from integrating various O/R implementations in  
managed environments. For Tuscany, DAS could support annotations  
similar to what we have done with the JPA integration in trunk (i.e.  
the standard JPA annotations or Tuscany's @Resource) .  For other  
environments such as J2EE 1.5, DAS could probably use the @Resource  
annotation. In Spring you can also define your own custom annotation  
type or resuse @Resource.


For pure J2SE environments, or where an application wants to manage  
the DAS factory, you may want to consider just allowing the  
application to new up the DASFactory or pass some sort of  
Configuration object or InputStream to an XML source. This will allow  
you to avoid making assumptions about where configuration is located  
or provide an extensibility point for various packaging types. It  
will also allow you to avoid all sorts of nasty problems in  
environments such as OSGi.


One final thing is whether the type of data source should be  
externalized from the client application. For example, I would expect  
the application should not need to know whether it is dealing with  
relational or LDAP data and that should instead be a concern of the  
mapping configuration. For example, the underlying data source could  
change an that should not necessarily impact business logic. JPA has  
this abstraction notion in its Persistence Unit concept.


Jim


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