Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Simon Laws

On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:


On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:



  On 30/11/06, Jean-Sebastien Delfino [EMAIL PROTECTED] wrote:
 
  Pete Robbins wrote:
   Our current method of packaging and loading an extension is fairly
   simple:
   we load all schema and libraries in the extensions path. This has a
   number
   of problems.
  
   1. An extension may consist of more than one library e.g.
   libmy_extension.so
   and libmy_extension_utils.so. Our current loading scheme will
attempt
  to
   load both of these and may fail on the one that doesn't provide the
   extension initialize method. On MacOS the output of our build
produces
  a
   libx.dylib and a series of symlinks to this called libx.0.dylib ,
   libx.0.0.dylib etc.. ur runtime loads ALL of these which doesn't
cause
   problems as they are all the sam library and just repeatedly
register
  to
   handle the same requests. Very inefficient though!
  
   2. Control of whether or not to load an extension library is
currently
  by
   renaming the library so the runtime doesn't find it. An example is
   that we
   ship our python extension as libtuscany_sca_python.so.diabled. This
is
 
   horrible and error prone.
  
   We could improve this by having a system configuration file that
lists
   the
   required extensions but the I like the self contained package
approach
   that
   we have now. I'd like to implement an improved scheme for packaging
an
   extension by introducing a per extension configuration file.
Something
   like:
  
  
   tuscany_sca_ws_binding.extension
  
  
   scacpp:extension name=ws binding enabled=true
 library name=tuscany_sca_ws_reference/
 library name=tuscany_sca_ws_service/
   /scacppp:extension
  
   So the package would look like:
  
   extensions/
ws/
  tusany_sca_ws_binding.extension
  lib/
  xsd/
  other_folder/
  ...
  
   The .extension configuration file is saying to load the library
which
  is
   located somewhere in the package... the runtime will find it... no
   need to
   specify a path.
  
   Taking this further the configuration file could list the schema to
be
   loaded. Currently the runtime will just load any it finds but these
   may not
   be needed by the runtime e.g. the schema may be for some extension
   implementation specific purpose.
  
   I think it would also be good for the extension initialization()
   method to
   take as a parameter the root of the extension e.g.
   extension(/tuscany/extensions/ws). This would allow the extension
   package
   to contain any configuration information that it needs.
  
   I'd like to start by at least introducing the .extension file for
each
   extension and loading only the specified library(ies) if the
extension
  is
   enabled.
  
   Any thoughts?
  
  
  
 
  Two thoughts:
  - convention over configuration
  - the runtime should be consumable without having to go tweak XML
  configuration files
 
  If I remember correctly, renaming the dlls to .disabled was a last
  minute change to work around DLL loading errors with our M2 release on
  Windows.
 
  I agree that we should do better than renaming to .disabled, but I'd
  like to understand better the actual issues that we faced before
  inventing yet another XML based runtime  configuration language :)
 
  I'm aware of the following issues:
  1. We need the runtime to load extension libs only, not other libs
under
 
  the extension directory which are not actual extensions
  2. Same for XSDs, we need to load XSDs that contribute to SCDL, and
  leave other XSDs under the extension directory alone
  3. Extensions that cannot be loaded because some of their dependencies
  are not there should no break the runtime
  4. The system admin / installer should be able to disable extensions
  that won't load because their dependencies are not there (I'm not yet
  convinced that this is still an issue if we manage to solve issue #3)
 
  Did we run into any other big issues?


 No, that's about it.

 2. XSD loading can be done by convention (schemas for the runtime are
 always in a folder called 'xsd'
 1. Could be solved in a similar way by only loading libraries in a
folder
 called ???
 3. Can be solved by just ignoring the load errors/issuing a warning
rather
 than giving up
 4. Can be solved by solution to 3.




I recall now why 3. was a big problem. Windows sometimes throws up an
error
dialog when the load fails so it was not just a case of the runtime
handling
the load failure so we had to disable the extension.

Cheers,

--
Pete



--
Pete

Pete, just summarizing so that I understand. It seems there are two parts

to this.

A/ Building and installing an extension in order that it can be consumed by
the runtime. Building and installing extensions is potentially a separate
activity from building and installing the runtime itself. Looking at the M2
download they all come together at the moment.
B/ Optionally consuming/enabling an extension 

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Pete Robbins

On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:


On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

 On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
 
 
   On 30/11/06, Jean-Sebastien Delfino [EMAIL PROTECTED] wrote:
  
   Pete Robbins wrote:
Our current method of packaging and loading an extension is fairly
simple:
we load all schema and libraries in the extensions path. This has
a
number
of problems.
   
1. An extension may consist of more than one library e.g.
libmy_extension.so
and libmy_extension_utils.so. Our current loading scheme will
 attempt
   to
load both of these and may fail on the one that doesn't provide
the
extension initialize method. On MacOS the output of our build
 produces
   a
libx.dylib and a series of symlinks to this called libx.0.dylib ,
libx.0.0.dylib etc.. ur runtime loads ALL of these which doesn't
 cause
problems as they are all the sam library and just repeatedly
 register
   to
handle the same requests. Very inefficient though!
   
2. Control of whether or not to load an extension library is
 currently
   by
renaming the library so the runtime doesn't find it. An example is
that we
ship our python extension as libtuscany_sca_python.so.diabled.
This
 is
  
horrible and error prone.
   
We could improve this by having a system configuration file that
 lists
the
required extensions but the I like the self contained package
 approach
that
we have now. I'd like to implement an improved scheme for
packaging
 an
extension by introducing a per extension configuration file.
 Something
like:
   
   
tuscany_sca_ws_binding.extension
   
   
scacpp:extension name=ws binding enabled=true
  library name=tuscany_sca_ws_reference/
  library name=tuscany_sca_ws_service/
/scacppp:extension
   
So the package would look like:
   
extensions/
 ws/
   tusany_sca_ws_binding.extension
   lib/
   xsd/
   other_folder/
   ...
   
The .extension configuration file is saying to load the library
 which
   is
located somewhere in the package... the runtime will find it... no
need to
specify a path.
   
Taking this further the configuration file could list the schema
to
 be
loaded. Currently the runtime will just load any it finds but
these
may not
be needed by the runtime e.g. the schema may be for some extension
implementation specific purpose.
   
I think it would also be good for the extension initialization()
method to
take as a parameter the root of the extension e.g.
extension(/tuscany/extensions/ws). This would allow the
extension
package
to contain any configuration information that it needs.
   
I'd like to start by at least introducing the .extension file for
 each
extension and loading only the specified library(ies) if the
 extension
   is
enabled.
   
Any thoughts?
   
   
   
  
   Two thoughts:
   - convention over configuration
   - the runtime should be consumable without having to go tweak XML
   configuration files
  
   If I remember correctly, renaming the dlls to .disabled was a last
   minute change to work around DLL loading errors with our M2 release
on
   Windows.
  
   I agree that we should do better than renaming to .disabled, but I'd
   like to understand better the actual issues that we faced before
   inventing yet another XML based runtime  configuration language :)
  
   I'm aware of the following issues:
   1. We need the runtime to load extension libs only, not other libs
 under
  
   the extension directory which are not actual extensions
   2. Same for XSDs, we need to load XSDs that contribute to SCDL, and
   leave other XSDs under the extension directory alone
   3. Extensions that cannot be loaded because some of their
dependencies
   are not there should no break the runtime
   4. The system admin / installer should be able to disable extensions
   that won't load because their dependencies are not there (I'm not
yet
   convinced that this is still an issue if we manage to solve issue
#3)
  
   Did we run into any other big issues?
 
 
  No, that's about it.
 
  2. XSD loading can be done by convention (schemas for the runtime are
  always in a folder called 'xsd'
  1. Could be solved in a similar way by only loading libraries in a
 folder
  called ???
  3. Can be solved by just ignoring the load errors/issuing a warning
 rather
  than giving up
  4. Can be solved by solution to 3.
 
 
 

 I recall now why 3. was a big problem. Windows sometimes throws up an
 error
 dialog when the load fails so it was not just a case of the runtime
 handling
 the load failure so we had to disable the extension.

 Cheers,

 --
 Pete



 --
 Pete

 Pete, just summarizing so that I understand. It seems there are two
parts
to this.

A/ Building and installing an extension in order that it can be consumed
by
the runtime. Building and installing 

Re: [jira] Commented: (TUSCANY-949) Incorrect set of extensions published to the maven repo

2006-11-30 Thread ant elder

On 11/29/06, Jeremy Boynes [EMAIL PROTECTED] wrote:


On Nov 29, 2006, at 4:00 AM, ant elder wrote:
 Looks like that answers all the questions and sounds convincing to
 me. We
 discussed doing this the other day and agreed it needed doing and
 based on
 that Simon went ahead and did the work for it, so I think we should
 go ahead
 and apply this to M2 now. Unless there are any other concerns I'll
 do this
 tonight.

We didn't agree it needed doing. I still don't think it does as I see
no downside to not making this change.

I have concerns that using profiles this way will cause problems
(e.g. what happens if two profiles include different modules) and I
was hoping Simon had a better solution. I think this approach is
confusing for users as it's not obvious which modules get built and
which don't.

I am also concerned that there has not been enough testing given we
are so close to release.

I'm not concerned enough though to veto such a change so if you think
it's the right thing to do then go ahead. I would suggest waiting to
see what the consensus really is.
--
Jeremy



I'm reluctant to commit this while you're so against it, but I'm not sure I
understand your concerns.

We did clearly tell Simon to go and make a patch to do this:

jboynes simonnash: if you want something different, please give us a
patch for the build to build it as YOU want it

and:

simonnash so in building the release I would expect to select a subset of
all available modules and copy those selected modules into contrib and also
deploy htem to maven
jboynes patches welcome
simonnash ok i will do what I can.  any help from others will be
appreciated.

and then the IRC chat summary posted to the dev list clearly said it was
happening:

there was some discussion around what Tuscany jars are released as part of
M2 into the maven repository. Currently everything in the Tuscany build is
released, should that be trimmed to only those things that we want to say
are ready? Simon is going to create a patch to the build to make this
possible.

No one questioned that and in good faith he's gone off and made a patch as
requested.

With the current Axiom issue we have a bit of time now, I've tried the patch
and seems to work fine, would you give it a test? What other testing would
you like to see?

Another thing I think we should remember is that this patch is from a new
contributor so we should be receptive so as to encourage further
participation.

I'd really appreciate others comments on if we should apply this.

  ...ant


Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Pete Robbins

On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:




 On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
  
  
On 30/11/06, Jean-Sebastien Delfino  [EMAIL PROTECTED] wrote:
   
Pete Robbins wrote:
 Our current method of packaging and loading an extension is
 fairly
 simple:
 we load all schema and libraries in the extensions path. This
 has a
 number
 of problems.

 1. An extension may consist of more than one library e.g.
 libmy_extension.so
 and libmy_extension_utils.so. Our current loading scheme will
  attempt
to
 load both of these and may fail on the one that doesn't provide
 the
 extension initialize method. On MacOS the output of our build
  produces
a
 libx.dylib and a series of symlinks to this called libx.0.dylib,
 libx.0.0.dylib etc.. ur runtime loads ALL of these which doesn't
  cause
 problems as they are all the sam library and just repeatedly
  register
to
 handle the same requests. Very inefficient though!

 2. Control of whether or not to load an extension library is
  currently
by
 renaming the library so the runtime doesn't find it. An example
 is
 that we
 ship our python extension as libtuscany_sca_python.so.diabled.
 This
  is
   
 horrible and error prone.

 We could improve this by having a system configuration file that
  lists
 the
 required extensions but the I like the self contained package
  approach
 that
 we have now. I'd like to implement an improved scheme for
 packaging
  an
 extension by introducing a per extension configuration file.
  Something
 like:


 tuscany_sca_ws_binding.extension


 scacpp:extension name=ws binding enabled=true
   library name=tuscany_sca_ws_reference/
   library name=tuscany_sca_ws_service/
 /scacppp:extension

 So the package would look like:

 extensions/
  ws/
tusany_sca_ws_binding.extension
lib/
xsd/
other_folder/
...

 The .extension configuration file is saying to load the library
  which
is
 located somewhere in the package... the runtime will find it...
 no
 need to
 specify a path.

 Taking this further the configuration file could list the schema
 to
  be
 loaded. Currently the runtime will just load any it finds but
 these
 may not
 be needed by the runtime e.g. the schema may be for some
 extension
 implementation specific purpose.

 I think it would also be good for the extension initialization()
 method to
 take as a parameter the root of the extension e.g.
 extension(/tuscany/extensions/ws). This would allow the
 extension
 package
 to contain any configuration information that it needs.

 I'd like to start by at least introducing the .extension file
 for
  each
 extension and loading only the specified library(ies) if the
  extension
is
 enabled.

 Any thoughts?



   
Two thoughts:
- convention over configuration
- the runtime should be consumable without having to go tweak XML
configuration files
   
If I remember correctly, renaming the dlls to .disabled was a last

minute change to work around DLL loading errors with our M2
 release on
Windows.
   
I agree that we should do better than renaming to .disabled, but
 I'd
like to understand better the actual issues that we faced before
inventing yet another XML based runtime  configuration language :)
   
I'm aware of the following issues:
1. We need the runtime to load extension libs only, not other libs
  under
   
the extension directory which are not actual extensions
2. Same for XSDs, we need to load XSDs that contribute to SCDL,
 and
leave other XSDs under the extension directory alone
3. Extensions that cannot be loaded because some of their
 dependencies
are not there should no break the runtime
4. The system admin / installer should be able to disable
 extensions
that won't load because their dependencies are not there (I'm not
 yet
convinced that this is still an issue if we manage to solve issue
 #3)
   
Did we run into any other big issues?
  
  
   No, that's about it.
  
   2. XSD loading can be done by convention (schemas for the runtime
 are
   always in a folder called 'xsd'
   1. Could be solved in a similar way by only loading libraries in a
  folder
   called ???
   3. Can be solved by just ignoring the load errors/issuing a warning
  rather
   than giving up
   4. Can be solved by solution to 3.
  
  
  
 
  I recall now why 3. was a big problem. Windows sometimes throws up an
  error
  dialog when the load fails so it was not just a case of the runtime
  handling
  the load failure so we had to disable the extension.
 

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Simon Laws

On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:


On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:



  On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
 
  On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
   On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
   
   
   
 On 30/11/06, Jean-Sebastien Delfino  [EMAIL PROTECTED]
wrote:

 Pete Robbins wrote:
  Our current method of packaging and loading an extension is
  fairly
  simple:
  we load all schema and libraries in the extensions path. This
  has a
  number
  of problems.
 
  1. An extension may consist of more than one library e.g.
  libmy_extension.so
  and libmy_extension_utils.so. Our current loading scheme will
   attempt
 to
  load both of these and may fail on the one that doesn't
provide
  the
  extension initialize method. On MacOS the output of our build
   produces
 a
  libx.dylib and a series of symlinks to this called
libx.0.dylib,
  libx.0.0.dylib etc.. ur runtime loads ALL of these which
doesn't
   cause
  problems as they are all the sam library and just repeatedly
   register
 to
  handle the same requests. Very inefficient though!
 
  2. Control of whether or not to load an extension library is
   currently
 by
  renaming the library so the runtime doesn't find it. An
example
  is
  that we
  ship our python extension as libtuscany_sca_python.so.diabled.
  This
   is

  horrible and error prone.
 
  We could improve this by having a system configuration file
that
   lists
  the
  required extensions but the I like the self contained package
   approach
  that
  we have now. I'd like to implement an improved scheme for
  packaging
   an
  extension by introducing a per extension configuration file.
   Something
  like:
 
 
  tuscany_sca_ws_binding.extension
 
 
  scacpp:extension name=ws binding enabled=true
library name=tuscany_sca_ws_reference/
library name=tuscany_sca_ws_service/
  /scacppp:extension
 
  So the package would look like:
 
  extensions/
   ws/
 tusany_sca_ws_binding.extension
 lib/
 xsd/
 other_folder/
 ...
 
  The .extension configuration file is saying to load the
library
   which
 is
  located somewhere in the package... the runtime will find
it...
  no
  need to
  specify a path.
 
  Taking this further the configuration file could list the
schema
  to
   be
  loaded. Currently the runtime will just load any it finds but
  these
  may not
  be needed by the runtime e.g. the schema may be for some
  extension
  implementation specific purpose.
 
  I think it would also be good for the extension
initialization()
  method to
  take as a parameter the root of the extension e.g.
  extension(/tuscany/extensions/ws). This would allow the
  extension
  package
  to contain any configuration information that it needs.
 
  I'd like to start by at least introducing the .extension file
  for
   each
  extension and loading only the specified library(ies) if the
   extension
 is
  enabled.
 
  Any thoughts?
 
 
 

 Two thoughts:
 - convention over configuration
 - the runtime should be consumable without having to go tweak
XML
 configuration files

 If I remember correctly, renaming the dlls to .disabled was a
last
 
 minute change to work around DLL loading errors with our M2
  release on
 Windows.

 I agree that we should do better than renaming to .disabled, but
  I'd
 like to understand better the actual issues that we faced before
 inventing yet another XML based runtime  configuration language
:)

 I'm aware of the following issues:
 1. We need the runtime to load extension libs only, not other
libs
   under

 the extension directory which are not actual extensions
 2. Same for XSDs, we need to load XSDs that contribute to SCDL,
  and
 leave other XSDs under the extension directory alone
 3. Extensions that cannot be loaded because some of their
  dependencies
 are not there should no break the runtime
 4. The system admin / installer should be able to disable
  extensions
 that won't load because their dependencies are not there (I'm
not
  yet
 convinced that this is still an issue if we manage to solve
issue
  #3)

 Did we run into any other big issues?
   
   
No, that's about it.
   
2. XSD loading can be done by convention (schemas for the runtime
  are
always in a folder called 'xsd'
1. Could be solved in a similar way by only loading libraries in a
   folder
called ???
3. Can be solved by just ignoring the load errors/issuing a
warning
   rather
than giving up
4. Can be solved by solution to 3.
   
   

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Pete Robbins

On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:


On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

 On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
 
 
   On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
  
   On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
   
On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:



  On 30/11/06, Jean-Sebastien Delfino  [EMAIL PROTECTED]
 wrote:
 
  Pete Robbins wrote:
   Our current method of packaging and loading an extension is
   fairly
   simple:
   we load all schema and libraries in the extensions path.
This
   has a
   number
   of problems.
  
   1. An extension may consist of more than one library e.g.
   libmy_extension.so
   and libmy_extension_utils.so. Our current loading scheme
will
attempt
  to
   load both of these and may fail on the one that doesn't
 provide
   the
   extension initialize method. On MacOS the output of our
build
produces
  a
   libx.dylib and a series of symlinks to this called
 libx.0.dylib,
   libx.0.0.dylib etc.. ur runtime loads ALL of these which
 doesn't
cause
   problems as they are all the sam library and just repeatedly
register
  to
   handle the same requests. Very inefficient though!
  
   2. Control of whether or not to load an extension library is
currently
  by
   renaming the library so the runtime doesn't find it. An
 example
   is
   that we
   ship our python extension as
libtuscany_sca_python.so.diabled.
   This
is
 
   horrible and error prone.
  
   We could improve this by having a system configuration file
 that
lists
   the
   required extensions but the I like the self contained
package
approach
   that
   we have now. I'd like to implement an improved scheme for
   packaging
an
   extension by introducing a per extension configuration file.
Something
   like:
  
  
   tuscany_sca_ws_binding.extension
  
  
   scacpp:extension name=ws binding enabled=true
 library name=tuscany_sca_ws_reference/
 library name=tuscany_sca_ws_service/
   /scacppp:extension
  
   So the package would look like:
  
   extensions/
ws/
  tusany_sca_ws_binding.extension
  lib/
  xsd/
  other_folder/
  ...
  
   The .extension configuration file is saying to load the
 library
which
  is
   located somewhere in the package... the runtime will find
 it...
   no
   need to
   specify a path.
  
   Taking this further the configuration file could list the
 schema
   to
be
   loaded. Currently the runtime will just load any it finds
but
   these
   may not
   be needed by the runtime e.g. the schema may be for some
   extension
   implementation specific purpose.
  
   I think it would also be good for the extension
 initialization()
   method to
   take as a parameter the root of the extension e.g.
   extension(/tuscany/extensions/ws). This would allow the
   extension
   package
   to contain any configuration information that it needs.
  
   I'd like to start by at least introducing the .extension
file
   for
each
   extension and loading only the specified library(ies) if the
extension
  is
   enabled.
  
   Any thoughts?
  
  
  
 
  Two thoughts:
  - convention over configuration
  - the runtime should be consumable without having to go tweak
 XML
  configuration files
 
  If I remember correctly, renaming the dlls to .disabled was a
 last
  
  minute change to work around DLL loading errors with our M2
   release on
  Windows.
 
  I agree that we should do better than renaming to .disabled,
but
   I'd
  like to understand better the actual issues that we faced
before
  inventing yet another XML based runtime  configuration
language
 :)
 
  I'm aware of the following issues:
  1. We need the runtime to load extension libs only, not other
 libs
under
 
  the extension directory which are not actual extensions
  2. Same for XSDs, we need to load XSDs that contribute to
SCDL,
   and
  leave other XSDs under the extension directory alone
  3. Extensions that cannot be loaded because some of their
   dependencies
  are not there should no break the runtime
  4. The system admin / installer should be able to disable
   extensions
  that won't load because their dependencies are not there (I'm
 not
   yet
  convinced that this is still an issue if we manage to solve
 issue
   #3)
 
  Did we run into any other big issues?


 No, that's about it.

 2. XSD loading can be done by convention (schemas for the
runtime
   are
 always in a folder called 'xsd'
 1. 

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Andrew Borley

On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
  
  
On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
   
On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

 On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
 
 
   On 30/11/06, Jean-Sebastien Delfino  [EMAIL PROTECTED]
  wrote:
  
   Pete Robbins wrote:
Our current method of packaging and loading an extension is
fairly
simple:
we load all schema and libraries in the extensions path.
 This
has a
number
of problems.
   
1. An extension may consist of more than one library e.g.
libmy_extension.so
and libmy_extension_utils.so. Our current loading scheme
 will
 attempt
   to
load both of these and may fail on the one that doesn't
  provide
the
extension initialize method. On MacOS the output of our
 build
 produces
   a
libx.dylib and a series of symlinks to this called
  libx.0.dylib,
libx.0.0.dylib etc.. ur runtime loads ALL of these which
  doesn't
 cause
problems as they are all the sam library and just repeatedly
 register
   to
handle the same requests. Very inefficient though!
   
2. Control of whether or not to load an extension library is
 currently
   by
renaming the library so the runtime doesn't find it. An
  example
is
that we
ship our python extension as
 libtuscany_sca_python.so.diabled.
This
 is
  
horrible and error prone.
   
We could improve this by having a system configuration file
  that
 lists
the
required extensions but the I like the self contained
 package
 approach
that
we have now. I'd like to implement an improved scheme for
packaging
 an
extension by introducing a per extension configuration file.
 Something
like:
   
   
tuscany_sca_ws_binding.extension
   
   
scacpp:extension name=ws binding enabled=true
  library name=tuscany_sca_ws_reference/
  library name=tuscany_sca_ws_service/
/scacppp:extension
   
So the package would look like:
   
extensions/
 ws/
   tusany_sca_ws_binding.extension
   lib/
   xsd/
   other_folder/
   ...
   
The .extension configuration file is saying to load the
  library
 which
   is
located somewhere in the package... the runtime will find
  it...
no
need to
specify a path.
   
Taking this further the configuration file could list the
  schema
to
 be
loaded. Currently the runtime will just load any it finds
 but
these
may not
be needed by the runtime e.g. the schema may be for some
extension
implementation specific purpose.
   
I think it would also be good for the extension
  initialization()
method to
take as a parameter the root of the extension e.g.
extension(/tuscany/extensions/ws). This would allow the
extension
package
to contain any configuration information that it needs.
   
I'd like to start by at least introducing the .extension
 file
for
 each
extension and loading only the specified library(ies) if the
 extension
   is
enabled.
   
Any thoughts?
   
   
   
  
   Two thoughts:
   - convention over configuration
   - the runtime should be consumable without having to go tweak
  XML
   configuration files
  
   If I remember correctly, renaming the dlls to .disabled was a
  last
   
   minute change to work around DLL loading errors with our M2
release on
   Windows.
  
   I agree that we should do better than renaming to .disabled,
 but
I'd
   like to understand better the actual issues that we faced
 before
   inventing yet another XML based runtime  configuration
 language
  :)
  
   I'm aware of the following issues:
   1. We need the runtime to load extension libs only, not other
  libs
 under
  
   the extension directory which are not actual extensions
   2. Same for XSDs, we need to load XSDs that contribute to
 SCDL,
and
   leave other XSDs under the extension directory alone
   3. Extensions that cannot be loaded because some of their
dependencies
   are not there should no break the runtime
   4. The system admin / installer should be able to disable
extensions
   that won't load because their dependencies are not there (I'm
  not
yet
   convinced that this is still an issue if we manage to 

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Andrew Borley

snip


 I would package the cpp language extension as

 cpp/
bin/
lib/
include/
xsd/
extension/

 The bin, lib, include are exactly what you would expect from a package that
 you might want to build against. The extension/ folder would hold the
 library that implements the extension interface and xsd holds... well xsds!



How would extensions be disabled? Rename the extension dir? Remove any
symlinks in extension/ ?

Cheers
Andy

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



Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Pete Robbins

On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:


snip

  I would package the cpp language extension as
 
  cpp/
 bin/
 lib/
 include/
 xsd/
 extension/
 
  The bin, lib, include are exactly what you would expect from a package
that
  you might want to build against. The extension/ folder would hold the
  library that implements the extension interface and xsd holds... well
xsds!
 

How would extensions be disabled? Rename the extension dir? Remove any
symlinks in extension/ ?




Remove symlink or the dll on windows






--
Pete


Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Pete Robbins

On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:


On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
 
  On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
   On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
   
   
   
 On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
  
  
On 30/11/06, Jean-Sebastien Delfino  [EMAIL PROTECTED]
   wrote:
   
Pete Robbins wrote:
 Our current method of packaging and loading an extension
is
 fairly
 simple:
 we load all schema and libraries in the extensions path.
  This
 has a
 number
 of problems.

 1. An extension may consist of more than one library e.g
.
 libmy_extension.so
 and libmy_extension_utils.so. Our current loading scheme
  will
  attempt
to
 load both of these and may fail on the one that doesn't
   provide
 the
 extension initialize method. On MacOS the output of our
  build
  produces
a
 libx.dylib and a series of symlinks to this called
   libx.0.dylib,
 libx.0.0.dylib etc.. ur runtime loads ALL of these which
   doesn't
  cause
 problems as they are all the sam library and just
repeatedly
  register
to
 handle the same requests. Very inefficient though!

 2. Control of whether or not to load an extension
library is
  currently
by
 renaming the library so the runtime doesn't find it. An
   example
 is
 that we
 ship our python extension as
  libtuscany_sca_python.so.diabled.
 This
  is
   
 horrible and error prone.

 We could improve this by having a system configuration
file
   that
  lists
 the
 required extensions but the I like the self contained
  package
  approach
 that
 we have now. I'd like to implement an improved scheme
for
 packaging
  an
 extension by introducing a per extension configuration
file.
  Something
 like:


 tuscany_sca_ws_binding.extension


 scacpp:extension name=ws binding enabled=true
   library name=tuscany_sca_ws_reference/
   library name=tuscany_sca_ws_service/
 /scacppp:extension

 So the package would look like:

 extensions/
  ws/
tusany_sca_ws_binding.extension
lib/
xsd/
other_folder/
...

 The .extension configuration file is saying to load the
   library
  which
is
 located somewhere in the package... the runtime will
find
   it...
 no
 need to
 specify a path.

 Taking this further the configuration file could list
the
   schema
 to
  be
 loaded. Currently the runtime will just load any it
finds
  but
 these
 may not
 be needed by the runtime e.g. the schema may be for some
 extension
 implementation specific purpose.

 I think it would also be good for the extension
   initialization()
 method to
 take as a parameter the root of the extension e.g.
 extension(/tuscany/extensions/ws). This would allow
the
 extension
 package
 to contain any configuration information that it needs.

 I'd like to start by at least introducing the .extension
  file
 for
  each
 extension and loading only the specified library(ies) if
the
  extension
is
 enabled.

 Any thoughts?



   
Two thoughts:
- convention over configuration
- the runtime should be consumable without having to go
tweak
   XML
configuration files
   
If I remember correctly, renaming the dlls to .disabled
was a
   last

minute change to work around DLL loading errors with our
M2
 release on
Windows.
   
I agree that we should do better than renaming to
.disabled,
  but
 I'd
like to understand better the actual issues that we faced
  before
inventing yet another XML based runtime  configuration
  language
   :)
   
I'm aware of the following issues:
1. We need the runtime to load extension libs only, not
other
   libs
  under
   
the extension directory which are not actual extensions
2. Same for XSDs, we need to load XSDs that contribute to
  SCDL,
 and
leave other XSDs under the extension directory alone
3. Extensions that cannot be loaded because some of their
 dependencies
are not there should no break the 

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Simon Laws

On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:


On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
  On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
  
   On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
   
On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:



  On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
 
  On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
   On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
   
   
   
 On 30/11/06, Jean-Sebastien Delfino 
[EMAIL PROTECTED]
wrote:

 Pete Robbins wrote:
  Our current method of packaging and loading an
extension
 is
  fairly
  simple:
  we load all schema and libraries in the extensions
path.
   This
  has a
  number
  of problems.
 
  1. An extension may consist of more than one library
e.g
 .
  libmy_extension.so
  and libmy_extension_utils.so. Our current loading
scheme
   will
   attempt
 to
  load both of these and may fail on the one that
doesn't
provide
  the
  extension initialize method. On MacOS the output of
our
   build
   produces
 a
  libx.dylib and a series of symlinks to this called
libx.0.dylib,
  libx.0.0.dylib etc.. ur runtime loads ALL of these
which
doesn't
   cause
  problems as they are all the sam library and just
 repeatedly
   register
 to
  handle the same requests. Very inefficient though!
 
  2. Control of whether or not to load an extension
 library is
   currently
 by
  renaming the library so the runtime doesn't find it.
An
example
  is
  that we
  ship our python extension as
   libtuscany_sca_python.so.diabled.
  This
   is

  horrible and error prone.
 
  We could improve this by having a system configuration
 file
that
   lists
  the
  required extensions but the I like the self contained
   package
   approach
  that
  we have now. I'd like to implement an improved scheme
 for
  packaging
   an
  extension by introducing a per extension configuration
 file.
   Something
  like:
 
 
  tuscany_sca_ws_binding.extension
 
 
  scacpp:extension name=ws binding enabled=true
library name=tuscany_sca_ws_reference/
library name=tuscany_sca_ws_service/
  /scacppp:extension
 
  So the package would look like:
 
  extensions/
   ws/
 tusany_sca_ws_binding.extension
 lib/
 xsd/
 other_folder/
 ...
 
  The .extension configuration file is saying to load
the
library
   which
 is
  located somewhere in the package... the runtime will
 find
it...
  no
  need to
  specify a path.
 
  Taking this further the configuration file could list
 the
schema
  to
   be
  loaded. Currently the runtime will just load any it
 finds
   but
  these
  may not
  be needed by the runtime e.g. the schema may be for
some
  extension
  implementation specific purpose.
 
  I think it would also be good for the extension
initialization()
  method to
  take as a parameter the root of the extension e.g.
  extension(/tuscany/extensions/ws). This would allow
 the
  extension
  package
  to contain any configuration information that it
needs.
 
  I'd like to start by at least introducing the
.extension
   file
  for
   each
  extension and loading only the specified library(ies)
if
 the
   extension
 is
  enabled.
 
  Any thoughts?
 
 
 

 Two thoughts:
 - convention over configuration
 - the runtime should be consumable without having to go
 tweak
XML
 configuration files

 If I remember correctly, renaming the dlls to .disabled
 was a
last
 
 minute change to work around DLL loading errors with our
 M2
  release on
 Windows.

 I agree that we should do better than renaming to
 .disabled,
   but
  I'd
 like to understand better the actual issues that we
faced
   before
 inventing yet another XML based runtime  configuration
   language
:)

 I'm aware of the following issues:
 1. We need the runtime to load extension libs only, not
 other
libs
   under

 the extension directory which are not actual extensions
 2. Same for XSDs, 

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Pete Robbins

On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:


On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

 On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:
 
  On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
   On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
   
On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

 On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
 
 
   On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
  
   On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
   
On 30/11/06, Pete Robbins [EMAIL PROTECTED]
wrote:



  On 30/11/06, Jean-Sebastien Delfino 
 [EMAIL PROTECTED]
 wrote:
 
  Pete Robbins wrote:
   Our current method of packaging and loading an
 extension
  is
   fairly
   simple:
   we load all schema and libraries in the extensions
 path.
This
   has a
   number
   of problems.
  
   1. An extension may consist of more than one library
 e.g
  .
   libmy_extension.so
   and libmy_extension_utils.so. Our current loading
 scheme
will
attempt
  to
   load both of these and may fail on the one that
 doesn't
 provide
   the
   extension initialize method. On MacOS the output of
 our
build
produces
  a
   libx.dylib and a series of symlinks to this called
 libx.0.dylib,
   libx.0.0.dylib etc.. ur runtime loads ALL of these
 which
 doesn't
cause
   problems as they are all the sam library and just
  repeatedly
register
  to
   handle the same requests. Very inefficient though!
  
   2. Control of whether or not to load an extension
  library is
currently
  by
   renaming the library so the runtime doesn't find it.
 An
 example
   is
   that we
   ship our python extension as
libtuscany_sca_python.so.diabled.
   This
is
 
   horrible and error prone.
  
   We could improve this by having a system
configuration
  file
 that
lists
   the
   required extensions but the I like the self
contained
package
approach
   that
   we have now. I'd like to implement an improved
scheme
  for
   packaging
an
   extension by introducing a per extension
configuration
  file.
Something
   like:
  
  
   tuscany_sca_ws_binding.extension
  
  
   scacpp:extension name=ws binding enabled=true
 library name=tuscany_sca_ws_reference/
 library name=tuscany_sca_ws_service/
   /scacppp:extension
  
   So the package would look like:
  
   extensions/
ws/
  tusany_sca_ws_binding.extension
  lib/
  xsd/
  other_folder/
  ...
  
   The .extension configuration file is saying to load
 the
 library
which
  is
   located somewhere in the package... the runtime will
  find
 it...
   no
   need to
   specify a path.
  
   Taking this further the configuration file could
list
  the
 schema
   to
be
   loaded. Currently the runtime will just load any it
  finds
but
   these
   may not
   be needed by the runtime e.g. the schema may be for
 some
   extension
   implementation specific purpose.
  
   I think it would also be good for the extension
 initialization()
   method to
   take as a parameter the root of the extension e.g.
   extension(/tuscany/extensions/ws). This would
allow
  the
   extension
   package
   to contain any configuration information that it
 needs.
  
   I'd like to start by at least introducing the
 .extension
file
   for
each
   extension and loading only the specified
library(ies)
 if
  the
extension
  is
   enabled.
  
   Any thoughts?
  
  
  
 
  Two thoughts:
  - convention over configuration
  - the runtime should be consumable without having to
go
  tweak
 XML
  configuration files
 
  If I remember correctly, renaming the dlls to
.disabled
  was a
 last
  
  minute change to work around DLL loading errors with
our
  M2
   release on
  Windows.
 
  I agree that we should do better than renaming to
  .disabled,
but
   I'd
  like to understand better the actual issues that we
 faced
before
  inventing yet another XML based runtime  configuration
language
 

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Andrew Borley

On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:
  
   On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
  
  
On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
   
On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

 On 30/11/06, Pete Robbins [EMAIL PROTECTED]
 wrote:
 
 
 
   On 30/11/06, Jean-Sebastien Delfino 
  [EMAIL PROTECTED]
  wrote:
  
   Pete Robbins wrote:
Our current method of packaging and loading an
  extension
   is
fairly
simple:
we load all schema and libraries in the extensions
  path.
 This
has a
number
of problems.
   
1. An extension may consist of more than one library
  e.g
   .
libmy_extension.so
and libmy_extension_utils.so. Our current loading
  scheme
 will
 attempt
   to
load both of these and may fail on the one that
  doesn't
  provide
the
extension initialize method. On MacOS the output of
  our
 build
 produces
   a
libx.dylib and a series of symlinks to this called
  libx.0.dylib,
libx.0.0.dylib etc.. ur runtime loads ALL of these
  which
  doesn't
 cause
problems as they are all the sam library and just
   repeatedly
 register
   to
handle the same requests. Very inefficient though!
   
2. Control of whether or not to load an extension
   library is
 currently
   by
renaming the library so the runtime doesn't find it.
  An
  example
is
that we
ship our python extension as
 libtuscany_sca_python.so.diabled.
This
 is
  
horrible and error prone.
   
We could improve this by having a system
 configuration
   file
  that
 lists
the
required extensions but the I like the self
 contained
 package
 approach
that
we have now. I'd like to implement an improved
 scheme
   for
packaging
 an
extension by introducing a per extension
 configuration
   file.
 Something
like:
   
   
tuscany_sca_ws_binding.extension
   
   
scacpp:extension name=ws binding enabled=true
  library name=tuscany_sca_ws_reference/
  library name=tuscany_sca_ws_service/
/scacppp:extension
   
So the package would look like:
   
extensions/
 ws/
   tusany_sca_ws_binding.extension
   lib/
   xsd/
   other_folder/
   ...
   
The .extension configuration file is saying to load
  the
  library
 which
   is
located somewhere in the package... the runtime will
   find
  it...
no
need to
specify a path.
   
Taking this further the configuration file could
 list
   the
  schema
to
 be
loaded. Currently the runtime will just load any it
   finds
 but
these
may not
be needed by the runtime e.g. the schema may be for
  some
extension
implementation specific purpose.
   
I think it would also be good for the extension
  initialization()
method to
take as a parameter the root of the extension e.g.
extension(/tuscany/extensions/ws). This would
 allow
   the
extension
package
to contain any configuration information that it
  needs.
   
I'd like to start by at least introducing the
  .extension
 file
for
 each
extension and loading only the specified
 library(ies)
  if
   the
 extension
   is
enabled.
   
Any thoughts?
   
   
   
  
   Two thoughts:
   - convention over configuration
   - the runtime should be consumable without having to
 go
   tweak
  XML
   configuration files
  
   If I remember correctly, renaming the dlls to
 .disabled
   was a
  last
   
   minute change to work around DLL loading errors with
 our
   M2
release on
   Windows.
  
   

Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Simon Laws

On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:


On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:
  
   On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
  
  
On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
   
On 11/30/06, Pete Robbins [EMAIL PROTECTED]
wrote:

 On 30/11/06, Pete Robbins [EMAIL PROTECTED]
 wrote:
 
 
 
   On 30/11/06, Jean-Sebastien Delfino 
  [EMAIL PROTECTED]
  wrote:
  
   Pete Robbins wrote:
Our current method of packaging and loading an
  extension
   is
fairly
simple:
we load all schema and libraries in the extensions
  path.
 This
has a
number
of problems.
   
1. An extension may consist of more than one
library
  e.g
   .
libmy_extension.so
and libmy_extension_utils.so. Our current loading
  scheme
 will
 attempt
   to
load both of these and may fail on the one that
  doesn't
  provide
the
extension initialize method. On MacOS the output
of
  our
 build
 produces
   a
libx.dylib and a series of symlinks to this called
  libx.0.dylib,
libx.0.0.dylib etc.. ur runtime loads ALL of these
  which
  doesn't
 cause
problems as they are all the sam library and just
   repeatedly
 register
   to
handle the same requests. Very inefficient though!
   
2. Control of whether or not to load an extension
   library is
 currently
   by
renaming the library so the runtime doesn't find
it.
  An
  example
is
that we
ship our python extension as
 libtuscany_sca_python.so.diabled.
This
 is
  
horrible and error prone.
   
We could improve this by having a system
 configuration
   file
  that
 lists
the
required extensions but the I like the self
 contained
 package
 approach
that
we have now. I'd like to implement an improved
 scheme
   for
packaging
 an
extension by introducing a per extension
 configuration
   file.
 Something
like:
   
   
tuscany_sca_ws_binding.extension
   
   
scacpp:extension name=ws binding
enabled=true
  library name=tuscany_sca_ws_reference/
  library name=tuscany_sca_ws_service/
/scacppp:extension
   
So the package would look like:
   
extensions/
 ws/
   tusany_sca_ws_binding.extension
   lib/
   xsd/
   other_folder/
   ...
   
The .extension configuration file is saying to
load
  the
  library
 which
   is
located somewhere in the package... the runtime
will
   find
  it...
no
need to
specify a path.
   
Taking this further the configuration file could
 list
   the
  schema
to
 be
loaded. Currently the runtime will just load any
it
   finds
 but
these
may not
be needed by the runtime e.g. the schema may be
for
  some
extension
implementation specific purpose.
   
I think it would also be good for the extension
  initialization()
method to
take as a parameter the root of the extension e.g.
extension(/tuscany/extensions/ws). This would
 allow
   the
extension
package
to contain any configuration information that it
  needs.
   
I'd like to start by at least introducing the
  .extension
 file
for
 each
extension and loading only the specified
 library(ies)
  if
   the
 extension
   is
enabled.
   
Any thoughts?
   
   
   
  
   Two thoughts:
   - convention over configuration
   - the runtime should be consumable without having to
 go
   tweak
  XML
   configuration files
  
   If I remember correctly, renaming the dlls to
 .disabled
   was a
  last
   
   minute change to work around DLL loading errors with
 our
   M2
release on
   Windows.
  
  

What next for SDO Java?

2006-11-30 Thread kelvin goodson

It's a good time to take stock of where we are and where we want to go with
SDO for Java.  Clearly there's work to be done with heading towards an
implementation of the SDO Java 2.1 spec [1,2,3],  but what else might we
do;  where do you want to take things?

[1] the new 2.1 spec 

http://osoa.org/download/attachments/36/Java-SDO-Spec-v2.1.0-FINAL.pdf?version=1
[2] For those with a good knowledge of the 2.1 spec you can see what's
changed here 

http://osoa.org/download/attachments/36/Java-SDO-Spec-v2.1.0-FINAL_changebars.pdf?version=1
[3] And for a brief digest of the changes see here ...

http://osoa.org/download/attachments/519/SDO_2.1_Features_Nov_2006.pdf?version=1

Does anyone have any bright ideas about value add features that they'd like
to suggest and ideally implement? While the spec work is all well and good,
I'm sure there are people out there who have said It would be really neat
if ...  Please feel free say it out loud by posting to the list.

On the other hand, more tests/samples are always welcome. Similarly
documentation.

For my part I've been thinking about the new spec element for compliant
change summary serialization, and I plan to put some ideas on the wiki soon.

In addition to the 2.1 work, we have a stack of JIRAs that if anyone is
feeling so inclined would be great to reduce.  I've taken a scan through to
see which might have a low bar of entry,  in that the skills required are
general skills rather than SDO implementation knowledge.  Please feel free
to scan them yourself if you feel you'd like more of a challenge.
Alternatively, as I have a reasonable grasp of the current JIRAs,  if there
are skills you have to offer, I could probably tell you reasonably quickly
where they might be applied.

If there's any maven experts out there TUSCANY-313 is a good candidate. Same
goes for TUSCANY-901and 902.

Similarly some discussion on how we might structure our code to take account
of the fact that the Interface2JavaGenerator class has a Java 5 dependency,
yet the rest has a 1.4.2 + prereq would be good (TUSCANY-257).

Maybe someone could attack TUSCANY-303, where the Java generator can only
handle a single namespace to package mapping, and this needs to be extended
to a list of such mappings (I'm not sure how deep that one gets into the
generator itself,  but may be some investigation might result in a partial
patch )

Tuscany 578 is a bucket defect for recording occasions where we throw the
wrong type of exceptions,  while not very exciting, it might be a good
candidate for someone to experience the process of submitting  a patch to an
open source project for the first time.

I would have thought that the new feature TUSCANY-893 wouldn't be too
onerous -- if you take a look and want to discuss it on the list that would
be great.

And of course I don't wany to denigrate you, the Tuscany community's
skills.  I'm sure there are those of you out there who are quite capable of
diving into some of the other issues,  but like I said,  these are the ones
that don't require you to get your head round much of the Tuscany Java SDO
implementation.

Please don't be shy.  If you think you can help we'd love to hear from you.

Regards, Kelvin.


Re: Much ado about nothing (Re: WSCOMMONS-131 and options for Tuscany SCA Java M2 release)

2006-11-30 Thread Davanum Srinivas

Folks,

Can't you just use maven's exclusion mechanism:
http://maven.apache.org/ref/2.0.4/maven-model/maven.html#class_exclusion

to exclude the specific version of axiom and add a specific dependency
on the new one?

thanks,
dims

On 11/29/06, Davanum Srinivas [EMAIL PROTECTED] wrote:

Aha! so there's a catch. We still haven't started the process for a
Axis2 1.1.1. Hoping to do that with a thorough JIRA scrub this week or
early next week. To see what needs to be fixed for a quick 1.1.1
release. Will let you all know when we have some idea.

thanks,
dims

On 11/29/06, Simon Nash [EMAIL PROTECTED] wrote:
 Thanks, Dims.

 We will need a new release of Axis2 as well, since the POMs in
 Axis2 1.1 point to Axiom 1.2.  Will this be available at the
 same time as the new release of Axiom?

Simon

 Davanum Srinivas wrote:
  Thanks Jim/Jeremy :)
 
  Please look at the pom's in the svn. the SNAPSHOT jars are here:
  http://ws.zones.apache.org/repository/org.apache.ws.commons.axiom/jars/
 
  thanks,
  dims
 
  On 11/28/06, Jeremy Boynes [EMAIL PROTECTED] wrote:
 
  On Nov 28, 2006, at 1:24 PM, Davanum Srinivas wrote:
 
   Folks,
  
   Fact #1: WSCOMMONS-131 is fixed in SVN.
   Fact #2: We've started a VOTE for releasing Axiom 1.2.1 [1]. Plan is
   to do the release this week.
  
   What's the ruckus all about? (Please don't make me all the emails :)
 
  Well, now, nothing :-)
 
  Are there any artifacts for 1.2.1 that we can take a look at?
  --
  Jeremy
 
 
 


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




--
Davanum Srinivas : http://www.wso2.net (Oxygen for Web Service Developers)




--
Davanum Srinivas : http://www.wso2.net (Oxygen for Web Service Developers)

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



Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Greg Dritschler

I've tried out the suggested fixes and I have run into a big problem.
By proxying the inbound wire of the composite reference, there is no
databinding interceptor in the invocation chain.  This causes
Axis2TargetInvoker to choke.

   Exception java.lang.IllegalArgumentException Exception message: Can't
handle mixed payloads betweem OMElements and other types.

   java.lang.IllegalArgumentException: Can't handle mixed payloads betweem
OMElements and other types.
at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.createOperationClient
(Axis2TargetInvoker.java)
at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invokeTarget(
Axis2TargetInvoker.java:70)
at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invoke(
Axis2TargetInvoker.java:107)
at org.apache.tuscany.core.wire.InvokerInterceptor.invoke(
InvokerInterceptor.java:44)
at org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(
SynchronousBridgingInterceptor.java:41)
at org.apache.tuscany.spi.wire.AbstractInboundInvocationHandler.invoke(
AbstractInboundInvocationHandler.java:60)
at org.apache.tuscany.core.wire.jdk.JDKInboundInvocationHandler.invoke(
JDKInboundInvocationHandler.java:108)

How do we get the databinding transformation into this flow?  The
DatabindingInterceptor currently requires an outbound wire from the client.
Dynamically creating an outbound wire for a non-SCA client and connecting it
to the composite reference sounds like a major piece of work.  Is there a
simpler solution?


Re: database update problem

2006-11-30 Thread Adriano Crestani

OK, I can set any attribute ; )

You got an exception? I'm getting no exception here, the new item is just
not being updated in the database.

Adriano Crestani

On 11/30/06, Kevin Williams [EMAIL PROTECTED] wrote:


Hello Adriano,

No.  It should not be working this way and thanks for finding this bug!
The fact that a new Cart was added to the graph is recorded in the SDO
change summary and indicates to the DAS that an INSERT should be
generated.  However, it looks like the DAS then generates the insert
statement based solely on attributes that have been set.  I just tested
this and an invalid insert statement is generated which results in the
database throwing a SQLException; I assume you get a similar error.

I think there are two possible correct behaviors for this:

   1. The DAS always generates a complete INSERT statement using
  whatever values exist in the new DataObject.  If a property has
  not been set then these values will be null for object properties
  or default values for primitive properties.
   2. The DAS generates a partial INSERT whenever there are set
  properties and generates a complete INSERT otherwise

My guess is that the first option will be most straightforward for users
to understand and will lead to least astonishment.

Any thoughts folks?

In the meantime, Adriano, can you set some property of the new item you
want inserted?

I created TUSCANY-957 to track this.

Thanks.

--
Kevin




Adriano Crestani wrote:

 I created one table called cart with an auto-increment key on mysql,
 then
 I defined this table on the config.xml as containing an auto-increment
 key.
 Using SCO/DAS I create one tuple of the cart table, but no attribute
is
 set. I know DAS only update one attribute tuple only if it has been
 modified
 and if no attribute is set the tuple should not be added in the
database,
 but it is implicit that at least one attribute will be set, in this
 case the
 primary key, cause it is set as auto-increment key. Unfortunately the
 tuple
 is not being added in the database : (. Should it be working this way?

 Here is the code that tries to create a new cart tuple in the database:

 public void newCart() {
DAS das = DAS.FACTORY.createDAS
 (getClass().getClassLoader().getResourceAsStream(ShoppingCartConfig.xml
),

 getConnection());
Command command = das.getCommand(all carts);
DataObject allCarts = command.executeQuery();

DataObject newCart = allCarts.createDataObject(CART);
allCarts.getList(CART).add(newCart);
das.applyChanges(allCarts);

}


 How the table cart is being declared in the mysql database:

 CREATE TABLE CART (
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
  SUB_TOTAL DOUBLE,
  TAX DOUBLE,
  TOTAL DOUBLE,
  CONFIRMED INTEGER
 );

 ShoppingCartConfig.xml:

 ?xml version=1.0 encoding=ASCII?
 Config xmlns=http:///org.apache.tuscany.das.rdb/config.xsd;

Command name=all carts SQL=SELECT * FROM CART kind=Select/

Table tableName=CART
Column columnName=ID primaryKey=true generated=true/
/Table

 /Config




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




Re: database update problem

2006-11-30 Thread Kevin Williams
It is strange that you do not see an exception since the generated 
INSERT statement is not valid.
Everything should work fine if you use the work-around and set any 
attribute to some value. 


Thanks.
--
Kevin

Adriano Crestani wrote:


OK, I can set any attribute ; )

You got an exception? I'm getting no exception here, the new item is just
not being updated in the database.

Adriano Crestani

On 11/30/06, Kevin Williams [EMAIL PROTECTED] wrote:



Hello Adriano,

No.  It should not be working this way and thanks for finding this bug!
The fact that a new Cart was added to the graph is recorded in the SDO
change summary and indicates to the DAS that an INSERT should be
generated.  However, it looks like the DAS then generates the insert
statement based solely on attributes that have been set.  I just tested
this and an invalid insert statement is generated which results in the
database throwing a SQLException; I assume you get a similar error.

I think there are two possible correct behaviors for this:

   1. The DAS always generates a complete INSERT statement using
  whatever values exist in the new DataObject.  If a property has
  not been set then these values will be null for object properties
  or default values for primitive properties.
   2. The DAS generates a partial INSERT whenever there are set
  properties and generates a complete INSERT otherwise

My guess is that the first option will be most straightforward for users
to understand and will lead to least astonishment.

Any thoughts folks?

In the meantime, Adriano, can you set some property of the new item you
want inserted?

I created TUSCANY-957 to track this.

Thanks.

--
Kevin




Adriano Crestani wrote:

 I created one table called cart with an auto-increment key on mysql,
 then
 I defined this table on the config.xml as containing an auto-increment
 key.
 Using SCO/DAS I create one tuple of the cart table, but no attribute
is
 set. I know DAS only update one attribute tuple only if it has been
 modified
 and if no attribute is set the tuple should not be added in the
database,
 but it is implicit that at least one attribute will be set, in this
 case the
 primary key, cause it is set as auto-increment key. Unfortunately the
 tuple
 is not being added in the database : (. Should it be working this way?

 Here is the code that tries to create a new cart tuple in the 
database:


 public void newCart() {
DAS das = DAS.FACTORY.createDAS
 
(getClass().getClassLoader().getResourceAsStream(ShoppingCartConfig.xml

),

 getConnection());
Command command = das.getCommand(all carts);
DataObject allCarts = command.executeQuery();

DataObject newCart = allCarts.createDataObject(CART);
allCarts.getList(CART).add(newCart);
das.applyChanges(allCarts);

}


 How the table cart is being declared in the mysql database:

 CREATE TABLE CART (
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
  SUB_TOTAL DOUBLE,
  TAX DOUBLE,
  TOTAL DOUBLE,
  CONFIRMED INTEGER
 );

 ShoppingCartConfig.xml:

 ?xml version=1.0 encoding=ASCII?
 Config xmlns=http:///org.apache.tuscany.das.rdb/config.xsd;

Command name=all carts SQL=SELECT * FROM CART kind=Select/

Table tableName=CART
Column columnName=ID primaryKey=true generated=true/
/Table

 /Config




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








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



Re: Test case fails: LoanAppConversationTestCase

2006-11-30 Thread Ignacio Silva-Lepe

Hmm, not sure what's going on. I don't get the failure. It
almost sounds like the container is not getting the remove
call from the target invoker, which could happen if the
target invoker did not see a sequence end in the message,
which in turn could happen if the end interceptor were not
there or not working properly. Could you make sure that
the core/implementation.scdl in the target of core includes
ConversationWirePostProcessor?


On 11/29/06, Raymond Feng [EMAIL PROTECTED] wrote:


Hi,

I'm seeing the following test case failure in trunk code.

Raymond

---
T E S T S
---
Running loanappconversation.LoanAppConversationTestCase
Applied: Loan application: [Customer: John Doe, loan amount: 1000.0],
term: 0, s
tatus: open
Loan approved: false
Sleeping to let cancel complete ...
Cancelled: Loan application: [Customer: John Doe, loan amount: 1000.0],
term: 0,
status: cancelled
Trying to use the closed loan in the ended conversation ...
Closed: Loan application: null, term: 0, status: closed
junit.framework.AssertionFailedError: Target should not be found
   at junit.framework.Assert.fail(Assert.java:47)
   at loanappconversation.LoanAppConversationTestCase.test
(LoanAppConversat
ionTestCase.java:55)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.
java:64)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAcces
sorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:615)
   at junit.framework.TestCase.runTest(TestCase.java:154)
   at junit.framework.TestCase.runBare(TestCase.java:127)
   at junit.framework.TestResult$1.protect(TestResult.java:106)
   at junit.framework.TestResult.runProtected(TestResult.java:124)
   at junit.framework.TestResult.run(TestResult.java:109)
   at junit.framework.TestCase.run(TestCase.java:118)
   at junit.framework.TestSuite.runTest(TestSuite.java:208)
   at junit.framework.TestSuite.run(TestSuite.java:203)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.
java:64)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAcces
sorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:615)
   at org.apache.maven.surefire.junit.JUnitTestSet.execute(
JUnitTestSet.jav
a:210)
   at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTes
tSet(AbstractDirectoryTestSuite.java:135)
   at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(Ab
stractDirectoryTestSuite.java:122)
   at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.
java:64)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAcces
sorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:615)
   at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(Su
refireBooter.java:269)
   at org.apache.maven.surefire.booter.SurefireBooter.main(
SurefireBooter.j
ava:788)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.375 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0



[jira] Resolved: (TUSCANY-885) Property DataObject.getProperty(String propertyName) should return null if the property cannot be found

2006-11-30 Thread Kelvin Goodson (JIRA)
 [ http://issues.apache.org/jira/browse/TUSCANY-885?page=all ]

Kelvin Goodson resolved TUSCANY-885.


Resolution: Fixed

fixed in 478825

 Property DataObject.getProperty(String propertyName) should return null if 
 the property cannot be found
 ---

 Key: TUSCANY-885
 URL: http://issues.apache.org/jira/browse/TUSCANY-885
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Affects Versions: Java-Mx
Reporter: Fuhwei Lwo
 Assigned To: Kelvin Goodson
Priority: Minor
 Fix For: Java-Mx

 Attachments: DAS_885.txt, tuscany-885.patch


 Based on SDO 2.01 specification, DataObject.getProperty(String propertyName) 
 should return null if the property cannot be found.  Unfortunately, it 
 returns IlegalArgumentException now.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



[jira] Resolved: (TUSCANY-932) Invoking DataObject.isSet(String path) with invalid path would result in NPE

2006-11-30 Thread Kelvin Goodson (JIRA)
 [ http://issues.apache.org/jira/browse/TUSCANY-932?page=all ]

Kelvin Goodson resolved TUSCANY-932.


Resolution: Fixed

fixed in 478825

 Invoking DataObject.isSet(String path) with invalid path would result in NPE
 

 Key: TUSCANY-932
 URL: http://issues.apache.org/jira/browse/TUSCANY-932
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Affects Versions: Java-Mx
Reporter: Fuhwei Lwo
 Attachments: DataObjectUtil.932, final.patch, RevisedPatchWithTest


 The 2.1 spec didn't mention what outcome should be when invoking 
 DataObject.isSet(String path) with an invalid path so I am not sure whether 
 NPE is acceptable.
 The spec did mention bold?Note that attempts to modify read-only 
 properties (using set, unset or delete) cause an exception./bold

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: [SDO C++] Is Type::OpenDataObjectType part of the API?

2006-11-30 Thread Caroline Maynard

On 29/11/06, Pete Robbins [EMAIL PROTECTED] wrote:



This was introduced when opentype support was added. Is it needed? Don't
know. What do you expect to be returned when you try to get the type of
entry??



I've considered your question, and I can't see a valid alternative. I don't
intend to surface it through the PHP APIs, because we can exploit dynamic
typing there, but I'll go and fix up all my big switches to handle the
OpenDataObjectType case.

There is another aspect to this - when the document containing the open
content is written out or serialized, it contains a lot of
xsi:type=OpenDataObject attributes. I can't see any use for these, and
they look fussy and complicated. Do you agree they can and should be
eliminated? If so I'll raise a JIRA.

Example input (where all the types are open):
content type=xhtml xml:lang=en
xml:base=http://diveintomark.org/;http://diveintomark.org/
div xmlns=http://www.w3.org/1999/xhtml; http://www.w3.org/1999/xhtml
 p
  i[Update: The Atom draft is finished.]/i
 /p
 div class=myclass
  pHello/p
 /div
/div
/content

example output:
content type=xhtml lang=en base=
http://diveintomark.org/;langen/langbasehttp://diveintomark.org//basehttp://diveintomark.org/
div xsi:type=OpenDataObject
 p xsi:type=OpenDataObject
  i xsi:type=OpenDataObject[Update: The Atom draft is finished.]/i
 /p
 div xsi:type=OpenDataObject class=myclass
  classmyclass/class
  p xsi:type=OpenDataObjectHello/p
 /div
/div
/content

You'll no doubt notice a second problem with the output :-). I'll be raising
a JIRA for that one too.
--
Caroline


[jira] Created: (TUSCANY-958) NPE generated during a property set of a static SDO

2006-11-30 Thread David T. Adcox (JIRA)
NPE generated during a property set of a static SDO
---

 Key: TUSCANY-958
 URL: http://issues.apache.org/jira/browse/TUSCANY-958
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Affects Versions: Java-Mx
 Environment: N/A
Reporter: David T. Adcox


When a property is set on a static SDO object, a Null Pointer Exception is 
thrown.  This will only occur if the property is being set for the second time, 
the initial set of the property works.  The problem is caused by some erroneous 
code in the DataObjectImpl class.

In the inverseAdd(Object,int,ChangeContext) method, the local variable, 
changeContextImpl is retrieved from a local method 
initializeChangeContext(ChangeContext).  Then, immediately following this line 
of code, the same variable is set again by way of a cast of a parameter to the 
method.  In some instances, the value being passed is null, so when the value 
is used later, an NPE will occur.  It seems the cast-set is possibly an old 
remnant of code from before the creation of the InitializeChangeContext method. 
 This method properly handles the creation of the ChangeContext and works fine, 
we simply need to comment out the cast-set line of code.

A similar behavior is found in inverseRemove(Object,Object,int,Class, 
ChangeContext), so it should be  fixed, as well.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Jim Marino
This I think highlights a problem with the spec around using  
CurrentCompositeContext from unmamanged code in general...a locate  
service only returns half of an invocation chain since the source  
is not a component and is unmamanged code. Can you describe you  
client code, is it a JSP or is it from a component?


Jim

On Nov 30, 2006, at 6:51 AM, Greg Dritschler wrote:


I've tried out the suggested fixes and I have run into a big problem.
By proxying the inbound wire of the composite reference, there is no
databinding interceptor in the invocation chain.  This causes
Axis2TargetInvoker to choke.

   Exception java.lang.IllegalArgumentException Exception  
message: Can't

handle mixed payloads betweem OMElements and other types.

   java.lang.IllegalArgumentException: Can't handle mixed payloads  
betweem

OMElements and other types.
at  
org.apache.tuscany.binding.axis2.Axis2TargetInvoker.createOperationCli 
ent

(Axis2TargetInvoker.java)
at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invokeTarget(
Axis2TargetInvoker.java:70)
at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invoke(
Axis2TargetInvoker.java:107)
at org.apache.tuscany.core.wire.InvokerInterceptor.invoke(
InvokerInterceptor.java:44)
at org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(
SynchronousBridgingInterceptor.java:41)
at  
org.apache.tuscany.spi.wire.AbstractInboundInvocationHandler.invoke(

AbstractInboundInvocationHandler.java:60)
at  
org.apache.tuscany.core.wire.jdk.JDKInboundInvocationHandler.invoke(

JDKInboundInvocationHandler.java:108)

How do we get the databinding transformation into this flow?  The
DatabindingInterceptor currently requires an outbound wire from the  
client.
Dynamically creating an outbound wire for a non-SCA client and  
connecting it
to the composite reference sounds like a major piece of work.  Is  
there a

simpler solution?



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



Re: [SDO C++] Is Type::OpenDataObjectType part of the API?

2006-11-30 Thread Pete Robbins

On 30/11/06, Caroline Maynard [EMAIL PROTECTED] wrote:


On 29/11/06, Pete Robbins [EMAIL PROTECTED] wrote:


 This was introduced when opentype support was added. Is it needed? Don't
 know. What do you expect to be returned when you try to get the type of
 entry??


I've considered your question, and I can't see a valid alternative. I
don't
intend to surface it through the PHP APIs, because we can exploit dynamic
typing there, but I'll go and fix up all my big switches to handle the
OpenDataObjectType case.



That's the conclusion I came to as well though this may mean that there is a
hole in the spec here.

There is another aspect to this - when the document containing the open

content is written out or serialized, it contains a lot of
xsi:type=OpenDataObject attributes. I can't see any use for these, and
they look fussy and complicated. Do you agree they can and should be
eliminated? If so I'll raise a JIRA.



Yes, there should be no need for them.

Example input (where all the types are open):

content type=xhtml xml:lang=en
xml:base=http://diveintomark.org/;http://diveintomark.org/
div xmlns=http://www.w3.org/1999/xhtml; http://www.w3.org/1999/xhtml
p
  i[Update: The Atom draft is finished.]/i
/p
div class=myclass
  pHello/p
/div
/div
/content

example output:
content type=xhtml lang=en base=
http://diveintomark.org/;langen/langbasehttp://diveintomark.org/
/basehttp://diveintomark.org/
div xsi:type=OpenDataObject
p xsi:type=OpenDataObject
  i xsi:type=OpenDataObject[Update: The Atom draft is finished.]/i
/p
div xsi:type=OpenDataObject class=myclass
  classmyclass/class
  p xsi:type=OpenDataObjectHello/p
/div
/div
/content

You'll no doubt notice a second problem with the output :-). I'll be
raising
a JIRA for that one too.



Ah a test!! Would it be that classs is serialized as both an attribute and
an element??

--

Caroline





--
Pete


[jira] Commented: (TUSCANY-578) Exceptions thrown by SDO runtime not the same as defined in the spec

2006-11-30 Thread Kelvin Goodson (JIRA)
[ 
http://issues.apache.org/jira/browse/TUSCANY-578?page=comments#action_12454700 
] 

Kelvin Goodson commented on TUSCANY-578:


Transferring in TUSCANY-951
here's the report
==

Calling set() with an invalid property name results in a NullPointerException. 
For example:

dataObject.setInt(invalidProperty, 5);

results in:
java.lang.NullPointerException
at 
org.apache.tuscany.sdo.util.DataObjectUtil.getSetValue(DataObjectUtil.java:1440)
at org.apache.tuscany.sdo.util.DataObjectUtil.setInt(DataObjectUtil.java:537)
at org.apache.tuscany.sdo.impl.DataObjectImpl.setInt(DataObjectImpl.java:526)
===
and my duplicated comments 
===
.. the spec isn't specific about the type of exception that should be 
thrown in this case, and the changes made under TUSCANY-885 have altered the 
behaviour of the tuscany implementation without violating the spec.   We need 
to review in general whether we should take the performance hit of catching and 
translating Exceptions to be more specific about issues. 
===


 Exceptions thrown by SDO runtime not the same as defined in the spec
 

 Key: TUSCANY-578
 URL: http://issues.apache.org/jira/browse/TUSCANY-578
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Affects Versions: Java-M2
Reporter: Brian Murray
Priority: Minor
 Fix For: Java-Mx

 Attachments: DataObjectUtil.patch


 On page 27 of V2.01 of the spec, specific exceptions are listed for certain 
 kinds of errors.  In some cases, a different exception is thrown (each case 
 will be added as a subtask).  Either the specification or the implementation 
 should be updated.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Tuscany WSDL2Java

2006-11-30 Thread Matthew Sykes
I've been playing with the BigBank sample and have added a fault to the 
AccountService's withdraw operation.  After changing the 
AccountService.wsdl (attached), the Tuscany WSDL2Java no longer works. 
(Exception from the build is below.)


When I took a quick look at the code, it seemed that the Tuscany code 
does some configuration of the axis2 code generation and then delegates 
the majority of the work to it.


Does anyone have any ideas of what's going on here?  The axis code is 
looking in a map of QName to Name but the only map that's been populated 
is a map of QName to SDODataBindingTypeMappingEntry objects.  The 
WSDL2Java from axis2 seems to work okay with the same WSDL.


On a somewhat related note, what is the intended relationship between 
the Tuscany WSDL2Java and Java2WSDL tools to the tools provided by axis2?


Thanks!

[INFO] Generating Java service interfaces from 
/home/sykesm/oss-code/tuscany/sca-java-M2/samples/applications/bigbank/account/src/main/resources/wsdl/AccountService.wsdl
[INFO] 


[ERROR] FATAL ERROR
[INFO] 

[INFO] org.apache.axis2.wsdl.codegen.CodeGenerationException: 
org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was 
mapped to the name insufficientFundsFault with namespace 
http://www.bigbank.com/account
[INFO] 


[INFO] Trace
java.lang.IllegalArgumentException: 
org.apache.axis2.wsdl.codegen.CodeGenerationException: 
org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was 
mapped to the name insufficientFundsFault with namespace 
http://www.bigbank.com/account
at 
org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator.generateFromWSDL(WSDL2JavaGenerator.java:244)
at 
org.apache.tuscany.tools.wsdl2java.plugin.WSDL2JavaGeneratorMojo.execute(WSDL2JavaGeneratorMojo.java:134)
at 
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412)
at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534)
at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475)
at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454)
at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306)
at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:256)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:615)
at 
org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)

at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at 
org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)

at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.axis2.wsdl.codegen.CodeGenerationException: 
org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was 
mapped to the name insufficientFundsFault with namespace 
http://www.bigbank.com/account
at 
org.apache.tuscany.tools.wsdl2java.generate.JavaInterfaceGenerator.generate(JavaInterfaceGenerator.java:178)
at 
org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator.generateFromWSDL(WSDL2JavaGenerator.java:242)

... 19 more
Caused by: org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No 
type was mapped to the name insufficientFundsFault with namespace 
http://www.bigbank.com/account
at 
org.apache.axis2.wsdl.databinding.TypeMappingAdapter.getTypeMappingName(TypeMappingAdapter.java:73)
at 
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultParamElements(AxisServiceBasedMultiLanguageEmitter.java:1958)
at 
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultElement(AxisServiceBasedMultiLanguageEmitter.java:1867)
at 
org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.generateMethodElement(AxisServiceBasedMultiLanguageEmitter.java:1618)
at 

Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Jeremy Boynes

On 11/30/06, Jim Marino [EMAIL PROTECTED] wrote:

This I think highlights a problem with the spec around using
CurrentCompositeContext from unmamanged code in general...a locate
service only returns half of an invocation chain since the source
is not a component and is unmamanged code. Can you describe you
client code, is it a JSP or is it from a component?



That shouldn't matter should it? I think Greg's problem is that there
is a data incompatibility between the source side (the supplied Java
interface) and the target side (the WS reference). Normally the
connector fixes this by adding a transform interceptor to convert from
the Object on the source side to the OMElement on the target
side.However, locateService bypasses the connector so this does not
get done.

I think Greg's proposal is right - create a degenerate outbound wire
and then connect it to the target's inbound one. We know we needed to
do that for policy at some point but it looks like we'll have to do it
sooner due to this transform issue.

--
Jeremy

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



Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Jim Marino
O.K that's why I asked about what the source side looked like. A  
degenerate outbound wire seems right. One thing on this is can we  
cache the degenerate wire so the wire only need to be constructed  
once while the runtime is in operation?


We have the problem I outlined, e.g. if the target is expecting to be  
in a transactional context and the source never manually sets one  
up...


Jim


On Nov 30, 2006, at 9:10 AM, Jeremy Boynes wrote:


On 11/30/06, Jim Marino [EMAIL PROTECTED] wrote:

This I think highlights a problem with the spec around using
CurrentCompositeContext from unmamanged code in general...a locate
service only returns half of an invocation chain since the source
is not a component and is unmamanged code. Can you describe you
client code, is it a JSP or is it from a component?



That shouldn't matter should it? I think Greg's problem is that there
is a data incompatibility between the source side (the supplied Java
interface) and the target side (the WS reference). Normally the
connector fixes this by adding a transform interceptor to convert from
the Object on the source side to the OMElement on the target
side.However, locateService bypasses the connector so this does not
get done.

I think Greg's proposal is right - create a degenerate outbound wire
and then connect it to the target's inbound one. We know we needed to
do that for policy at some point but it looks like we'll have to do it
sooner due to this transform issue.

--
Jeremy

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




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



[jira] Commented: (TUSCANY-931) Sequence.add(int index, String propertyName, Object value) is not functioning correctly

2006-11-30 Thread Kelvin Goodson (JIRA)
[ 
http://issues.apache.org/jira/browse/TUSCANY-931?page=comments#action_12454705 
] 

Kelvin Goodson commented on TUSCANY-931:


Without having reviewed this issue in detail,  it's worth capturing the 
observation that this property has a . in it,  so its worth bearing in mind 
that there's a slim chance that the root cause might possibly be something 
different from the indexing issue it might seem to be, and more related to 
TUSCANY-935 or other paths with dots reports.

 Sequence.add(int index, String propertyName, Object value) is not functioning 
 correctly
 ---

 Key: TUSCANY-931
 URL: http://issues.apache.org/jira/browse/TUSCANY-931
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Affects Versions: Java-M2, Java-Mx
 Environment: No specific environment
Reporter: David T. Adcox
 Attachments: DefectTestApp.java


 The Sequence.add(int index, String propertyName, Object value) throws a 
 java.lang.RuntimeException.  Here is a stack trace from this issue:
 Exception in thread main java.lang.RuntimeException: Invalid entry feature 
 'Customer.multi'
   at 
 org.eclipse.emf.ecore.util.BasicFeatureMap.validate(BasicFeatureMap.java:87)
   at org.eclipse.emf.common.util.BasicEList.addUnique(BasicEList.java:661)
   at 
 org.eclipse.emf.common.notify.impl.NotifyingListImpl.doAddUnique(NotifyingListImpl.java:384)
   at 
 org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:368)
   at org.eclipse.emf.common.util.BasicEList.add(BasicEList.java:645)
   at 
 org.eclipse.emf.ecore.util.BasicFeatureMap.doAdd(BasicFeatureMap.java:547)
   at 
 org.eclipse.emf.ecore.util.BasicFeatureMap.add(BasicFeatureMap.java:1097)
   at org.apache.tuscany.sdo.util.BasicSequence.add(BasicSequence.java:100)
   at com.ibm.sdo.test.DefectTestApp.main(DefectTestApp.java:60)
 The add(String propertyName, Object value) method seems to be functioning 
 fine using the same Sequence object.  In tracing this issue through EMF, it 
 seems a validate method in the BasicFeatureMap object is failing in the base 
 case and throwing the exception.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Greg Dritschler

I've been using a JSP to test this.  At this point I'm not sure how much
restricting the client to an SCA component helps because the locateService
is still dynamic.  Anyway the spec says locateService is available to
non-SCA clients.

On 11/30/06, Jim Marino [EMAIL PROTECTED] wrote:


This I think highlights a problem with the spec around using
CurrentCompositeContext from unmamanged code in general...a locate
service only returns half of an invocation chain since the source
is not a component and is unmamanged code. Can you describe you
client code, is it a JSP or is it from a component?

Jim

On Nov 30, 2006, at 6:51 AM, Greg Dritschler wrote:

 I've tried out the suggested fixes and I have run into a big problem.
 By proxying the inbound wire of the composite reference, there is no
 databinding interceptor in the invocation chain.  This causes
 Axis2TargetInvoker to choke.

Exception java.lang.IllegalArgumentException Exception
 message: Can't
 handle mixed payloads betweem OMElements and other types.

java.lang.IllegalArgumentException: Can't handle mixed payloads
 betweem
 OMElements and other types.
 at
 org.apache.tuscany.binding.axis2.Axis2TargetInvoker.createOperationCli
 ent
 (Axis2TargetInvoker.java)
 at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invokeTarget(
 Axis2TargetInvoker.java:70)
 at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invoke(
 Axis2TargetInvoker.java:107)
 at org.apache.tuscany.core.wire.InvokerInterceptor.invoke(
 InvokerInterceptor.java:44)
 at org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(
 SynchronousBridgingInterceptor.java:41)
 at
 org.apache.tuscany.spi.wire.AbstractInboundInvocationHandler.invoke(
 AbstractInboundInvocationHandler.java:60)
 at
 org.apache.tuscany.core.wire.jdk.JDKInboundInvocationHandler.invoke(
 JDKInboundInvocationHandler.java:108)

 How do we get the databinding transformation into this flow?  The
 DatabindingInterceptor currently requires an outbound wire from the
 client.
 Dynamically creating an outbound wire for a non-SCA client and
 connecting it
 to the composite reference sounds like a major piece of work.  Is
 there a
 simpler solution?


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




[C++] Using Axis2C 0.95 or later..

2006-11-30 Thread Andrew Borley

Hi all,

I've just tracked down a bug that's turned up in Axis2C 0.95  - most
of our web service calls are fine, but the samples that call out to
the external www.webservicex.net services (CppBigBank, RubyBigBank,
PythonWeatherForecast) fail due to a missing HTTP SOAPAction header.
I've raised this at http://issues.apache.org/jira/browse/AXIS2C-437
and attached a patch that fixes it there.

Cheers

Andy

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



Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Jean-Sebastien Delfino

Simon Laws wrote:

On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:


On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:
  
   On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 
  On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
  
  
On 30/11/06, Simon Laws [EMAIL PROTECTED] 
wrote:

   
On 11/30/06, Pete Robbins [EMAIL PROTECTED]
wrote:

 On 30/11/06, Pete Robbins [EMAIL PROTECTED]
 wrote:
 
 
 
   On 30/11/06, Jean-Sebastien Delfino 
  [EMAIL PROTECTED]
  wrote:
  
   Pete Robbins wrote:
Our current method of packaging and loading an
  extension
   is
fairly
simple:
we load all schema and libraries in the 
extensions

  path.
 This
has a
number
of problems.
   
1. An extension may consist of more than one
library
  e.g
   .
libmy_extension.so
and libmy_extension_utils.so. Our current 
loading

  scheme
 will
 attempt
   to
load both of these and may fail on the one that
  doesn't
  provide
the
extension initialize method. On MacOS the output
of
  our
 build
 produces
   a
libx.dylib and a series of symlinks to this 
called

  libx.0.dylib,
libx.0.0.dylib etc.. ur runtime loads ALL of 
these

  which
  doesn't
 cause
problems as they are all the sam library and 
just

   repeatedly
 register
   to
handle the same requests. Very inefficient 
though!

   
2. Control of whether or not to load an 
extension

   library is
 currently
   by
renaming the library so the runtime doesn't find
it.
  An
  example
is
that we
ship our python extension as
 libtuscany_sca_python.so.diabled.
This
 is
  
horrible and error prone.
   
We could improve this by having a system
 configuration
   file
  that
 lists
the
required extensions but the I like the self
 contained
 package
 approach
that
we have now. I'd like to implement an improved
 scheme
   for
packaging
 an
extension by introducing a per extension
 configuration
   file.
 Something
like:
   
   
tuscany_sca_ws_binding.extension
   
   
scacpp:extension name=ws binding
enabled=true
  library name=tuscany_sca_ws_reference/
  library name=tuscany_sca_ws_service/
/scacppp:extension
   
So the package would look like:
   
extensions/
 ws/
   tusany_sca_ws_binding.extension
   lib/
   xsd/
   other_folder/
   ...
   
The .extension configuration file is saying to
load
  the
  library
 which
   is
located somewhere in the package... the runtime
will
   find
  it...
no
need to
specify a path.
   
Taking this further the configuration file could
 list
   the
  schema
to
 be
loaded. Currently the runtime will just load any
it
   finds
 but
these
may not
be needed by the runtime e.g. the schema may be
for
  some
extension
implementation specific purpose.
   
I think it would also be good for the extension
  initialization()
method to
take as a parameter the root of the extension 
e.g.

extension(/tuscany/extensions/ws). This would
 allow
   the
extension
package
to contain any configuration information that it
  needs.
   
I'd like to start by at least introducing the
  .extension
 file
for
 each
extension and loading only the specified
 library(ies)
  if
   the
 extension
   is
enabled.
   
Any thoughts?
   
   
   
  
   Two thoughts:
   - convention over configuration
   - the runtime should be consumable without 
having to

 go
   tweak
  XML
   configuration files
  
   If I remember correctly, renaming the dlls to
 .disabled
   was a
  last
   
   minute change to work around DLL loading errors 
with

 our
   M2

Re: [SDO C++] Thread safety ?

2006-11-30 Thread Caroline Maynard

On 21/11/06, Geoffrey Winn [EMAIL PROTECTED] wrote:



As far as SDO itself is concerned, I think we would be OK if the user of
SDO
could guarantee that whenever an SDO artifact (data factory, data object,
type, XSDHelper ...) is created then that artifact will be used
_exclusively_ by the thread that created it. If that's acceptable to you
then I'll check the code to ensure that my claim is correct.



Yes, that's how it would be. The SDO for PHP implementation doesn't keep
references to Tuscany objects in static data.

As you observed earlier we will need to resolve the localtime issue.


I'll raise a JIRA for that.

Outside of SDO we will also need to check the various libraries that we

depend on. You mentioned libxml2 but there is also zlib and iconv too.
Based
on a quick look at the libxml2 reference that you supplied we wll need a
small change to the SDO build process but also possibly some code changes
too.



Both zlib and iconv are also part of the normal PHP environment, because
libxml2 depends on them, so I don't expect issues with them. But FYI, zlib
has a faq: http://www.zlib.net/zlib_faq.html#faq21
As for iconv, I think that libxml2 will use whatever iconv implementation it
finds on the platform, which is not necessarily libiconv, so a general
statement may not be possible.

--
Caroline


Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Raymond Feng


- Original Message - 
From: Jeremy Boynes [EMAIL PROTECTED]

To: tuscany-dev@ws.apache.org
Sent: Thursday, November 30, 2006 9:10 AM
Subject: Re: Creating proxies (fix for TUSCANY-862)



On 11/30/06, Jim Marino [EMAIL PROTECTED] wrote:

This I think highlights a problem with the spec around using
CurrentCompositeContext from unmamanged code in general...a locate
service only returns half of an invocation chain since the source
is not a component and is unmamanged code. Can you describe you
client code, is it a JSP or is it from a component?



That shouldn't matter should it? I think Greg's problem is that there
is a data incompatibility between the source side (the supplied Java
interface) and the target side (the WS reference). Normally the
connector fixes this by adding a transform interceptor to convert from
the Object on the source side to the OMElement on the target
side.However, locateService bypasses the connector so this does not
get done.

I think Greg's proposal is right - create a degenerate outbound wire
and then connect it to the target's inbound one. We know we needed to
do that for policy at some point but it looks like we'll have to do it
sooner due to this transform issue.



So when the degenerate outbound wire is created and connected, we need to 
trigger PostWireProcessor to deal with this newly-created dynamic wire. 
Right? The databinding framework needs to be notified so that it can add the 
corresponding interceptor to deal with the transformation.



--
Jeremy

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




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



Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Jim Marino


On Nov 30, 2006, at 9:21 AM, Greg Dritschler wrote:

I've been using a JSP to test this.  At this point I'm not sure how  
much
restricting the client to an SCA component helps because the  
locateService

is still dynamic.  Anyway the spec says locateService is available to
non-SCA clients.

Yes but the semantics are different and that's one of the reasons I  
don't like it much (it is going to confuse end-users). A  
locateService from non-mamanged code will not return a chain with  
source-side policy (which would be expected, since it is not a  
component). The problem really shows up in the following situation:


1. A client component has a transactional policy associated with it  
that propagates

2. The target requires a client call it with the transactional policy
3. The client does this:

public class Foo {
@Context CurrentCompositeContext context;

public void operation() {
context.locateService(Foo.class, Foo).doSomething();
}

}

It works.

4. The client instead does this and they get some kind of trx context  
error because now it is behaving as unmanaged code:


public class Foo {

public void operation() {
		CurrentCompositeContext.getContext().locateService(Foo.class,  
Foo).doSomething();

}

}

In the spec group, we played around with the notion of a default  
context which would get around this problem. A better solution may be  
to eliminate locate service for components (e.g. @Context) altogether  
and only relying on dependency injection (this would involve making a  
war or jsp a component impl type). The only case where I see a  
problem with this is in a completely dynamic situation where the  
component name is passed in (in which case only the interface is  
known). This may be something we can do through autowire or through  
multiplicity references. Can you describe the use-case a little more?


Jim



On 11/30/06, Jim Marino [EMAIL PROTECTED] wrote:


This I think highlights a problem with the spec around using
CurrentCompositeContext from unmamanged code in general...a locate
service only returns half of an invocation chain since the source
is not a component and is unmamanged code. Can you describe you
client code, is it a JSP or is it from a component?

Jim

On Nov 30, 2006, at 6:51 AM, Greg Dritschler wrote:

 I've tried out the suggested fixes and I have run into a big  
problem.
 By proxying the inbound wire of the composite reference, there  
is no

 databinding interceptor in the invocation chain.  This causes
 Axis2TargetInvoker to choke.

Exception java.lang.IllegalArgumentException Exception
 message: Can't
 handle mixed payloads betweem OMElements and other types.

java.lang.IllegalArgumentException: Can't handle mixed payloads
 betweem
 OMElements and other types.
 at
  
org.apache.tuscany.binding.axis2.Axis2TargetInvoker.createOperationCl 
i

 ent
 (Axis2TargetInvoker.java)
 at  
org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invokeTarget(

 Axis2TargetInvoker.java:70)
 at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invoke(
 Axis2TargetInvoker.java:107)
 at org.apache.tuscany.core.wire.InvokerInterceptor.invoke(
 InvokerInterceptor.java:44)
 at  
org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(

 SynchronousBridgingInterceptor.java:41)
 at
  
org.apache.tuscany.spi.wire.AbstractInboundInvocationHandler.invoke(

 AbstractInboundInvocationHandler.java:60)
 at
  
org.apache.tuscany.core.wire.jdk.JDKInboundInvocationHandler.invoke(

 JDKInboundInvocationHandler.java:108)

 How do we get the databinding transformation into this flow?  The
 DatabindingInterceptor currently requires an outbound wire from the
 client.
 Dynamically creating an outbound wire for a non-SCA client and
 connecting it
 to the composite reference sounds like a major piece of work.  Is
 there a
 simpler solution?


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





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



[jira] Resolved: (TUSCANY-956) SDOFactory instance lookup is using the wrong namespace URI

2006-11-30 Thread Kelvin Goodson (JIRA)
 [ http://issues.apache.org/jira/browse/TUSCANY-956?page=all ]

Kelvin Goodson resolved TUSCANY-956.


Fix Version/s: Java-Mx
   Resolution: Fixed

Patch committed at level 481007

 SDOFactory instance lookup is using the wrong namespace URI
 ---

 Key: TUSCANY-956
 URL: http://issues.apache.org/jira/browse/TUSCANY-956
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Affects Versions: Java-Mx
Reporter: Fuhwei Lwo
 Fix For: Java-Mx

 Attachments: tuscany-956.patch


 String eNS_URI = http://www.apache.org/tuscany/2005/SDO;; in SDOPackage.java 
 was defined to represent Tuscany SDO package but in the SDOFactoryImpl.java 
 it uses http://www.eclipse.org/emf/2003/SDO; to look up the registered 
 SDOFactory instance.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: [C++] Binding/Language Extensions - packaging

2006-11-30 Thread Pete Robbins

On 30/11/06, Jean-Sebastien Delfino [EMAIL PROTECTED] wrote:


Simon Laws wrote:
 On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:

 On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
 
  On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
   On 30/11/06, Andrew Borley [EMAIL PROTECTED] wrote:
   
On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
 On 30/11/06, Simon Laws [EMAIL PROTECTED] wrote:
 
  On 11/30/06, Pete Robbins [EMAIL PROTECTED] wrote:
  
   On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:
   
   
   
 On 30/11/06, Simon Laws [EMAIL PROTECTED]
 wrote:

 On 11/30/06, Pete Robbins [EMAIL PROTECTED]
 wrote:
 
  On 30/11/06, Pete Robbins [EMAIL PROTECTED]
  wrote:
  
  
  
On 30/11/06, Jean-Sebastien Delfino 
   [EMAIL PROTECTED]
   wrote:
   
Pete Robbins wrote:
 Our current method of packaging and loading an
   extension
is
 fairly
 simple:
 we load all schema and libraries in the
 extensions
   path.
  This
 has a
 number
 of problems.

 1. An extension may consist of more than one
 library
   e.g
.
 libmy_extension.so
 and libmy_extension_utils.so. Our current
 loading
   scheme
  will
  attempt
to
 load both of these and may fail on the one that
   doesn't
   provide
 the
 extension initialize method. On MacOS the
output
 of
   our
  build
  produces
a
 libx.dylib and a series of symlinks to this
 called
   libx.0.dylib,
 libx.0.0.dylib etc.. ur runtime loads ALL of
 these
   which
   doesn't
  cause
 problems as they are all the sam library and
 just
repeatedly
  register
to
 handle the same requests. Very inefficient
 though!

 2. Control of whether or not to load an
 extension
library is
  currently
by
 renaming the library so the runtime doesn't
find
 it.
   An
   example
 is
 that we
 ship our python extension as
  libtuscany_sca_python.so.diabled.
 This
  is
   
 horrible and error prone.

 We could improve this by having a system
  configuration
file
   that
  lists
 the
 required extensions but the I like the self
  contained
  package
  approach
 that
 we have now. I'd like to implement an improved
  scheme
for
 packaging
  an
 extension by introducing a per extension
  configuration
file.
  Something
 like:


 tuscany_sca_ws_binding.extension


 scacpp:extension name=ws binding
 enabled=true
   library name=tuscany_sca_ws_reference/
   library name=tuscany_sca_ws_service/
 /scacppp:extension

 So the package would look like:

 extensions/
  ws/
tusany_sca_ws_binding.extension
lib/
xsd/
other_folder/
...

 The .extension configuration file is saying to
 load
   the
   library
  which
is
 located somewhere in the package... the runtime
 will
find
   it...
 no
 need to
 specify a path.

 Taking this further the configuration file
could
  list
the
   schema
 to
  be
 loaded. Currently the runtime will just load
any
 it
finds
  but
 these
 may not
 be needed by the runtime e.g. the schema may be
 for
   some
 extension
 implementation specific purpose.

 I think it would also be good for the extension
   initialization()
 method to
 take as a parameter the root of the extension
 e.g.
 extension(/tuscany/extensions/ws). This would
  allow
the
 extension
 package
 to contain any configuration information that
it
   needs.

 I'd like to start by at least introducing the
   .extension
  file
 for
  each
 extension and loading only the specified
  library(ies)
   if
the
  extension
is
 enabled.

 Any thoughts?



   
Two thoughts:
- convention over configuration
- the runtime should be consumable without
 having 

Re: Proposal for a (Java) community test suite for SDO

2006-11-30 Thread Simon Laws

On 11/30/06, Dan Murphy [EMAIL PROTECTED] wrote:


I would like to propose starting a community test suite for service data
objects (SDO CTS) implementations written in Java. Based on feedback from
an
earlier post this seems to be the first logical step in getting
interoperable SDO implementations in all languages. I can see this leading
to an interoperability test suite to check serialisation between
implementations also works (across languages and implementations).

Proposal for Community Test Suite (CTS) for SDO
Develop a test suite to validate an SDO implementation behaves as
expected,
according to the community's understanding of the SDO specification.
Should
the specification appear ambiguous or unclear then the community will
decide
what to do; it may decide to test the area with an agreed expected
behaviour, or decide not to test this area. Ambiguities will be fed back
to
the specification group for clarification. Although we will run this
against
Tuscany, the test suite will only test things that we think any
implementation should support.

The SDO CTS will enable developers to choose or switch SDO implementations
without the concern of having to re-code a significant proportion of their
application due to differences between implementations. This community
test
suite will first  focus on areas identified important to developers of SDO
applications. SDO users feedback and involvement will be crucial to the
success of this effort. Over time this may grow to include a large
proportion of the SDO specification, however the suite should grow
according
to the community's desire, rather than attempting to be a validation or
compliancy suite.

To encourage everyone with an interest in SDO to contribute and use the
suite, I propose we :

   1. Create a separate module in SVN to separate this from Tuscany
   components and testcases.
   2. Make use of a java package namespace that is not attributable to
   either Tuscany or any other SDO implementation: test.sdo
   3. Refactor some of the existing Tuscany SDO Java test cases to remove
   any Tuscany specific coding and re-package these to the test.sdo
   namespace.
   4. Accept tests from anyone who wishes to contribute them under normal
   Apache contribution conditions.


SDO users involvement will be crucial to this effort, developers of SDO
implementations will benefit by contributing to and consuming a community
test suite, rather than working on their own.

Who's up for working on this with me ?

If you are interested in joining this effort; have any concerns, comments
or
suggestions please append them...

Thanks in advance to all those who volunteer :)
Dan

Hi Dan


a community test suite for service data objects (SDO CTS) implementations
written in Java. I can see why you need to a test suite the test Java
implementations but do you believe that some of this work will be useful to
other language implementations also. We've talked before about the interop
schemas up on SVN in the interop directory. If, for example, in your new
effort the community decided that it would be a nice idea to test that SDO
load and saves XML files based on schema that reflect the mappings defined
in the specs (something I would imagine that you would be interested in)
then it would be good if you can take what we have and enhance or replace
them. This would then be useful in a context wider than Java because we use
these tests in C++ and PHP SDO also. If you were able to make improvements
here that would be work we wouldn't have to duplicate. Are there any other
SDO tests that you think we could collaborate on cross langauge? For
example, clearly API tests would be difficult :-) but how about
serialisation of data objects trees and/or change summaries?

Regards

Simon


Maven running in Tomcat?

2006-11-30 Thread Matthew Duftler
Hi Folks,

When I deploy a Tuscany sample to Tomcat, I see what looks like Maven
trying to update its repository.

Is there a way to disable this behavior? (Something akin to maven's '-o'
command-line option maybe...)

Thanks,
-Matt


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



Re: Test case fails: LoanAppConversationTestCase

2006-11-30 Thread Rick
Also not seeing this issue.  The junit test works for me in eclipse too.  svn 
rev 480786   Sun jdk  java full version 1.5.0_10-b03



Raymond Feng wrote:

Hi,

I'm seeing the following test case failure in trunk code.

Raymond

---
 T E S T S
---
Running loanappconversation.LoanAppConversationTestCase
Applied: Loan application: [Customer: John Doe, loan amount: 1000.0], term: 0, s
tatus: open
Loan approved: false
Sleeping to let cancel complete ...
Cancelled: Loan application: [Customer: John Doe, loan amount: 1000.0], term: 0,
 status: cancelled
Trying to use the closed loan in the ended conversation ...
Closed: Loan application: null, term: 0, status: closed
junit.framework.AssertionFailedError: Target should not be found
at junit.framework.Assert.fail(Assert.java:47)
at loanappconversation.LoanAppConversationTestCase.test(LoanAppConversat
ionTestCase.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:64)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:64)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.jav
a:210)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTes
tSet(AbstractDirectoryTestSuite.java:135)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(Ab
stractDirectoryTestSuite.java:122)
at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:64)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(Su
refireBooter.java:269)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.j
ava:788)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.375 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0


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



Re: Test case fails: LoanAppConversationTestCase

2006-11-30 Thread Raymond Feng

It's a bit wierd. Now it works for me as well.

Thanks,
Raymond

- Original Message - 
From: Rick [EMAIL PROTECTED]

To: tuscany-dev@ws.apache.org
Sent: Thursday, November 30, 2006 10:10 AM
Subject: Re: Test case fails: LoanAppConversationTestCase


Also not seeing this issue.  The junit test works for me in eclipse too. 
svn rev 480786   Sun jdk  java full version 1.5.0_10-b03



Raymond Feng wrote:

Hi,

I'm seeing the following test case failure in trunk code.

Raymond

---
 T E S T S
---
Running loanappconversation.LoanAppConversationTestCase
Applied: Loan application: [Customer: John Doe, loan amount: 1000.0], 
term: 0, s

tatus: open
Loan approved: false
Sleeping to let cancel complete ...
Cancelled: Loan application: [Customer: John Doe, loan amount: 1000.0], 
term: 0,

 status: cancelled
Trying to use the closed loan in the ended conversation ...
Closed: Loan application: null, term: 0, status: closed
junit.framework.AssertionFailedError: Target should not be found
at junit.framework.Assert.fail(Assert.java:47)
at 
loanappconversation.LoanAppConversationTestCase.test(LoanAppConversat

ionTestCase.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:64)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:64)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at 
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.jav

a:210)
at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTes

tSet(AbstractDirectoryTestSuite.java:135)
at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(Ab

stractDirectoryTestSuite.java:122)
at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:64)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at 
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(Su

refireBooter.java:269)
at 
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.j

ava:788)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.375 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0


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




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



Re: Maven running in Tomcat?

2006-11-30 Thread Jeremy Boynes

There is a context parameter tuscany.online which defaults to true -
if you set this to false in webapp.xml then it should disable this
behaviour.

--
Jeremy

On 11/30/06, Matthew Duftler [EMAIL PROTECTED] wrote:

Hi Folks,

When I deploy a Tuscany sample to Tomcat, I see what looks like Maven
trying to update its repository.

Is there a way to disable this behavior? (Something akin to maven's '-o'
command-line option maybe...)

Thanks,
-Matt


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




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



[jira] Created: (TUSCANY-959) Please use thread-safe libraries

2006-11-30 Thread Caroline Maynard (JIRA)
Please use thread-safe libraries


 Key: TUSCANY-959
 URL: http://issues.apache.org/jira/browse/TUSCANY-959
 Project: Tuscany
  Issue Type: Improvement
  Components: C++ SDO
Affects Versions: Cpp-current
Reporter: Caroline Maynard
Priority: Minor


One of our SDO for PHP users is planning to run in a multi-threaded web server.

They have run an evaluation tool and only found one thread-safety issue - the 
use of  localtime() rather than localtime_r()  in commonj/sdo/SDODate.cpp. 

Please would you modify this call accordingly? It's fine for this to be a 
conditional compile if you prefer. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: [SDO C++] Thread safety ?

2006-11-30 Thread Caroline Maynard

This is now http://issues.apache.org/jira/browse/TUSCANY-959


[jira] Created: (TUSCANY-960) Spurious xsi:type=OpenDataObject attribute generated

2006-11-30 Thread Caroline Maynard (JIRA)
Spurious xsi:type=OpenDataObject attribute generated
--

 Key: TUSCANY-960
 URL: http://issues.apache.org/jira/browse/TUSCANY-960
 Project: Tuscany
  Issue Type: Improvement
  Components: C++ SDO
Affects Versions: Cpp-current
Reporter: Caroline Maynard
Priority: Minor


I have a schema where a property has an open data type. I read in an XML  
document: 
content type=xhtml xml:lang=en xml:base=http://diveintomark.org/;
 div xmlns=http://www.w3.org/1999/xhtml;
  p
   i[Update: The Atom draft is finished.]/i
  /p
  div class=myclass
   pHello/p
  /div
 /div
/content 

then I convert it back to a string, and it looks like this:
content type=xhtml lang=en 
base=http://diveintomark.org/;langen/langbasehttp://diveintomark.org//base
 div xsi:type=OpenDataObject
  p xsi:type=OpenDataObject
   i xsi:type=OpenDataObject[Update: The Atom draft is finished.]/i
  /p
  div xsi:type=OpenDataObject class=myclassclassmyclass/class
   p xsi:type=OpenDataObjectHello/p
  /div
 /div
/content 

The type attributes add no value and make the output cluttered and confusing. 
Please eliminate them. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: [SDO C++] Is Type::OpenDataObjectType part of the API?

2006-11-30 Thread Caroline Maynard

On 30/11/06, Pete Robbins [EMAIL PROTECTED] wrote:



Ah a test!! Would it be that classs is serialized as both an attribute and
an element??



Indeed. Not only class, but xml:base and xml:lang, too.

I've opened http://issues.apache.org/jira/browse/TUSCANY-960 for the
xsi:type=OpenDataObject issue.

--
Caroline


Proposal for a (Java) community test suite for SDO

2006-11-30 Thread Dan Murphy

I would like to propose starting a community test suite for service data
objects (SDO CTS) implementations written in Java. Based on feedback from an
earlier post this seems to be the first logical step in getting
interoperable SDO implementations in all languages. I can see this leading
to an interoperability test suite to check serialisation between
implementations also works (across languages and implementations).

Proposal for Community Test Suite (CTS) for SDO
Develop a test suite to validate an SDO implementation behaves as expected,
according to the community's understanding of the SDO specification. Should
the specification appear ambiguous or unclear then the community will decide
what to do; it may decide to test the area with an agreed expected
behaviour, or decide not to test this area. Ambiguities will be fed back to
the specification group for clarification. Although we will run this against
Tuscany, the test suite will only test things that we think any
implementation should support.

The SDO CTS will enable developers to choose or switch SDO implementations
without the concern of having to re-code a significant proportion of their
application due to differences between implementations. This community test
suite will first  focus on areas identified important to developers of SDO
applications. SDO users feedback and involvement will be crucial to the
success of this effort. Over time this may grow to include a large
proportion of the SDO specification, however the suite should grow according
to the community's desire, rather than attempting to be a validation or
compliancy suite.

To encourage everyone with an interest in SDO to contribute and use the
suite, I propose we :

  1. Create a separate module in SVN to separate this from Tuscany
  components and testcases.
  2. Make use of a java package namespace that is not attributable to
  either Tuscany or any other SDO implementation: test.sdo
  3. Refactor some of the existing Tuscany SDO Java test cases to remove
  any Tuscany specific coding and re-package these to the test.sdo
  namespace.
  4. Accept tests from anyone who wishes to contribute them under normal
  Apache contribution conditions.


SDO users involvement will be crucial to this effort, developers of SDO
implementations will benefit by contributing to and consuming a community
test suite, rather than working on their own.

Who's up for working on this with me ?

If you are interested in joining this effort; have any concerns, comments or
suggestions please append them...

Thanks in advance to all those who volunteer :)
Dan


NPE was Re: [jira] Resolved: (TUSCANY-951) NullPointerException when setting an invalid property

2006-11-30 Thread Brent Daniel

Kelvin,

 My feeling is that runtime code should never throw a
NullPointerException. In this particular case where it is very easy
for users to input an invalid string value because of typos, case
sensitivity, or just not remembering the correct property name, it is
pretty ugly. If there is no spec behavior defined for what happens in
the case of an invalid set, then the SDO runtime should probably use
its former behavior of throwing an IllegalArgumentException.

Brent

On 11/30/06, Kelvin Goodson (JIRA) tuscany-dev@ws.apache.org wrote:

[ http://issues.apache.org/jira/browse/TUSCANY-951?page=all ]

Kelvin Goodson resolved TUSCANY-951.


   Fix Version/s: Java-M2
  Java-Mx
  Resolution: Duplicate

This is an instance of the issue in TUSCANY-578.  In this case its the variant 
of the issue where the spec isn't specific about the type of exception should 
be thrown,  and the changes made under TUSCANY-885 have altered the behaviour 
of the tuscany implementation without violating the spec.  I'm going to 
transfer this into the TUSCANY-885 bucket defect for consideration,  but my 
feeling is that this is not a bug.

 NullPointerException when setting an invalid property
 -

 Key: TUSCANY-951
 URL: http://issues.apache.org/jira/browse/TUSCANY-951
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Reporter: Brent Daniel
 Fix For: Java-M2, Java-Mx


 Calling set() with an invalid property name results in a 
NullPointerException. For example:
 dataObject.setInt(invalidProperty, 5);
 results in:
 java.lang.NullPointerException
   at 
org.apache.tuscany.sdo.util.DataObjectUtil.getSetValue(DataObjectUtil.java:1440)
   at 
org.apache.tuscany.sdo.util.DataObjectUtil.setInt(DataObjectUtil.java:537)
   at 
org.apache.tuscany.sdo.impl.DataObjectImpl.setInt(DataObjectImpl.java:526)


--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira





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



Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread scabooz

Jim,

See  below please.

-Dave

- Original Message - 
From: Jim Marino [EMAIL PROTECTED]

To: tuscany-dev@ws.apache.org
Sent: Thursday, November 30, 2006 12:44 PM
Subject: Re: Creating proxies (fix for TUSCANY-862)




On Nov 30, 2006, at 9:21 AM, Greg Dritschler wrote:


I've been using a JSP to test this.  At this point I'm not sure how  much
restricting the client to an SCA component helps because the 
locateService

is still dynamic.  Anyway the spec says locateService is available to
non-SCA clients.

Yes but the semantics are different and that's one of the reasons I  don't 
like it much (it is going to confuse end-users). A  locateService from 
non-mamanged code will not return a chain with  source-side policy (which 
would be expected, since it is not a  component). The problem really shows 
up in the following situation:


1. A client component has a transactional policy associated with it  that 
propagates

2. The target requires a client call it with the transactional policy
3. The client does this:

public class Foo {
@Context CurrentCompositeContext context;

public void operation() {
context.locateService(Foo.class, Foo).doSomething();
}

}

It works.

4. The client instead does this and they get some kind of trx context 
error because now it is behaving as unmanaged code:


public class Foo {

public void operation() {
CurrentCompositeContext.getContext().locateService(Foo.class, 
Foo).doSomething();

}

}



WRT transactions, the specs will never support a case where a service 
provider requires that a client propogate a transaction. Perhaps it's just 
that your example is bad.


The spec doesn't talk about source side chains, so this is clearly an 
implementation issue.  If a composite reference contains decorations for 
policy (intents or policySets), then it is the reference binding's 
responsibility to act on those policy decorations.  If it cannot do so, it 
must throw an error.  Managed vs. un-managed environments can certainly 
create differences in policy behavior.  I still don't see what that has to 
do with the ability of the locateService API to provide a proxy for a 
configured composite reference.  Having source side policy configured on a 
composite reference is related to the presence of source side policy on the 
reference, and has nothing to do with an particular component.



In the spec group, we played around with the notion of a default 
context which would get around this problem. A better solution may be  to 
eliminate locate service for components (e.g. @Context) altogether  and 
only relying on dependency injection (this would involve making a  war or 
jsp a component impl type). The only case where I see a  problem with this 
is in a completely dynamic situation where the  component name is passed 
in (in which case only the interface is  known). This may be something we 
can do through autowire or through  multiplicity references. Can you 
describe the use-case a little more?




The use case is very simple.  A composite level reference with a WSDL 
interface type.  The locateService() API should be able to return a proxy to 
that reference.  The locateService API might be invoked from with an SCA 
component implementation, or not.  As I recall, this is a use case that you 
pushed into the spec.



Jim



On 11/30/06, Jim Marino [EMAIL PROTECTED] wrote:


This I think highlights a problem with the spec around using
CurrentCompositeContext from unmamanged code in general...a locate
service only returns half of an invocation chain since the source
is not a component and is unmamanged code. Can you describe you
client code, is it a JSP or is it from a component?

Jim

On Nov 30, 2006, at 6:51 AM, Greg Dritschler wrote:

 I've tried out the suggested fixes and I have run into a big
problem.
 By proxying the inbound wire of the composite reference, there
is no
 databinding interceptor in the invocation chain.  This causes
 Axis2TargetInvoker to choke.

Exception java.lang.IllegalArgumentException Exception
 message: Can't
 handle mixed payloads betweem OMElements and other types.

java.lang.IllegalArgumentException: Can't handle mixed payloads
 betweem
 OMElements and other types.
 at

org.apache.tuscany.binding.axis2.Axis2TargetInvoker.createOperationCl i
 ent
 (Axis2TargetInvoker.java)
 at
org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invokeTarget(
 Axis2TargetInvoker.java:70)
 at org.apache.tuscany.binding.axis2.Axis2TargetInvoker.invoke(
 Axis2TargetInvoker.java:107)
 at org.apache.tuscany.core.wire.InvokerInterceptor.invoke(
 InvokerInterceptor.java:44)
 at
org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(
 SynchronousBridgingInterceptor.java:41)
 at

org.apache.tuscany.spi.wire.AbstractInboundInvocationHandler.invoke(
 AbstractInboundInvocationHandler.java:60)
 at

org.apache.tuscany.core.wire.jdk.JDKInboundInvocationHandler.invoke(
 JDKInboundInvocationHandler.java:108)

 How do we get the databinding transformation 

Re: Much ado about nothing (Re: WSCOMMONS-131 and options for Tuscany SCA Java M2 release)

2006-11-30 Thread Raymond Feng

Hi,

This is an appealing proposal. I will give a try.

Thanks,
Raymond

- Original Message - 
From: Davanum Srinivas [EMAIL PROTECTED]

To: tuscany-dev@ws.apache.org
Sent: Thursday, November 30, 2006 5:48 AM
Subject: Re: Much ado about nothing (Re: WSCOMMONS-131 and options for 
Tuscany SCA Java M2 release)




Folks,

Can't you just use maven's exclusion mechanism:
http://maven.apache.org/ref/2.0.4/maven-model/maven.html#class_exclusion

to exclude the specific version of axiom and add a specific dependency
on the new one?

thanks,
dims

On 11/29/06, Davanum Srinivas [EMAIL PROTECTED] wrote:

Aha! so there's a catch. We still haven't started the process for a
Axis2 1.1.1. Hoping to do that with a thorough JIRA scrub this week or
early next week. To see what needs to be fixed for a quick 1.1.1
release. Will let you all know when we have some idea.

thanks,
dims

On 11/29/06, Simon Nash [EMAIL PROTECTED] wrote:
 Thanks, Dims.

 We will need a new release of Axis2 as well, since the POMs in
 Axis2 1.1 point to Axiom 1.2.  Will this be available at the
 same time as the new release of Axiom?

Simon

 Davanum Srinivas wrote:
  Thanks Jim/Jeremy :)
 
  Please look at the pom's in the svn. the SNAPSHOT jars are here:
  http://ws.zones.apache.org/repository/org.apache.ws.commons.axiom/jars/
 
  thanks,
  dims
 
  On 11/28/06, Jeremy Boynes [EMAIL PROTECTED] wrote:
 
  On Nov 28, 2006, at 1:24 PM, Davanum Srinivas wrote:
 
   Folks,
  
   Fact #1: WSCOMMONS-131 is fixed in SVN.
   Fact #2: We've started a VOTE for releasing Axiom 1.2.1 [1]. Plan 
   is

   to do the release this week.
  
   What's the ruckus all about? (Please don't make me all the emails 
   :)

 
  Well, now, nothing :-)
 
  Are there any artifacts for 1.2.1 that we can take a look at?
  --
  Jeremy
 
 
 


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




--
Davanum Srinivas : http://www.wso2.net (Oxygen for Web Service 
Developers)





--
Davanum Srinivas : http://www.wso2.net (Oxygen for Web Service Developers)

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




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



[jira] Created: (TUSCANY-961) DAS: Using deprected SDO method causes Type lookup failure

2006-11-30 Thread Brent Daniel (JIRA)
DAS: Using deprected SDO method causes Type lookup failure
--

 Key: TUSCANY-961
 URL: http://issues.apache.org/jira/browse/TUSCANY-961
 Project: Tuscany
  Issue Type: Bug
  Components: Java DAS RDB
Reporter: Brent Daniel


The DAS is still using SDOUtil.createTypeHelper() rather than 
TypeHelper.INSTANCE. This causes the DAS to not have visibility of types 
defined by TypeHelper or XSDHelper. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



[jira] Assigned: (TUSCANY-961) DAS: Using deprected SDO method causes Type lookup failure

2006-11-30 Thread Brent Daniel (JIRA)
 [ http://issues.apache.org/jira/browse/TUSCANY-961?page=all ]

Brent Daniel reassigned TUSCANY-961:


Assignee: Brent Daniel

 DAS: Using deprected SDO method causes Type lookup failure
 --

 Key: TUSCANY-961
 URL: http://issues.apache.org/jira/browse/TUSCANY-961
 Project: Tuscany
  Issue Type: Bug
  Components: Java DAS RDB
Reporter: Brent Daniel
 Assigned To: Brent Daniel

 The DAS is still using SDOUtil.createTypeHelper() rather than 
 TypeHelper.INSTANCE. This causes the DAS to not have visibility of types 
 defined by TypeHelper or XSDHelper. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: Creating proxies (fix for TUSCANY-862)

2006-11-30 Thread Jim Marino


On Nov 30, 2006, at 1:06 PM, scabooz wrote:


Jim,

See  below please.

-Dave

- Original Message - From: Jim Marino  
[EMAIL PROTECTED]

To: tuscany-dev@ws.apache.org
Sent: Thursday, November 30, 2006 12:44 PM
Subject: Re: Creating proxies (fix for TUSCANY-862)




On Nov 30, 2006, at 9:21 AM, Greg Dritschler wrote:

I've been using a JSP to test this.  At this point I'm not sure  
how  much
restricting the client to an SCA component helps because the  
locateService
is still dynamic.  Anyway the spec says locateService is  
available to

non-SCA clients.

Yes but the semantics are different and that's one of the reasons  
I  don't like it much (it is going to confuse end-users). A   
locateService from non-mamanged code will not return a chain with   
source-side policy (which would be expected, since it is not a   
component). The problem really shows up in the following situation:


1. A client component has a transactional policy associated with  
it  that propagates

2. The target requires a client call it with the transactional policy
3. The client does this:

public class Foo {
@Context CurrentCompositeContext context;

public void operation() {
context.locateService(Foo.class, Foo).doSomething();
}

}

It works.

4. The client instead does this and they get some kind of trx  
context error because now it is behaving as unmanaged code:


public class Foo {

public void operation() {
CurrentCompositeContext.getContext().locateService(Foo.class,  
Foo).doSomething();

}

}



WRT transactions, the specs will never support a case where a  
service provider requires that a client propogate a transaction.
How about between two local services where the target requires a  
transaction to be active? By propagation I don't mean remote  
boundaries.



Perhaps it's just that your example is bad.

The spec doesn't talk about source side chains, so this is clearly  
an implementation issue.

Yes that is correct.
  If a composite reference contains decorations for policy (intents  
or policySets), then it is the reference binding's responsibility  
to act on those policy decorations.  If it cannot do so, it must  
throw an error.  Managed vs. un-managed environments can certainly  
create differences in policy behavior.
That was what I was getting at and I think overloading locateService  
(it behaves differently if it is done from a ComponentContext that is  
obtained through injection with @Context or getCurrentContext()) is  
going to be confusing.
  I still don't see what that has to do with the ability of the  
locateService API to provide a proxy for a configured composite  
reference.

It doesn't. It has more to do with the overloading issue above.
Having source side policy configured on a composite reference is  
related to the presence of source side policy on the reference, and  
has nothing to do with an particular component.
If this is the case, then we have different behavior in the following  
case, which is equally confusing:

public class ComponentImpl {

@Context
protected CurrentCompositeContext context;

@Reference  // wired to FooService in the scdl
protected Foo foo;

public someOperation() {
context.locateService(Foo.class FooService).invoke();
		CurrentCompositeContext.getContext().locateService(Foo.class  
FooService).invoke(); // is different from above

}



In the spec group, we played around with the notion of a default  
context which would get around this problem. A better solution may  
be  to eliminate locate service for components (e.g. @Context)  
altogether  and only relying on dependency injection (this would  
involve making a  war or jsp a component impl type). The only case  
where I see a  problem with this is in a completely dynamic  
situation where the  component name is passed in (in which case  
only the interface is  known). This may be something we can do  
through autowire or through  multiplicity references. Can you  
describe the use-case a little more?




The use case is very simple.  A composite level reference with a  
WSDL interface type.  The locateService() API should be able to  
return a proxy to that reference.  The locateService API might be  
invoked from with an SCA component implementation, or not.  As I  
recall, this is a use case that you pushed into the spec.
Whether locateService() should return a proxy or not is a separate  
issue (it really has to). I was questioning:


1. The utility of even having the option of locateService from within  
a component. I don't think it is needed. The only case I can see for  
this is dynamic service lookups but I believe that can be solved by  
multiplicity as the service contract is known upfront by the client  
(just wire a multiplicity at assembly/deployment).


2. Whether it is possible to eliminate the concept of unmanaged code  
altogether. I think we could do this from JSPs by modeling a war file  
as a 

[jira] Commented: (TUSCANY-578) Exceptions thrown by SDO runtime not the same as defined in the spec

2006-11-30 Thread Yang ZHONG (JIRA)
[ 
http://issues.apache.org/jira/browse/TUSCANY-578?page=comments#action_12454761 
] 

Yang ZHONG commented on TUSCANY-578:


Having discussed with Frank, will fix this along within 935

 Exceptions thrown by SDO runtime not the same as defined in the spec
 

 Key: TUSCANY-578
 URL: http://issues.apache.org/jira/browse/TUSCANY-578
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Affects Versions: Java-M2
Reporter: Brian Murray
Priority: Minor
 Fix For: Java-Mx

 Attachments: DataObjectUtil.patch


 On page 27 of V2.01 of the spec, specific exceptions are listed for certain 
 kinds of errors.  In some cases, a different exception is thrown (each case 
 will be added as a subtask).  Either the specification or the implementation 
 should be updated.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



[jira] Commented: (TUSCANY-951) NullPointerException when setting an invalid property

2006-11-30 Thread Yang ZHONG (JIRA)
[ 
http://issues.apache.org/jira/browse/TUSCANY-951?page=comments#action_12454763 
] 

Yang ZHONG commented on TUSCANY-951:


Having discussed with Frank, will fix this along within 935

 NullPointerException when setting an invalid property
 -

 Key: TUSCANY-951
 URL: http://issues.apache.org/jira/browse/TUSCANY-951
 Project: Tuscany
  Issue Type: Bug
  Components: Java SDO Implementation
Reporter: Brent Daniel
 Fix For: Java-Mx, Java-M2


 Calling set() with an invalid property name results in a 
 NullPointerException. For example:
 dataObject.setInt(invalidProperty, 5);
 results in:
 java.lang.NullPointerException
   at 
 org.apache.tuscany.sdo.util.DataObjectUtil.getSetValue(DataObjectUtil.java:1440)
   at 
 org.apache.tuscany.sdo.util.DataObjectUtil.setInt(DataObjectUtil.java:537)
   at 
 org.apache.tuscany.sdo.impl.DataObjectImpl.setInt(DataObjectImpl.java:526)
   

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: [jira] Commented: (TUSCANY-949) Incorrect set of extensions published to the maven repo

2006-11-30 Thread Rick
I feel that M2 should have been (is) in lock down and fixes should only be to 
issues that clearly break functionality.  However, we the community SHOULD have 
stuck to that position. Given we gave the go ahead to this and two people have 
claimed to have tested it and it addresses the issue stated I think we should 
accept it.


ant elder wrote:

On 11/29/06, Jeremy Boynes [EMAIL PROTECTED] wrote:


On Nov 29, 2006, at 4:00 AM, ant elder wrote:
 Looks like that answers all the questions and sounds convincing to
 me. We
 discussed doing this the other day and agreed it needed doing and
 based on
 that Simon went ahead and did the work for it, so I think we should
 go ahead
 and apply this to M2 now. Unless there are any other concerns I'll
 do this
 tonight.

We didn't agree it needed doing. I still don't think it does as I see
no downside to not making this change.

I have concerns that using profiles this way will cause problems
(e.g. what happens if two profiles include different modules) and I
was hoping Simon had a better solution. I think this approach is
confusing for users as it's not obvious which modules get built and
which don't.

I am also concerned that there has not been enough testing given we
are so close to release.

I'm not concerned enough though to veto such a change so if you think
it's the right thing to do then go ahead. I would suggest waiting to
see what the consensus really is.
--
Jeremy



I'm reluctant to commit this while you're so against it, but I'm not sure I
understand your concerns.

We did clearly tell Simon to go and make a patch to do this:

jboynes simonnash: if you want something different, please give us a
patch for the build to build it as YOU want it

and:

simonnash so in building the release I would expect to select a subset of
all available modules and copy those selected modules into contrib and also
deploy htem to maven
jboynes patches welcome
simonnash ok i will do what I can.  any help from others will be
appreciated.

and then the IRC chat summary posted to the dev list clearly said it was
happening:

there was some discussion around what Tuscany jars are released as part of
M2 into the maven repository. Currently everything in the Tuscany build is
released, should that be trimmed to only those things that we want to say
are ready? Simon is going to create a patch to the build to make this
possible.

No one questioned that and in good faith he's gone off and made a patch as
requested.

With the current Axiom issue we have a bit of time now, I've tried the 
patch

and seems to work fine, would you give it a test? What other testing would
you like to see?

Another thing I think we should remember is that this patch is from a new
contributor so we should be receptive so as to encourage further
participation.

I'd really appreciate others comments on if we should apply this.

  ...ant



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



[jira] Updated: (TUSCANY-97) Read only properties

2006-11-30 Thread Yang ZHONG (JIRA)
 [ http://issues.apache.org/jira/browse/TUSCANY-97?page=all ]

Yang ZHONG updated TUSCANY-97:
--

Attachment: EnforceReadOnly.97

The attachment is requested for public review.

Thanks.

 Read only properties
 

 Key: TUSCANY-97
 URL: http://issues.apache.org/jira/browse/TUSCANY-97
 Project: Tuscany
  Issue Type: Task
  Components: C++ SDO
Affects Versions: Cpp-current
Reporter: Ed Slattery
Priority: Trivial
 Fix For: Cpp-current

 Attachments: EnforceReadOnly.97


 Read-only properties are not fully supported, and should be.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



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



Re: [SDO C++] Thread safety ?

2006-11-30 Thread Jean-Sebastien Delfino

Caroline Maynard wrote:

On 21/11/06, Geoffrey Winn [EMAIL PROTECTED] wrote:



As far as SDO itself is concerned, I think we would be OK if the user of
SDO
could guarantee that whenever an SDO artifact (data factory, data 
object,

type, XSDHelper ...) is created then that artifact will be used
_exclusively_ by the thread that created it. If that's acceptable to you
then I'll check the code to ensure that my claim is correct.



Yes, that's how it would be. The SDO for PHP implementation doesn't keep
references to Tuscany objects in static data.

As you observed earlier we will need to resolve the localtime issue.


I'll raise a JIRA for that.

Outside of SDO we will also need to check the various libraries that we

depend on. You mentioned libxml2 but there is also zlib and iconv too.
Based
on a quick look at the libxml2 reference that you supplied we wll need a
small change to the SDO build process but also possibly some code 
changes

too.



Both zlib and iconv are also part of the normal PHP environment, because
libxml2 depends on them, so I don't expect issues with them. But FYI, 
zlib

has a faq: http://www.zlib.net/zlib_faq.html#faq21
As for iconv, I think that libxml2 will use whatever iconv 
implementation it

finds on the platform, which is not necessarily libiconv, so a general
statement may not be possible.



Do you think that we should build with the thread safe libs by default? 
or have 2 bin libraries one thread safe, one not but faster?


The question applies to both Linux and Windows, and I'm not sure but we 
may have different answers for different systems.


Caroline, maybe I missed it in the email thread, but do your users need 
this on Linux? Windows? both?


Thanks,

--
Jean-Sebastien


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