<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>dev@tuscany.apache.org Archives</title>
<link rel="self" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/?format=atom"/>
<link href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/"/>
<id>http://mail-archives.apache.org/mod_mbox/tuscany-dev/</id>
<updated>2013-05-20T15:38:32Z</updated>
<entry>
<title>Fwd: How to run TUSCANY and BPEL within shell</title>
<author><name>冯仁君 &lt;fengrj1989@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3cCACY5R+Yu20YXrsBWhxUE9FjF_26SWOZp5+zZa=7mBE+RBzA_Kw@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCACY5R+Yu20YXrsBWhxUE9FjF_26SWOZp5+zZa=7mBE+RBzA_Kw@mail-gmail-com%3e</id>
<updated>2013-04-24T08:27:20Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi, all.&#010;&#010;I seem to find some clues in the src.&#010;&#010;These NullPointerException is thrown because in the following code:&#010;&#010;&#010;&#010;&#010;&#010;On Thu, Apr 18, 2013 at 2:06 PM, 冯仁君 &lt;fengrj1989@gmail.com&gt; wrote:&#010;&#010;&gt; Hi all,&#010;&gt;&#010;&gt; I'm new in TUSCANY and I try run BPEL on TUSCANY within shell.&#010;&gt;&#010;&gt; I put a helloworld.bpel, a helloworld.wsld, and a helloworld.composite in&#010;&gt; a folder. Then start TUSCANY.&#010;&gt;&#010;&gt; There is no error when I start this composite in shell and I can see&#010;&gt; detials of this composite with command SERVICES.&#010;&gt;&#010;&gt; However, when I invoke this service, I get following exception:&#010;&gt;&#010;&gt; default&gt; invoke BPELHelloWorldComponent/helloPartnerLink hello asd&#010;&gt; org.oasisopen.sca.ServiceRuntimeException:&#010;&gt; org.apache.tuscany.sca.core.factory.ObjectCreationException:&#010;&gt; java.lang.NullPointerException&#010;&gt;  at&#010;&gt; org.apache.tuscany.sca.core.context.impl.ServiceReferenceImpl.getService(ServiceReferenceImpl.java:160)&#010;&gt; at&#010;&gt; org.apache.tuscany.sca.impl.ServiceHelper.getService(ServiceHelper.java:82)&#010;&gt;  at org.apache.tuscany.sca.impl.NodeImpl.getService(NodeImpl.java:470)&#010;&gt; at org.apache.tuscany.sca.shell.commands.Invoke.invoke(Invoke.java:85)&#010;&gt;  at org.apache.tuscany.sca.shell.Shell$1.call(Shell.java:518)&#010;&gt; at org.apache.tuscany.sca.shell.Shell$1.call(Shell.java:516)&#010;&gt;  at org.apache.tuscany.sca.shell.Shell.apply(Shell.java:628)&#010;&gt; at org.apache.tuscany.sca.shell.Shell.run(Shell.java:642)&#010;&gt;  at org.apache.tuscany.sca.shell.Shell.main(Shell.java:112)&#010;&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&#010;&gt;  at&#010;&gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&#010;&gt; at&#010;&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&#010;&gt;  at java.lang.reflect.Method.invoke(Method.java:597)&#010;&gt; at&#010;&gt; org.apache.tuscany.sca.launcher.LauncherMain.invokeMainMethod(LauncherMain.java:115)&#010;&gt;  at&#010;&gt; org.apache.tuscany.sca.launcher.LauncherMain.main(LauncherMain.java:56)&#010;&gt; Caused by: org.apache.tuscany.sca.core.factory.ObjectCreationException:&#010;&gt; java.lang.NullPointerException&#010;&gt;  at&#010;&gt; org.apache.tuscany.sca.core.context.impl.ServiceReferenceImpl.getProxy(ServiceReferenceImpl.java:143)&#010;&gt; at&#010;&gt; org.apache.tuscany.sca.core.context.impl.ServiceReferenceImpl.getService(ServiceReferenceImpl.java:158)&#010;&gt;  ... 14 more&#010;&gt; Caused by: java.lang.NullPointerException&#010;&gt; at&#010;&gt; org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory.createProxy(ExtensibleProxyFactory.java:97)&#010;&gt;  at&#010;&gt; org.apache.tuscany.sca.core.context.impl.ServiceReferenceImpl.createProxy(ServiceReferenceImpl.java:152)&#010;&gt; at&#010;&gt; org.apache.tuscany.sca.core.context.impl.ServiceReferenceImpl.getProxy(ServiceReferenceImpl.java:139)&#010;&gt;  ... 15 more&#010;&gt;&#010;&gt;&#010;&gt; Any one knows this problem?&#010;&gt; Or tell me how to run a BPEL on TUSCANY within shell( not just mvn test).&#010;&gt;&#010;&gt; plz, thank you!&#010;&gt;&#010;&gt; --&#010;&gt;&#010;&gt; Best Regards,&#010;&gt; Feng Renjun.&#010;&gt;&#010;&#010;&#010;&#010;-- &#010;&#010;Best Regards,&#010;Feng Renjun.&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>GSoC 2013</title>
<author><name>Luciano Resende &lt;luckbr1975@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3cCAGU5spczv4VKpOqDf==Ou+KCtm-UqrJ38aeJf6Jua7dbWuJOjw@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAGU5spczv4VKpOqDf==Ou+KCtm-UqrJ38aeJf6Jua7dbWuJOjw@mail-gmail-com%3e</id>
<updated>2013-04-10T19:11:00Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Now that Apache have been officially accepted as a Mentoring organization&#010;for Google Summer of Code 2013, I have started creating couple jiras with&#010;project ideas and would like to encourage others to also think about&#010;volunteering as mentors and create new project ideas.&#010;&#010;Thanks&#010;&#010;-- &#010;Luciano Resende&#010;http://people.apache.org/~lresende&#010;http://twitter.com/lresende1975&#010;http://lresende.blogspot.com/&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Created] (TUSCANY-4077) Enhance Tuscany Widget support</title>
<author><name>&quot;Luciano Resende (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3cJIRA.12641892.1365620925290.144612.1365620956029@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12641892-1365620925290-144612-1365620956029@arcas%3e</id>
<updated>2013-04-10T19:09:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Luciano Resende created TUSCANY-4077:&#010;----------------------------------------&#010;&#010;             Summary: Enhance Tuscany Widget support&#010;                 Key: TUSCANY-4077&#010;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4077&#010;             Project: Tuscany&#010;          Issue Type: New Feature&#010;          Components: Java SCA Widget&#010;            Reporter: Luciano Resende&#010;&#010;&#010;Enhance the current Tuscany Widget to support different javascript libraries (e.g. JQuery),&#010;enable support for cross-domain services invocations using CORS when applicable, support gzip&#010;compression, etc&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Created] (TUSCANY-4076) Develop a distributed domain registry using Apache ZooKeeper</title>
<author><name>&quot;Luciano Resende (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3cJIRA.12641890.1365620671778.144598.1365620716527@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12641890-1365620671778-144598-1365620716527@arcas%3e</id>
<updated>2013-04-10T19:05:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Luciano Resende created TUSCANY-4076:&#010;----------------------------------------&#010;&#010;             Summary: Develop a distributed domain registry using Apache ZooKeeper&#010;                 Key: TUSCANY-4076&#010;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4076&#010;             Project: Tuscany&#010;          Issue Type: New Feature&#010;          Components: SCA Java Runtime&#010;            Reporter: Luciano Resende&#010;&#010;&#010;Add Support to a distributed SCA domain registry using Apache Zookeeper. An stretch goal would&#010;be to provide a "persistence abstraction" that would enable plugin in different distributed&#010;data services such as Apache ZooKeeper, Redis, or Memcache. BTW, there is an initial prototype&#010;from Raymond Feng on this.&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: [NOTICE] Welcome Sebastian Millies as new committer</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3cA23C571F-A0B9-46EF-8435-E1283C2EBD85@gmail.com%3e"/>
<id>urn:uuid:%3cA23C571F-A0B9-46EF-8435-E1283C2EBD85@gmail-com%3e</id>
<updated>2013-04-09T13:18:33Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Congrats and Welcome Sebastian!&#010;&#010;- Jean-Sebastien&#010;&#010;Sent from my DynaTAC 8000x&#010;&#010;On Apr 8, 2013, at 8:59 AM, Raymond Feng &lt;enjoyjava@gmail.com&gt; wrote:&#010;&#010;&gt; Congratulations and welcome on board!&#010;&gt; &#010;&gt; Raymond&#010;&gt; &#010;&gt; On Apr 8, 2013, at 7:29 AM, Luciano Resende &lt;luckbr1975@gmail.com&gt; wrote:&#010;&gt; &#010;&gt;&gt; The Tuscany PMC have voted to make Sebastian Millies a Tuscany committer.&#010;&gt;&gt; &#010;&gt;&gt; Congratulations and welcome Sebastian!&#010;&gt;&gt; &#010;&gt;&gt; -- &#010;&gt;&gt; Luciano Resende&#010;&gt;&gt; http://people.apache.org/~lresende&#010;&gt;&gt; http://twitter.com/lresende1975&#010;&gt;&gt; http://lresende.blogspot.com/&#010;&gt; &#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: [NOTICE] Welcome Sebastian Millies as new committer</title>
<author><name>Raymond Feng &lt;enjoyjava@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3c16D04052-329D-4BF2-AA98-7C305EB7150F@gmail.com%3e"/>
<id>urn:uuid:%3c16D04052-329D-4BF2-AA98-7C305EB7150F@gmail-com%3e</id>
<updated>2013-04-08T15:59:21Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Congratulations and welcome on board!&#010;&#010;Raymond&#010;&#010;On Apr 8, 2013, at 7:29 AM, Luciano Resende &lt;luckbr1975@gmail.com&gt; wrote:&#010;&#010;&gt; The Tuscany PMC have voted to make Sebastian Millies a Tuscany committer.&#010;&gt; &#010;&gt; Congratulations and welcome Sebastian!&#010;&gt; &#010;&gt; -- &#010;&gt; Luciano Resende&#010;&gt; http://people.apache.org/~lresende&#010;&gt; http://twitter.com/lresende1975&#010;&gt; http://lresende.blogspot.com/&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: [NOTICE] Welcome Sebastian Millies as new committer</title>
<author><name>Simon Nash &lt;nash@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3c5162DA82.7030702@apache.org%3e"/>
<id>urn:uuid:%3c5162DA82-7030702@apache-org%3e</id>
<updated>2013-04-08T14:56:02Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Congratulations Sebastian, and welcome on board!&#010;&#010;   Simon&#010;&#010;Luciano Resende wrote:&#010;&gt; The Tuscany PMC have voted to make Sebastian Millies a Tuscany committer.&#010;&gt; &#010;&gt; Congratulations and welcome Sebastian!&#010;&gt; &#010;&gt; -- &#010;&gt; Luciano Resende&#010;&gt; http://people.apache.org/~lresende&#010;&gt; http://twitter.com/lresende1975&#010;&gt; http://lresende.blogspot.com/&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[NOTICE] Welcome Sebastian Millies as new committer</title>
<author><name>Luciano Resende &lt;luckbr1975@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201304.mbox/%3cCAGU5spfBWdfqwHzoqAFmyfi+XqucWA9HKcyY4cG6JQ4C+4Nv_g@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAGU5spfBWdfqwHzoqAFmyfi+XqucWA9HKcyY4cG6JQ4C+4Nv_g@mail-gmail-com%3e</id>
<updated>2013-04-08T14:29:19Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
The Tuscany PMC have voted to make Sebastian Millies a Tuscany committer.&#010;&#010;Congratulations and welcome Sebastian!&#010;&#010;-- &#010;Luciano Resende&#010;http://people.apache.org/~lresende&#010;http://twitter.com/lresende1975&#010;http://lresende.blogspot.com/&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: SDO and XML escapes (Java and C++)</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201302.mbox/%3c1361445532.2410.960.camel@parsley%3e"/>
<id>urn:uuid:%3c1361445532-2410-960-camel@parsley%3e</id>
<updated>2013-02-21T11:18:52Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;I suppose, nobody really cares :-) but I entered a Jira anyway&#010;(TUSCANY-4075)&#010;I looked further into it for potential side effects and commented in&#010;Jira - was not sure about sequences and lists but that should be safe&#010;too (and at least not worse than today).&#010;&#010;I tested it and did not find any problems so far.&#010;&#010;Still, if there are comments, I'd be glad for opinions/...!!&#010;Rgds,&#010;  tge&#010;&#010;On Tue, 2013-02-19 at 16:32 +0100, Thomas Gentsch wrote:&#010;&gt; Hello all,&#010;&gt; &#010;&gt; we are using both C++ and Java SDO in a project and discovered some&#010;&gt; misbehavior in the C++ components with XML data converted from/to SDO if&#010;&gt; the XML contains either escaped chars of CDATA. Java seems to do it&#010;&gt; mostly right (see below)&#010;&gt; &#010;&gt; When looking at the SDO (C++ M3) code and searching on the web (e.g.&#010;&gt; [1]) it looks as if this topic seemed a bit, well, incomplete in the C++&#010;&gt; world.&#010;&gt; &#010;&gt; The problem (C++):&#010;&gt; - loading an XML with CDATA inside works nicely, the CDATA remains &#010;&gt;   intact, therefore saving works nicely too. However, if I do a &#010;&gt;   DataObjectPtr-&gt;getCString(), I get the CDATA in the returned value - &#010;&gt;   means as a user I have to deal with that :-|&#010;&gt; - loading an XML with escaped (e.g. &amp;lt;) works too, libxml2 converts &#010;&gt;   these chars. getCString() returns the real text (e.g. "&lt;"), but &#010;&gt;   saving does not re-insert the escaping - i.e. the resulting XML is &#010;&gt;   not usable anymore (TUSCANY-1553)&#010;&gt; In Java this looks much better and quite as I'd expect it to:&#010;&gt; - loading XML with either constructs works&#010;&gt; - using getCString() just returns the real text with the escaped &#010;&gt;   sections converted&#010;&gt; - saving works too, CDATA are lost but are rather converted back to &#010;&gt;   escaped XML - this is not the *original* XML anymore but at least it &#010;&gt;   is valid and logically it is the same as the input&#010;&gt; - Example:&#010;&gt;   Input XML:&#010;&gt;      &lt;tns1:name&gt;&amp;#252;&amp;lt;&amp;gt;bla blub &lt;![CDATA[ &lt;&lt;&gt;&gt;&#010;]]&gt;&lt;/tns1:name&gt;&#010;&gt;   getCString() in Java:&#010;&gt;      "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; "&#010;&gt;   Saving this as XML:&#010;&gt;      &lt;tns1:name&gt;ü&amp;lt;&gt;bla blub  &amp;lt;&amp;lt;&gt;&gt; &lt;/tns1:name&gt;&#010;&gt;   The only questionable thing is the saved "ü" ... to be &#010;&gt;   converted back to &amp;uuml; or &amp;#252; ?&#010;&gt; &#010;&gt; Anyway, now the question: As it seems there were discussions going on&#010;&gt; when SDO C++ has been implemented - has the approach above (as in Java)&#010;&gt; ever been considered and, if so, why has it not been followed?&#010;&gt; I believe that this would have been also much simpler than it is today:&#010;&gt; - while parsing&#010;&gt;   - the cdata handler function of the SAX2 handler just &#010;&gt;     appends the text returned by libxml2&#010;&gt;   - escaped chars are converted by libxml2 anyway&#010;&gt; - the property value now contains the real text&#010;&gt;   (e.g. "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; ") and returns it just as-is in getCString()&#010;&gt; - setting that property also just sets the passed-in value&#010;&gt; - saving the property just calls libxml2 xmlTextWriterWriteString() &#010;&gt;   which should escape the special chars&#010;&gt; &#010;&gt; Another advantage is that users don't need to worry about (un)escaping&#010;&gt; special chars or CDATA as today.&#010;&gt; &#010;&gt; Any insight is very welcome!&#010;&gt; Regards,&#010;&gt;   tge&#010;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Commented] (TUSCANY-4075) SDO C++ handling of XML CDATA and escaped chars inconsistent</title>
<author><name>&quot;Thomas Gentsch (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201302.mbox/%3cJIRA.12633376.1361443866070.316756.1361445253170@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12633376-1361443866070-316756-1361445253170@arcas%3e</id>
<updated>2013-02-21T11:14:13Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;    [ https://issues.apache.org/jira/browse/TUSCANY-4075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=13583109#comment-13583109&#010;] &#010;&#010;Thomas Gentsch commented on TUSCANY-4075:&#010;-----------------------------------------&#010;&#010;This would make TUSCANY-1553 and TUSCANY-3715 unnecessary.&#010;Discovered a few other things:&#010;- reading in a sequence (as in letter example) works only if most-top-level XSD class is tagged&#010;as mixed=true, not for embedded classes&#010;- writing XML lists seems not to be implemented at all - DataObjectList works but does not&#010;consider whether the original was/is a list&#010;- line break recognition to separate sequence items while XML parsing questionable&#010;&#010;                &#010;&gt; SDO C++ handling of XML CDATA and escaped chars inconsistent&#010;&gt; ------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: TUSCANY-4075&#010;&gt;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4075&#010;&gt;             Project: Tuscany&#010;&gt;          Issue Type: Bug&#010;&gt;          Components: C++ SDO&#010;&gt;    Affects Versions: Cpp-M3&#010;&gt;            Reporter: Thomas Gentsch&#010;&gt;&#010;&gt; we are using both C++ and Java SDO in a project and discovered some&#010;&gt; misbehavior in the C++ components with XML data converted from/to SDO if&#010;&gt; the XML contains either escaped chars of CDATA. Java seems to do it&#010;&gt; mostly right (see below)&#010;&gt; When looking at the SDO (C++ M3) code and searching on the web (e.g.&#010;&gt; [1]) it looks as if this topic seemed a bit, well, incomplete in the C++&#010;&gt; world.&#010;&gt; The problem (C++):&#010;&gt; - loading an XML with CDATA inside works nicely, the CDATA remains &#010;&gt;   intact, therefore saving works nicely too. However, if I do a &#010;&gt;   DataObjectPtr-&gt;getCString(), I get the CDATA in the returned value - &#010;&gt;   means as a user I have to deal with that :-|&#010;&gt; - loading an XML with escaped (e.g. &amp;lt;) works too, libxml2 converts &#010;&gt;   these chars. getCString() returns the real text (e.g. "&lt;"), but &#010;&gt;   saving does not re-insert the escaping - i.e. the resulting XML is &#010;&gt;   not usable anymore (TUSCANY-1553)&#010;&gt; In Java this looks much better and quite as I'd expect it to:&#010;&gt; - loading XML with either constructs works&#010;&gt; - using getCString() just returns the real text with the escaped &#010;&gt;   sections converted&#010;&gt; - saving works too, CDATA are lost but are rather converted back to &#010;&gt;   escaped XML - this is not the *original* XML anymore but at least it &#010;&gt;   is valid and logically it is the same as the input&#010;&gt; - Example:&#010;&gt;   Input XML:&#010;&gt;      &lt;tns1:name&gt;&amp;#252;&amp;lt;&amp;gt;bla blub &lt;![CDATA[ &lt;&lt;&gt;&gt;&#010;]]&gt;&lt;/tns1:name&gt;&#010;&gt;   getCString() in Java:&#010;&gt;      "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; "&#010;&gt;   Saving this as XML:&#010;&gt;      &lt;tns1:name&gt;ü&amp;lt;&gt;bla blub  &amp;lt;&amp;lt;&gt;&gt; &lt;/tns1:name&gt;&#010;&gt;   The only questionable thing is the saved "ü" ... to be &#010;&gt;   converted back to &amp;uuml; or &amp;#252; ?&#010;&gt; Anyway, now the question: As it seems there were discussions going on&#010;&gt; when SDO C++ has been implemented - has the approach above (as in Java)&#010;&gt; ever been considered and, if so, why has it not been followed?&#010;&gt; I believe that this would have been also much simpler than it is today:&#010;&gt; - while parsing&#010;&gt;   - the cdata handler function of the SAX2 handler just &#010;&gt;     appends the text returned by libxml2&#010;&gt;   - escaped chars are converted by libxml2 anyway&#010;&gt; - the property value now contains the real text&#010;&gt;   (e.g. "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; ") and returns it just as-is in getCString()&#010;&gt; - setting that property also just sets the passed-in value&#010;&gt; - saving the property just calls libxml2 xmlTextWriterWriteString() &#010;&gt;   which should escape the special chars&#010;&gt; Another advantage is that users don't need to worry about (un)escaping&#010;&gt; special chars or CDATA as today. Disadvantage: API behavior changes.&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Created] (TUSCANY-4075) SDO C++ handling of XML CDATA and escaped chars inconsistent</title>
<author><name>&quot;Thomas Gentsch (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201302.mbox/%3cJIRA.12633376.1361443866070.316678.1361443932224@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12633376-1361443866070-316678-1361443932224@arcas%3e</id>
<updated>2013-02-21T10:52:12Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Thomas Gentsch created TUSCANY-4075:&#010;---------------------------------------&#010;&#010;             Summary: SDO C++ handling of XML CDATA and escaped chars inconsistent&#010;                 Key: TUSCANY-4075&#010;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4075&#010;             Project: Tuscany&#010;          Issue Type: Bug&#010;          Components: C++ SDO&#010;    Affects Versions: Cpp-M3&#010;            Reporter: Thomas Gentsch&#010;&#010;&#010;we are using both C++ and Java SDO in a project and discovered some&#010;misbehavior in the C++ components with XML data converted from/to SDO if&#010;the XML contains either escaped chars of CDATA. Java seems to do it&#010;mostly right (see below)&#010;&#010;When looking at the SDO (C++ M3) code and searching on the web (e.g.&#010;[1]) it looks as if this topic seemed a bit, well, incomplete in the C++&#010;world.&#010;&#010;The problem (C++):&#010;- loading an XML with CDATA inside works nicely, the CDATA remains &#010;  intact, therefore saving works nicely too. However, if I do a &#010;  DataObjectPtr-&gt;getCString(), I get the CDATA in the returned value - &#010;  means as a user I have to deal with that :-|&#010;- loading an XML with escaped (e.g. &amp;lt;) works too, libxml2 converts &#010;  these chars. getCString() returns the real text (e.g. "&lt;"), but &#010;  saving does not re-insert the escaping - i.e. the resulting XML is &#010;  not usable anymore (TUSCANY-1553)&#010;In Java this looks much better and quite as I'd expect it to:&#010;- loading XML with either constructs works&#010;- using getCString() just returns the real text with the escaped &#010;  sections converted&#010;- saving works too, CDATA are lost but are rather converted back to &#010;  escaped XML - this is not the *original* XML anymore but at least it &#010;  is valid and logically it is the same as the input&#010;- Example:&#010;  Input XML:&#010;     &lt;tns1:name&gt;&amp;#252;&amp;lt;&amp;gt;bla blub &lt;![CDATA[ &lt;&lt;&gt;&gt; ]]&gt;&lt;/tns1:name&gt;&#010;  getCString() in Java:&#010;     "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; "&#010;  Saving this as XML:&#010;     &lt;tns1:name&gt;ü&amp;lt;&gt;bla blub  &amp;lt;&amp;lt;&gt;&gt; &lt;/tns1:name&gt;&#010;  The only questionable thing is the saved "ü" ... to be &#010;  converted back to &amp;uuml; or &amp;#252; ?&#010;&#010;Anyway, now the question: As it seems there were discussions going on&#010;when SDO C++ has been implemented - has the approach above (as in Java)&#010;ever been considered and, if so, why has it not been followed?&#010;I believe that this would have been also much simpler than it is today:&#010;- while parsing&#010;  - the cdata handler function of the SAX2 handler just &#010;    appends the text returned by libxml2&#010;  - escaped chars are converted by libxml2 anyway&#010;- the property value now contains the real text&#010;  (e.g. "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; ") and returns it just as-is in getCString()&#010;- setting that property also just sets the passed-in value&#010;- saving the property just calls libxml2 xmlTextWriterWriteString() &#010;  which should escape the special chars&#010;&#010;Another advantage is that users don't need to worry about (un)escaping&#010;special chars or CDATA as today. Disadvantage: API behavior changes.&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>SDO and XML escapes (Java and C++)</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201302.mbox/%3c1361287936.2410.696.camel@parsley%3e"/>
<id>urn:uuid:%3c1361287936-2410-696-camel@parsley%3e</id>
<updated>2013-02-19T15:32:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hello all,&#010;&#010;we are using both C++ and Java SDO in a project and discovered some&#010;misbehavior in the C++ components with XML data converted from/to SDO if&#010;the XML contains either escaped chars of CDATA. Java seems to do it&#010;mostly right (see below)&#010;&#010;When looking at the SDO (C++ M3) code and searching on the web (e.g.&#010;[1]) it looks as if this topic seemed a bit, well, incomplete in the C++&#010;world.&#010;&#010;The problem (C++):&#010;- loading an XML with CDATA inside works nicely, the CDATA remains &#010;  intact, therefore saving works nicely too. However, if I do a &#010;  DataObjectPtr-&gt;getCString(), I get the CDATA in the returned value - &#010;  means as a user I have to deal with that :-|&#010;- loading an XML with escaped (e.g. &amp;lt;) works too, libxml2 converts &#010;  these chars. getCString() returns the real text (e.g. "&lt;"), but &#010;  saving does not re-insert the escaping - i.e. the resulting XML is &#010;  not usable anymore (TUSCANY-1553)&#010;In Java this looks much better and quite as I'd expect it to:&#010;- loading XML with either constructs works&#010;- using getCString() just returns the real text with the escaped &#010;  sections converted&#010;- saving works too, CDATA are lost but are rather converted back to &#010;  escaped XML - this is not the *original* XML anymore but at least it &#010;  is valid and logically it is the same as the input&#010;- Example:&#010;  Input XML:&#010;     &lt;tns1:name&gt;&amp;#252;&amp;lt;&amp;gt;bla blub &lt;![CDATA[ &lt;&lt;&gt;&gt; ]]&gt;&lt;/tns1:name&gt;&#010;  getCString() in Java:&#010;     "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; "&#010;  Saving this as XML:&#010;     &lt;tns1:name&gt;ü&amp;lt;&gt;bla blub  &amp;lt;&amp;lt;&gt;&gt; &lt;/tns1:name&gt;&#010;  The only questionable thing is the saved "ü" ... to be &#010;  converted back to &amp;uuml; or &amp;#252; ?&#010;&#010;Anyway, now the question: As it seems there were discussions going on&#010;when SDO C++ has been implemented - has the approach above (as in Java)&#010;ever been considered and, if so, why has it not been followed?&#010;I believe that this would have been also much simpler than it is today:&#010;- while parsing&#010;  - the cdata handler function of the SAX2 handler just &#010;    appends the text returned by libxml2&#010;  - escaped chars are converted by libxml2 anyway&#010;- the property value now contains the real text&#010;  (e.g. "ü&lt;&gt;bla blub  &lt;&lt;&gt;&gt; ") and returns it just as-is in getCString()&#010;- setting that property also just sets the passed-in value&#010;- saving the property just calls libxml2 xmlTextWriterWriteString() &#010;  which should escape the special chars&#010;&#010;Another advantage is that users don't need to worry about (un)escaping&#010;special chars or CDATA as today.&#010;&#010;Any insight is very welcome!&#010;Regards,&#010;  tge&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Integrating some of the Nuvem components</title>
<author><name>Luciano Resende &lt;luckbr1975@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201302.mbox/%3cCAGU5spc3u5SskSjwVH2yusfaoHrpH0y-_s0m8dhzyM-WscHNfA@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAGU5spc3u5SskSjwVH2yusfaoHrpH0y-_s0m8dhzyM-WscHNfA@mail-gmail-com%3e</id>
<updated>2013-02-11T04:12:21Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Sun, Feb 10, 2013 at 5:28 PM, Jean-Sebastien Delfino&#010;&lt;jsdelfino@apache.org&gt; wrote:&#010;&gt; Hi all,&#010;&gt;&#010;&gt; Not much has happened since we discussed integrating Nuvem as a sub-project&#010;&gt; [1][2], so to help move this thread forward I'm going to start integrating&#010;&gt; the Python Nuvem components in the C++ SCA source tree under /components/&#010;&gt; [3]. They were written to run on that runtime's Python support so that seems&#010;&gt; like an easy starting point, and I'm also interested in using them in a few&#010;&gt; new Python samples that'll illustrate what you can do with them.&#010;&gt;&#010;&gt; HTH&#010;&gt;&#010;&gt; [1] http://marc.info/?l=tuscany-dev&amp;m=135338851904749&amp;w=2&#010;&gt; [2] http://marc.info/?l=incubator-general&amp;m=135423982723185&amp;w=2&#010;&gt; [3] http://svn.apache.org/repos/asf/tuscany/sca-cpp/trunk/components/&#010;&gt;&#010;&gt; - Jean-Sebastien&#010;&#010;&#010;+1, I'll hopefully have some time soon to start moving the java components.&#010;&#010;-- &#010;Luciano Resende&#010;http://people.apache.org/~lresende&#010;http://twitter.com/lresende1975&#010;http://lresende.blogspot.com/&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Integrating some of the Nuvem components</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201302.mbox/%3cCA+5QmYBSD+-ZUsr-GH4gmr0zUQOLb84eSN2d+uOdPNLwKNPEWQ@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYBSD+-ZUsr-GH4gmr0zUQOLb84eSN2d+uOdPNLwKNPEWQ@mail-gmail-com%3e</id>
<updated>2013-02-11T01:28:56Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi all,&#010;&#010;Not much has happened since we discussed integrating Nuvem as a sub-project&#010;[1][2], so to help move this thread forward I'm going to start integrating&#010;the Python Nuvem components in the C++ SCA source tree under /components/&#010;[3]. They were written to run on that runtime's Python support so that&#010;seems like an easy starting point, and I'm also interested in using them in&#010;a few new Python samples that'll illustrate what you can do with them.&#010;&#010;HTH&#010;&#010;[1] http://marc.info/?l=tuscany-dev&amp;m=135338851904749&amp;w=2&#010;[2] http://marc.info/?l=incubator-general&amp;m=135423982723185&amp;w=2&#010;[3] http://svn.apache.org/repos/asf/tuscany/sca-cpp/trunk/components/&#010;&#010;- Jean-Sebastien&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201301.mbox/%3cCA+5QmYCzipyMo5qtWGG4A2wLKFR2D1O-F3Gwq17c0JqbGZU7RQ@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYCzipyMo5qtWGG4A2wLKFR2D1O-F3Gwq17c0JqbGZU7RQ@mail-gmail-com%3e</id>
<updated>2013-01-17T07:41:08Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Mon, Jan 14, 2013 at 1:03 PM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&#010;&gt; On Sun, 2013-01-13 at 23:35 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; &gt; On Mon, Jan 7, 2013 at 1:28 PM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&gt;&#010;&#010;...&#010;&#010;&#010;&gt; &gt;&#010;&gt; &gt;         Q: Is there some kind of request routing?&#010;&gt; &gt;         A: Local calls are resolved during OS-loader-time. One&#010;&gt; &gt;         component calling&#010;&gt; &gt;         another is written as regular C++ code which results in&#010;&gt; &gt;         compiled code as&#010;&gt; &gt;         unresolved reference that must be satisfied during runtime by&#010;&gt; &gt;         the target&#010;&gt; &gt;         component which in turn must be loaded as shared library&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; No, if I remember correctly (as M3 was a long time ago,)&#010;&gt;&#010;&gt; :-)&#010;&gt;&#010;&gt; &gt; wires were resolved by Composite::resolveWires, then invocation of a&#010;&gt; &gt; component involved CPPServiceWrapper::getServiceWrapper to load the&#010;&gt; &gt; component library, lookup a factory function named after the service&#010;&gt; &gt; name, create an instance of CPPServiceWrapper, and eventually&#010;&gt; &gt; executing generated code in CPPServiceWrapper::invokeService to&#010;&gt; &gt; dispatch the call to the target C++ component method.&#010;&gt;&#010;&gt; But then the wrapper and proxy must exist - either hand-written or&#010;&gt; WSDL-generated.&#010;&#010;&#010;Yes&#010;&#010;&#010;&gt; The CppCalculator example though has neither. I did not&#010;&gt; verify all the others, most have WSDL as it seems.&#010;&gt; Maybe as long everything happens within *one* lib ... ?&#010;&gt;&#010;&gt;&#010;Proxies and wrappers are generated at build time. That's why you can't find&#010;them in the source tree, as we usually don't commit generated build outputs&#010;to the Apache source repository.&#010;&#010;&#010;&gt; Actually I was thinking that its even not a bad idea to let the OS&#010;&gt; loader (or even the linker) resolve the calls as it is probably the&#010;&gt; fastest way possible.&#010;&gt;&#010;&gt;&#010;That could be challenging in the following configurations:&#010;a) several components, say C1 and C2, implementing the same service WSDL&#010;interface 'I' + operation 'o' (as the linker wouldn't know which one to&#010;pick);&#010;b) dynamic wiring decided by a component's implementation logic (as the&#010;linking would happen too early);&#010;c) a composition of components written in different languages, in&#010;particular scripting languages (as linking would only apply to C and C++&#010;components).&#010;&#010;... but that's still an interesting idea to explore. I've not thought too&#010;much about it, but you may be able to come up with a generation scheme&#010;addressing some of these challenges.&#010;&#010;...&#010;&#010;&gt;&#010;&gt; &gt; I've worked on C++ M3, trunk and even the Java project so I can&#010;&gt; &gt; imagine why someone would prefer one or the other. The good thing is&#010;&gt; &gt; that they're here in the open and you can do what you want with the&#010;&gt; &gt; code, use the bits you prefer, mix them, or even contribute to&#010;&gt; &gt; maintain or change them to something you like, if you're interested.&#010;&gt;&#010;&gt; True, but the real power of open-source is if the "community" jointly&#010;&gt; works on the same thing. Of course I cannot force anybody :-)&#010;&gt; Also, I quite like the idea of following a standard (if it is any good,&#010;&gt; which I cannot really tell yet).&#010;&gt;&#010;&gt;&#010;+1&#010;&#010;&#010;&gt; So, in theory, I could start a project, let's say "sca-oasis", based on&#010;&gt; M3 ... originally I'd be the only one working on it, maybe others join,&#010;&gt; maybe not. Would that then still be "Apache Tuscany"?&#010;&gt;&#010;&gt;&#010;For it to be 'Apache Tuscany' you'd have to discuss and contribute your&#010;ideas to the Apache Tuscany community here in the open -- which you are&#010;doing right now :) -- and contribute code changes or additions to the&#010;Apache Tuscany project repository. If you're interested, you can start with&#010;patches in JIRA issues (which allow you to grant license to Apache for your&#010;contributions) and at some point the community can even give you&#010;committership.&#010;&#010;We should discuss what you have in mind on this list (I'd suggest a&#010;different thread as this one is getting long) but for example  'adding&#010;support for the OASIS SCA assembly spec to the M3 code', 'integrating some&#010;of the M3 code and trunk', 'adding a code generator to trunk (the one from&#010;M3 or another)' or any other ideas you have, would all be valid ideas to&#010;discuss and evolve the project IMO.&#010;&#010;...&#010;&#010;&gt;&#010;&gt; &gt; I'm not sure if you're talking about validating the data exchanged&#010;&gt; &gt; with SCA components (which could be done with a validating proxy) or&#010;&gt; &gt; about generating static code from schema type definitions, but both&#010;&gt; &gt; approaches should work nicely along M3 or trunk (for the latter you'd&#010;&gt; &gt; need a generator like scagen on top of the runtime invocation&#010;&gt; &gt; mechanism.)&#010;&gt;&#010;&gt; Maybe here I'm in the SDO world again ... :-) All the schema/type stuff&#010;&gt; is nicely integrated and I don't need to directly deal with libxml2 or&#010;&gt; so ...&#010;&gt;&#010;&gt;&#010;If you like SDO, that could be an area where you could contribute too. For&#010;example (just thinking out loud) you could try to get SDO to work with&#010;JSON, as JSON is getting so much traction these days, or (going back to&#010;your code generation idea), first make sure that SDO still works with&#010;modern C++ compilers and the latest Libxml2 parser, re-activate its build&#010;etc, then generate C++ SCA component skeletons that use SDOs.&#010;&#010;- Jean-Sebastien&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201301.mbox/%3c1358197428.2429.87.camel@parsley%3e"/>
<id>urn:uuid:%3c1358197428-2429-87-camel@parsley%3e</id>
<updated>2013-01-14T21:03:48Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Sun, 2013-01-13 at 23:35 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; On Mon, Jan 7, 2013 at 1:28 PM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&gt;         &#010;&gt;         Hello JS,&#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; Hi Thomas, Happy New Year!&#010;&#010;Many thx! Same back!!&#010;&#010;&gt;         now, I did some more reading etc and believe now that I mostly&#010;&gt;         understand what's going on :-)&#010;&gt;         &#010;&gt;         The main missing pieces were these (correct? Possibly my&#010;&gt;         terminology is&#010;&gt;         a bit fuzzy :-):&#010;&gt;         Q: When are SDOs used (in SCA M3) and when not?&#010;&gt;         A: If an interface of a service uses complex types as in/out&#010;&gt;         params or&#010;&gt;         return value, otherwise simple types (like int, bool, string)&#010;&gt;         are used.&#010;&gt;         Complex types (i.e. class instances) an XSD are passed in/out&#010;&gt;         as SDO&#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; Yes&#010;&gt;  &#010;&gt;         Q: Is there some kind of request routing?&#010;&gt;         A: Local calls are resolved during OS-loader-time. One&#010;&gt;         component calling&#010;&gt;         another is written as regular C++ code which results in&#010;&gt;         compiled code as&#010;&gt;         unresolved reference that must be satisfied during runtime by&#010;&gt;         the target&#010;&gt;         component which in turn must be loaded as shared library&#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; No, if I remember correctly (as M3 was a long time ago,)&#010;&#010;:-)&#010;&#010;&gt; wires were resolved by Composite::resolveWires, then invocation of a&#010;&gt; component involved CPPServiceWrapper::getServiceWrapper to load the&#010;&gt; component library, lookup a factory function named after the service&#010;&gt; name, create an instance of CPPServiceWrapper, and eventually&#010;&gt; executing generated code in CPPServiceWrapper::invokeService to&#010;&gt; dispatch the call to the target C++ component method.  &#010;&#010;But then the wrapper and proxy must exist - either hand-written or&#010;WSDL-generated. The CppCalculator example though has neither. I did not&#010;verify all the others, most have WSDL as it seems.&#010;Maybe as long everything happens within *one* lib ... ?&#010;&#010;Actually I was thinking that its even not a bad idea to let the OS&#010;loader (or even the linker) resolve the calls as it is probably the&#010;fastest way possible.&#010;&#010;But, OK, will look again :-)&#010;&#010;&gt; In trunk, the equivalent of invokeService is the apply function, and&#010;&gt; currently needs to be written by hand as scagen has not been&#010;&gt; maintained (but could be brought back if somebody was interested in&#010;&gt; maintaining it).&#010;&gt;  &#010;&gt;         Q: What is the purpose of composite files with pure C++&#010;&gt;         modules?&#010;&gt;         A: If a composite consists only of local components all calls&#010;&gt;         are&#010;&gt;         resolved by the OS loader. In that case basically the&#010;&gt;         composite&#010;&gt;         definition file mainly states which interfaces are in which&#010;&gt;         shared lib&#010;&gt;         and in which order are the libs to be loaded.&#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; See above, both M3 and trunk resolve wiring dynamically.&#010;&gt;  &#010;&gt;         Q: How are remote request handled?&#010;&gt;         A: Remote interfaces are described using WSDL, which must be&#010;&gt;         processed&#010;&gt;         using the tool scagen to generate a "ServiceWrapper" and a&#010;&gt;         "ServiceProxy" that act as client (proxy) and server (wrapper)&#010;&gt;         stubs.&#010;&gt; &#010;&gt; &#010;&gt; In M3 ServiceWrapper and ServiceProxy were generated from WSDL by&#010;&gt; scagen and were used for both local and remote invocations.&#010;&gt;   &#010;&gt;         &#010;&gt;         However, some things are still unclear:&#010;&gt;         Q: If there is nothing like request routing, how does the&#010;&gt;         "wiring" work&#010;&gt;         if the calls are actually hardcoded?&#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; See above.&#010;&gt;  &#010;&gt;         Besides of these questions a few non-technical ones:&#010;&gt;         Q: The trunk code stream looks to me like a complete re-write.&#010;&gt;         With even&#010;&gt;         the component interfaces changing and nobody complaining I&#010;&gt;         guess that&#010;&gt;         there is nobody actually really using Tuscany SCA C++?&#010;&gt; &#010;&gt; &#010;&gt; I just checked M3 again and it looks that way now when we compare&#010;&gt; trunk in 2013 and M3 from 2006/2007. The code has evolved slowly but&#010;&gt; after 6 years I'm not really surprised.&#010;&gt;  &#010;&gt;         Q: Besides of people using it, is there anybody besides you&#010;&gt;         working on&#010;&gt;         it?&#010;&gt; &#010;&gt; &#010;&gt; I'm not really sure. I've been the only one pushing changes to trunk&#010;&gt; recently. I noticed a new lightweight-sca clone branch recently but&#010;&gt; can't remember who created it. When I get tech questions here, in&#010;&gt; email or IRC, and find time, I try to answer without bothering people&#010;&gt; asking what they're doing with the code, so there may be more clone&#010;&gt; branches here or on github for example, as the code is open to anyone&#010;&gt; who wants to hack on it.&#010;&#010;&gt;         Q: To which extent are both the M3 and trunk versions&#010;&gt;         "stable"? M3&#010;&gt;         probably in the sense that nobody works on it anymore but is&#010;&gt;         it mostly&#010;&gt;         complete/usable?&#010;&gt; &#010;&gt; &#010;&gt; M3 has not changed since 2007. Trunk is moving slowly as I only spend&#010;&gt; a little spare time on it on some weekends or holidays. Complete and&#010;&gt; usable are subjective notions, as IMO an open-source project is not&#010;&gt; 'complete' as long as people are still interested in evolving it, and&#010;&gt; 'usable' depends on the use case.&#010;&gt;  &#010;&gt;         Q: What about interoperability with Tuscany Java? I suppose&#010;&gt;         both M3 and&#010;&gt;         trunk are OK as long as the binding is the same (and on the&#010;&gt;         wire it is&#010;&gt;         XML or whatever anyway). Which common binding types exist?&#010;&gt; &#010;&gt; &#010;&gt; With M3, REST. With trunk, REST and SOAP.&#010;&gt;  &#010;&gt;         &#010;&gt;         Generally I have to admit that I liked the old implementation&#010;&gt;         more,&#010;&gt;         though this maybe caused by the new language features in trunk&#010;&gt;         I'm not&#010;&gt;         familiar with yet.&#010;&gt; &#010;&gt; &#010;&gt; I've worked on C++ M3, trunk and even the Java project so I can&#010;&gt; imagine why someone would prefer one or the other. The good thing is&#010;&gt; that they're here in the open and you can do what you want with the&#010;&gt; code, use the bits you prefer, mix them, or even contribute to&#010;&gt; maintain or change them to something you like, if you're interested.&#010;&#010;True, but the real power of open-source is if the "community" jointly&#010;works on the same thing. Of course I cannot force anybody :-)&#010;Also, I quite like the idea of following a standard (if it is any good,&#010;which I cannot really tell yet).&#010;&#010;So, in theory, I could start a project, let's say "sca-oasis", based on&#010;M3 ... originally I'd be the only one working on it, maybe others join,&#010;maybe not. Would that then still be "Apache Tuscany"?&#010; &#010;Maybe I'll post something in tuscany-users like "anybody using it?" ...&#010;&#010;&gt;         &#010;&gt;         Q: With the new value/list types, if there is no relation with&#010;&gt;         XSD&#010;&gt;         anymore, can you also query information about object types,&#010;&gt;         e.g. which&#010;&gt;         properties a class shall have? This is probably not needed in&#010;&gt;         the SCA&#010;&gt;         code, but maybe in custom extensions ...&#010;&gt; &#010;&gt; &#010;&gt; There isn't anything in the runtime to allow you to query the types,&#010;&gt; but if you have an XML (or JSON) schema, and a schema library that&#010;&gt; you'd like to use with your types, there's no reason why you couldn't&#010;&gt; use that library along with SCA.&#010;&gt;  &#010;&gt;         Also, type enforcement is not necessarily a disadvantage&#010;&gt;         (admittedly&#010;&gt;         slower though)&#010;&gt; &#010;&gt; &#010;&gt; I'm not sure if you're talking about validating the data exchanged&#010;&gt; with SCA components (which could be done with a validating proxy) or&#010;&gt; about generating static code from schema type definitions, but both&#010;&gt; approaches should work nicely along M3 or trunk (for the latter you'd&#010;&gt; need a generator like scagen on top of the runtime invocation&#010;&gt; mechanism.)&#010;&#010;Maybe here I'm in the SDO world again ... :-) All the schema/type stuff&#010;is nicely integrated and I don't need to directly deal with libxml2 or&#010;so ...&#010;&#010;Many thx again!!!&#010;  tge&#010;&#010;&gt;         &#010;&gt;         Many thx again + regards,&#010;&gt;           the&#010;&gt;         &#010;&gt;         On Wed, 2013-01-02 at 23:49 -0800, Jean-Sebastien Delfino&#010;&gt;         wrote:&#010;&gt;         &gt; On Sat, Dec 29, 2012 at 6:20 PM, Jean-Sebastien Delfino&#010;&gt;         &gt; &lt;jsdelfino@apache.org&gt; wrote:&#010;&gt;         &gt;         Hi all,&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt;         I had a few more offline Q&amp;A exchanges with Thomas,&#010;&gt;         and&#010;&gt;         &gt;         thought it'd be useful to share a summary here:&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt;         Q: In the C++ trunk, is DataObject now replaced by&#010;&gt;         &gt;         tuscany::value and tuscany::list?&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt;         A: Yes&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt; BTW I just committed a number of changes I made over the&#010;&gt;         holidays,&#010;&gt;         &gt; including some improvements to tuscany::value and&#010;&gt;         tuscany::list, in&#010;&gt;         &gt; particular to work with lists, nested lists and trees of&#010;&gt;         key/value&#010;&gt;         &gt; pairs (aka associations) as well as some minor improvements&#010;&gt;         to handle&#010;&gt;         &gt; comparisons of floating point number values.&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt; - Jean-Sebastien&#010;&gt;         &#010;&gt;         &#010;&gt;         &#010;&gt;         &#010;&gt; &#010;&#010;&#010;-- &#010; ........................................................&#010; Thomas Gentsch&#010; Römerstr. 76&#010; 70180 Stuttgart&#010;&#010; Tel : (+49) 0711 - 46915652&#010; mobil : (+49) 0173 - 6620507&#010; e-mail: tg@e-tge.de&#010; ........................................................&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201301.mbox/%3cCA+5QmYCbxPmkqHcSfW-_M4qYnsO2yV+OT82NYFpq5PKxY8SzNg@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYCbxPmkqHcSfW-_M4qYnsO2yV+OT82NYFpq5PKxY8SzNg@mail-gmail-com%3e</id>
<updated>2013-01-14T07:35:17Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Mon, Jan 7, 2013 at 1:28 PM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&#010;&gt;&#010;&gt; Hello JS,&#010;&gt;&#010;&gt;&#010;Hi Thomas, Happy New Year!&#010;&#010;&#010;&gt; now, I did some more reading etc and believe now that I mostly&#010;&gt; understand what's going on :-)&#010;&gt;&#010;&gt; The main missing pieces were these (correct? Possibly my terminology is&#010;&gt; a bit fuzzy :-):&#010;&gt; Q: When are SDOs used (in SCA M3) and when not?&#010;&gt; A: If an interface of a service uses complex types as in/out params or&#010;&gt; return value, otherwise simple types (like int, bool, string) are used.&#010;&gt; Complex types (i.e. class instances) an XSD are passed in/out as SDO&#010;&gt;&#010;&gt;&#010;Yes&#010;&#010;&#010;&gt; Q: Is there some kind of request routing?&#010;&gt; A: Local calls are resolved during OS-loader-time. One component calling&#010;&gt; another is written as regular C++ code which results in compiled code as&#010;&gt; unresolved reference that must be satisfied during runtime by the target&#010;&gt; component which in turn must be loaded as shared library&#010;&gt;&#010;&gt;&#010;No, if I remember correctly (as M3 was a long time ago,) wires were&#010;resolved by Composite::resolveWires, then invocation of a component&#010;involved CPPServiceWrapper::getServiceWrapper to load the component&#010;library, lookup a factory function named after the service name, create an&#010;instance of CPPServiceWrapper, and eventually executing generated code&#010;in CPPServiceWrapper::invokeService to dispatch the call to the target C++&#010;component method.&#010;&#010;In trunk, the equivalent of invokeService is the apply function, and&#010;currently needs to be written by hand as scagen has not been maintained&#010;(but could be brought back if somebody was interested in maintaining it).&#010;&#010;&#010;&gt; Q: What is the purpose of composite files with pure C++ modules?&#010;&gt; A: If a composite consists only of local components all calls are&#010;&gt; resolved by the OS loader. In that case basically the composite&#010;&gt; definition file mainly states which interfaces are in which shared lib&#010;&gt; and in which order are the libs to be loaded.&#010;&gt;&#010;&gt;&#010;See above, both M3 and trunk resolve wiring dynamically.&#010;&#010;&#010;&gt; Q: How are remote request handled?&#010;&gt; A: Remote interfaces are described using WSDL, which must be processed&#010;&gt; using the tool scagen to generate a "ServiceWrapper" and a&#010;&gt; "ServiceProxy" that act as client (proxy) and server (wrapper) stubs.&#010;&gt;&#010;&#010;In M3 ServiceWrapper and ServiceProxy were generated from WSDL by scagen&#010;and were used for both local and remote invocations.&#010;&#010;&#010;&gt;&#010;&gt; However, some things are still unclear:&#010;&gt; Q: If there is nothing like request routing, how does the "wiring" work&#010;&gt; if the calls are actually hardcoded?&#010;&gt;&#010;&gt;&#010;See above.&#010;&#010;&#010;&gt; Besides of these questions a few non-technical ones:&#010;&gt; Q: The trunk code stream looks to me like a complete re-write. With even&#010;&gt; the component interfaces changing and nobody complaining I guess that&#010;&gt; there is nobody actually really using Tuscany SCA C++?&#010;&gt;&#010;&#010;I just checked M3 again and it looks that way now when we compare trunk in&#010;2013 and M3 from 2006/2007. The code has evolved slowly but after 6 years&#010;I'm not really surprised.&#010;&#010;&#010;&gt; Q: Besides of people using it, is there anybody besides you working on&#010;&gt; it?&#010;&gt;&#010;&#010;I'm not really sure. I've been the only one pushing changes to trunk&#010;recently. I noticed a new lightweight-sca clone branch recently but can't&#010;remember who created it. When I get tech questions here, in email or IRC,&#010;and find time, I try to answer without bothering people asking what they're&#010;doing with the code, so there may be more clone branches here or on github&#010;for example, as the code is open to anyone who wants to hack on it.&#010;&#010;&#010;&gt; Q: To which extent are both the M3 and trunk versions "stable"? M3&#010;&gt; probably in the sense that nobody works on it anymore but is it mostly&#010;&gt; complete/usable?&#010;&gt;&#010;&#010;M3 has not changed since 2007. Trunk is moving slowly as I only spend a&#010;little spare time on it on some weekends or holidays. Complete and usable&#010;are subjective notions, as IMO an open-source project is not 'complete' as&#010;long as people are still interested in evolving it, and 'usable' depends on&#010;the use case.&#010;&#010;&#010;&gt; Q: What about interoperability with Tuscany Java? I suppose both M3 and&#010;&gt; trunk are OK as long as the binding is the same (and on the wire it is&#010;&gt; XML or whatever anyway). Which common binding types exist?&#010;&gt;&#010;&#010;With M3, REST. With trunk, REST and SOAP.&#010;&#010;&#010;&gt;&#010;&gt; Generally I have to admit that I liked the old implementation more,&#010;&gt; though this maybe caused by the new language features in trunk I'm not&#010;&gt; familiar with yet.&#010;&gt;&#010;&#010;I've worked on C++ M3, trunk and even the Java project so I can imagine why&#010;someone would prefer one or the other. The good thing is that they're here&#010;in the open and you can do what you want with the code, use the bits you&#010;prefer, mix them, or even contribute to maintain or change them to&#010;something you like, if you're interested.&#010;&#010;&#010;&gt;&#010;&gt; Q: With the new value/list types, if there is no relation with XSD&#010;&gt; anymore, can you also query information about object types, e.g. which&#010;&gt; properties a class shall have? This is probably not needed in the SCA&#010;&gt; code, but maybe in custom extensions ...&#010;&gt;&#010;&#010;There isn't anything in the runtime to allow you to query the types, but if&#010;you have an XML (or JSON) schema, and a schema library that you'd like to&#010;use with your types, there's no reason why you couldn't use that library&#010;along with SCA.&#010;&#010;&#010;&gt; Also, type enforcement is not necessarily a disadvantage (admittedly&#010;&gt; slower though)&#010;&gt;&#010;&#010;I'm not sure if you're talking about validating the data exchanged with SCA&#010;components (which could be done with a validating proxy) or about&#010;generating static code from schema type definitions, but both approaches&#010;should work nicely along M3 or trunk (for the latter you'd need a generator&#010;like scagen on top of the runtime invocation mechanism.)&#010;&#010;&#010;&gt;&#010;&gt; Many thx again + regards,&#010;&gt;   the&#010;&gt;&#010;&gt; On Wed, 2013-01-02 at 23:49 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; &gt; On Sat, Dec 29, 2012 at 6:20 PM, Jean-Sebastien Delfino&#010;&gt; &gt; &lt;jsdelfino@apache.org&gt; wrote:&#010;&gt; &gt;         Hi all,&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt;         I had a few more offline Q&amp;A exchanges with Thomas, and&#010;&gt; &gt;         thought it'd be useful to share a summary here:&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt;         Q: In the C++ trunk, is DataObject now replaced by&#010;&gt; &gt;         tuscany::value and tuscany::list?&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt;         A: Yes&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; BTW I just committed a number of changes I made over the holidays,&#010;&gt; &gt; including some improvements to tuscany::value and tuscany::list, in&#010;&gt; &gt; particular to work with lists, nested lists and trees of key/value&#010;&gt; &gt; pairs (aka associations) as well as some minor improvements to handle&#010;&gt; &gt; comparisons of floating point number values.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; - Jean-Sebastien&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201301.mbox/%3c1357594110.2492.150.camel@parsley%3e"/>
<id>urn:uuid:%3c1357594110-2492-150-camel@parsley%3e</id>
<updated>2013-01-07T21:28:30Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;Hello JS,&#010;&#010;now, I did some more reading etc and believe now that I mostly&#010;understand what's going on :-)&#010;&#010;The main missing pieces were these (correct? Possibly my terminology is&#010;a bit fuzzy :-):&#010;Q: When are SDOs used (in SCA M3) and when not?&#010;A: If an interface of a service uses complex types as in/out params or&#010;return value, otherwise simple types (like int, bool, string) are used.&#010;Complex types (i.e. class instances) an XSD are passed in/out as SDO&#010;&#010;Q: Is there some kind of request routing?&#010;A: Local calls are resolved during OS-loader-time. One component calling&#010;another is written as regular C++ code which results in compiled code as&#010;unresolved reference that must be satisfied during runtime by the target&#010;component which in turn must be loaded as shared library&#010;&#010;Q: What is the purpose of composite files with pure C++ modules?&#010;A: If a composite consists only of local components all calls are&#010;resolved by the OS loader. In that case basically the composite&#010;definition file mainly states which interfaces are in which shared lib&#010;and in which order are the libs to be loaded.&#010;&#010;Q: How are remote request handled?&#010;A: Remote interfaces are described using WSDL, which must be processed&#010;using the tool scagen to generate a "ServiceWrapper" and a&#010;"ServiceProxy" that act as client (proxy) and server (wrapper) stubs.&#010;&#010;&#010;However, some things are still unclear:&#010;Q: If there is nothing like request routing, how does the "wiring" work&#010;if the calls are actually hardcoded?&#010;&#010;Besides of these questions a few non-technical ones:&#010;Q: The trunk code stream looks to me like a complete re-write. With even&#010;the component interfaces changing and nobody complaining I guess that&#010;there is nobody actually really using Tuscany SCA C++?&#010;Q: Besides of people using it, is there anybody besides you working on&#010;it?&#010;Q: To which extent are both the M3 and trunk versions "stable"? M3&#010;probably in the sense that nobody works on it anymore but is it mostly&#010;complete/usable?&#010;Q: What about interoperability with Tuscany Java? I suppose both M3 and&#010;trunk are OK as long as the binding is the same (and on the wire it is&#010;XML or whatever anyway). Which common binding types exist?&#010;&#010;Generally I have to admit that I liked the old implementation more,&#010;though this maybe caused by the new language features in trunk I'm not&#010;familiar with yet.&#010;&#010;Q: With the new value/list types, if there is no relation with XSD&#010;anymore, can you also query information about object types, e.g. which&#010;properties a class shall have? This is probably not needed in the SCA&#010;code, but maybe in custom extensions ...&#010;Also, type enforcement is not necessarily a disadvantage (admittedly&#010;slower though)&#010;&#010;Many thx again + regards,&#010;  tge&#010;&#010;On Wed, 2013-01-02 at 23:49 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; On Sat, Dec 29, 2012 at 6:20 PM, Jean-Sebastien Delfino&#010;&gt; &lt;jsdelfino@apache.org&gt; wrote:&#010;&gt;         Hi all,&#010;&gt;         &#010;&gt;         &#010;&gt;         I had a few more offline Q&amp;A exchanges with Thomas, and&#010;&gt;         thought it'd be useful to share a summary here:&#010;&gt;         &#010;&gt;         &#010;&gt;         Q: In the C++ trunk, is DataObject now replaced by&#010;&gt;         tuscany::value and tuscany::list?&#010;&gt;         &#010;&gt;         &#010;&gt;         A: Yes&#010;&gt;         &#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; BTW I just committed a number of changes I made over the holidays,&#010;&gt; including some improvements to tuscany::value and tuscany::list, in&#010;&gt; particular to work with lists, nested lists and trees of key/value&#010;&gt; pairs (aka associations) as well as some minor improvements to handle&#010;&gt; comparisons of floating point number values.&#010;&gt; &#010;&gt; &#010;&gt; - Jean-Sebastien &#010;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201301.mbox/%3cCA+5QmYCFkerRy7HH-a=S+xwjjJSmj+yLChS4kpmJTF5oheAHKw@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYCFkerRy7HH-a=S+xwjjJSmj+yLChS4kpmJTF5oheAHKw@mail-gmail-com%3e</id>
<updated>2013-01-03T07:49:59Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Sat, Dec 29, 2012 at 6:20 PM, Jean-Sebastien Delfino &lt;&#010;jsdelfino@apache.org&gt; wrote:&#010;&#010;&gt; Hi all,&#010;&gt;&#010;&gt;&#010;&gt; I had a few more offline Q&amp;A exchanges with Thomas, and thought it'd be&#010;&gt; useful to share a summary here:&#010;&gt;&#010;&gt;&#010;&gt; Q: In the C++ trunk, is DataObject now replaced by tuscany::value&#010;&gt; and tuscany::list?&#010;&gt;&#010;&gt;&#010;&gt; A: Yes&#010;&gt;&#010;&gt;&#010;&gt;&#010;BTW I just committed a number of changes I made over the holidays,&#010;including some improvements to tuscany::value and tuscany::list, in&#010;particular to work with lists, nested lists and trees of key/value pairs&#010;(aka associations) as well as some minor improvements to handle comparisons&#010;of floating point number values.&#010;&#010;- Jean-Sebastien&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3cCA+5QmYCPE3fve+NkVgxhE7JhCj-p3GP+2iOhV4xtJfZa3bhTFg@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYCPE3fve+NkVgxhE7JhCj-p3GP+2iOhV4xtJfZa3bhTFg@mail-gmail-com%3e</id>
<updated>2012-12-30T02:20:48Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi all,&#010;&#010;&#010;I had a few more offline Q&amp;A exchanges with Thomas, and thought it'd be&#010;useful to share a summary here:&#010;&#010;&#010;Q: In the C++ trunk, is DataObject now replaced by tuscany::value&#010;and tuscany::list?&#010;&#010;&#010;A: Yes&#010;&#010;&#010;Q: Why are most files in kernel/ C++ header files?&#010;&#010;&#010;A: They’re C++ templates that you can just include, similar to what other&#010;C++ frameworks like boost do for example.&#010;&#010;&#010;&#010;Q: In M3 a C++ component implementation looked like this:&#010;&#010;virtual commonj::sdo::DataObjectPtr /*AccountReport*/&#010;getAccountReport(const string customerID) {&#010;&#010;  ...&#010;&#010;}&#010;&#010;&#010;What does a C++ component implementation look like with the code in trunk?&#010;&#010;&#010;A: With trunk, a C++ component implementation must contain this function:&#010;&#010;const value apply(const list&lt;value&gt;&amp; params) {&#010;&#010;  // implement your own dispatch code here, for example&#010;&#010;  // if first element of params is “getAccountReport” then&#010;&#010;  //   call your own getAccountReport function, which could look like&#010;&#010;  //   const value getAccountReport(const value customerID)&#010;&#010;}&#010;&#010;&#010;The apply() function is a component invocation dispatch mechanism. It&#010;shouldn’t be too difficult to provide a tool to generate the body of&#010;apply() from a WSDL+XSD to lift the programming model to a level of&#010;abstraction close to M3.&#010;&#010;&#010;I was initially planning to do that but then found that writing apply() by&#010;hand was good enough for me. I'm not sure about the value of requiring an&#010;app developer to write a WSDL+XSD, use a tool to generate code, link with&#010;that code, understand the additional moving parts and data conversion etc,&#010;just to avoid having to write that apply() function... but if somebody&#010;wants to do it, I can try to help integrate that support.&#010;&#010;&#010;Q: Is the runtime implemented as Apache HTTPD modules?&#010;&#010;&#010;A: Yes, the runtime plugs into Apache HTTPD as a set of HTTPD modules but&#010;it should be possible to integrate with other servers too.&#010;&#010;&#010;Q: Are C++ component implementations packaged as dynamic libraries?&#010;&#010;&#010;A: Yes, the runtime also supports other component implementation&#010;technologies and languages incl. Python, OpenCL C99 (for GPU programming),&#010;Java (experimental) and a subset of MIT Scheme (useful for self-contained&#010;testing).&#010;&#010;&#010;Q: Which communication protocols are supported?&#010;&#010;&#010;A: REST Web services using XML, ATOM, RSS or JSON over HTTP, and JSON-RPC.&#010;Communication with SOAP services is supported using a configurable SCA&#010;component wrapping Axis2/C in components/webservice/.&#010;&#010;&#010;&#010;Q: Which versions of SCA are implemented?&#010;&#010;&#010;M3 implements a subset of the OSOA (pre-OASIS) SCA assembly spec and a&#010;subset of the corresponding SCA C++ component implementation spec.&#010;&#010;&#010;Trunk implements a subset of the OASIS SCA assembly spec. The C++ component&#010;implementation model is different from the spec, but like I said above it&#010;shouldn't be too difficult to generate C++ implementations as per the spec&#010;on top of the current dispatch mechanism.&#010;&#010;&#010;&#010;Hope that helps.&#010;&#010;&#010;- Jean-Sebastien&#010;&#010;On Wed, Dec 19, 2012 at 1:00 PM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&#010;&gt;&#010;&gt; Hi JS,&#010;&gt;&#010;&gt; I'm still looking through the docs, code, etc. I can find.&#010;&gt;&#010;&gt; One thing I discovered: it does not look to me as if SDO support has&#010;&gt; been removed from Java SCA, at least I found some related activity in&#010;&gt; 2011:&#010;&gt;&#010;&gt; http://www.mail-archive.com/user@tuscany.apache.org/msg03435.html&#010;&gt;&#010;&gt; http://www.mail-archive.com/dev@tuscany.apache.org/msg17116.html&#010;&gt;&#010;&gt; (the latter is quite funny because I actually submitted this against C++&#010;&gt; but seems as if the same problem occurred with Java? :-)&#010;&gt;&#010;&gt; More later ... :-)&#010;&gt; Rgds,&#010;&gt;   tge&#010;&gt;&#010;&gt; On Thu, 2012-12-06 at 01:04 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; &gt; On Fri, Nov 30, 2012 at 9:43 AM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&gt; &gt;&#010;&gt; &gt;         OK, many thx for this info!&#010;&gt; &gt;&#010;&gt; &gt;         Regarding SDO - yes, I noticed that there was not a lot of&#010;&gt; &gt;         activity&#010;&gt; &gt;         during the last years.&#010;&gt; &gt;         Hello out there: Is there anybody else still using this?&#010;&gt; &gt;&#010;&gt; &gt;         Rgd SDO as SCA-internal data-flow mechanism - what is being&#010;&gt; &gt;         used now?&#010;&gt; &gt;         I know about libxml2 (actually its being used in SCA/SDO :-),&#010;&gt; &gt;         nothing&#010;&gt; &gt;         yet about JSON, will read.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Hi Thomas,&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Here's a short overview of what's used now.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Data read/write functions are provided for XML (using Libxml2 [1]),&#010;&gt; &gt; JSON (using Mozilla SpiderMonkey but I've started to migrate to&#010;&gt; &gt; Jansson [2]), and Lisp/Scheme S-expressions [3].&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Here's how to read XML in a C++ component:&#010;&gt; &gt; &lt;customer&#010;&gt; &gt; age="21"&gt;&lt;name&gt;johndoe&lt;/name&gt;&lt;phone&gt;(650)123-4567&lt;/phone&gt;&lt;phone&gt;&#010;&gt; (415)765-4321&lt;/phone&gt;&lt;/customer&gt;&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; // A list of strings containing the above XML doc, obtained from an&#010;&gt; &gt; input stream for example&#010;&gt; &gt; const list&lt;string&gt; ls = ...;&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; // Read the XML doc (the failable&lt;...&gt; result type helps encapsulate&#010;&gt; &gt; error handling)&#010;&gt; &gt; // See below for a description of the 'value' data type&#010;&gt; &gt; const failable&lt;value&gt; fe = xml::readElements(ls);&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; // Assuming no failure, get and print the result&#010;&gt; &gt; const value e = content(fe);&#010;&gt; &gt; cout &lt;&lt; e &lt;&lt; endl;&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; The result is a list like follows (using the S-expression syntax here&#010;&gt; &gt; for conciseness: element, customer, attribute, age are symbols, 21 is&#010;&gt; &gt; a number, "johndoe" is a string, (x y) is a list of x, y):&#010;&gt; &gt; ((element customer (attribute age "21") (element name "johndoe")&#010;&gt; &gt; (element phone "(650)123-4567") (element phone "(415)765-4321")))&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; The runtime is schema-less. You do not need an XML schema to&#010;&gt; &gt; read/write any XML.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; If you don't care about the XML element vs attribute representation&#010;&gt; &gt; you can strip it like this:&#010;&gt; &gt; const value v = elementsToValues(e);&#010;&gt; &gt; to get this:&#010;&gt; &gt; ((customer (@age "21") (name "johndoe") (phone ("(650)123-4567"&#010;&gt; &gt; "(415)765-4321"))))&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Note the @age attribute name, which follows the Badgerfish [4]&#010;&gt; &gt; convention often used to name XML attributes in JSON documents for&#010;&gt; &gt; example.&#010;&gt; &gt;&#010;&gt; &gt; The same data can be constructed and represented in the various&#010;&gt; &gt; programming languages supported by the runtime, as follows:&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; C++:&#010;&gt; &gt; list&lt;value&gt;(list&lt;value&gt;("customer", list&lt;value&gt;("@age", 21),&#010;&gt; &gt; list&lt;value&gt;("name", string("johndoe")), list&lt;value&gt;("phone",&#010;&gt; &gt; list&lt;value&gt;("(650)123-4567", "(415)765-4321"))));&#010;&gt; &gt; using the following C++ types:&#010;&gt; &gt; - string, similar to std::string but lighter and faster for small&#010;&gt; &gt; strings, with builtin conversions from/to native char*;&#010;&gt; &gt; - list&lt;T&gt;, a lightweight list/lazy-list type with useful&#010;&gt; &gt; Lisp/Scheme-like [5] functions incl. cons, car, cdr, map, filter,&#010;&gt; &gt; reduce, assoc, etc;&#010;&gt; &gt; - lambda&lt;R(P...)&gt;, a function type similar to std::function but&#010;&gt; &gt; lighter and faster;&#010;&gt; &gt; - value, a dynamic value type (type can be number, boolean, symbol,&#010;&gt; &gt; string, list&lt;value&gt;, lambda&lt;value(list&lt;value&gt;)&gt;, value*) with&#010;builtin&#010;&gt; &gt; conversions from/to native double, bool, char*, C++ lambdas and&#010;&gt; &gt; pointers.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Python:&#010;&gt; &gt; ((customer, ("'@age" 21), ("'name", "johndoe") (phone,&#010;&gt; &gt; ("(650)123-4567" "(415)765-4321"))),)&#010;&gt; &gt; using Python tuples [6] and native Python data types for strings,&#010;&gt; &gt; numbers and booleans.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; JavaScript / JSON:&#010;&gt; &gt;&#010;&gt; {"customer":{"@age":"21","name":"johndoe","phone":["(650)123-4567","(415)765-4321"]}}&#010;&gt; &gt; using JSON arrays and native Javascript types.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Scheme:&#010;&gt; &gt; ((customer (@age "21") (name "johndoe") (phone ("(650)123-4567"&#010;&gt; &gt; "(415)765-4321"))))&#010;&gt; &gt; just an S-expression.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Java (there's experimental support for running Java components on the&#010;&gt; &gt; C++ runtime):&#010;&gt; &gt; list(list("'customer", list("'@age", 21), list("'name", "johndoe"),&#010;&gt; &gt; list("'phone", list("(650)123-4567", "(415)765-4321"))));&#010;&gt; &gt; using java.lang.Iterable [7] for lists and native Java data types for&#010;&gt; &gt; strings, numbers and booleans (the list(...) function is a static&#010;&gt; &gt; 'builder' function returning a java.lang.Iterable&lt;?&gt;.)&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; To summarize: fast and schemaless support for XML, JSON and&#010;&gt; &gt; S-expressions, with lightweight representation using lists and simple&#010;&gt; &gt; types in the supported programming languages.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; Hope that helps.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; [1] http://www.xmlsoft.org&#010;&gt; &gt; [2] http://www.digip.org/jansson/&#010;&gt; &gt; [3] http://en.wikipedia.org/wiki/S-expression&#010;&gt; &gt; [4] http://badgerfish.ning.com&#010;&gt; &gt; [5]&#010;&gt; http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Lists.html#Lists&#010;&gt; &gt; [6]&#010;&gt; http://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences&#010;&gt; &gt; [7] http://docs.oracle.com/javase/6/docs/api/java/lang/Iterable.html&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; - Jean-Sebastien&#010;&gt;&#010;&gt;&#010;&gt;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Generated WSDL lose object info when return type is List&lt;HashMap&gt;&gt; or Map&lt;ArrayList&gt;&gt;</title>
<author><name>Scott Kurz &lt;skurz3@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3cCAJFLTdy1cjSabJ-vg6Ah6tJOJqFYF9WkQb9J32dUiyjB=ZCv4w@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAJFLTdy1cjSabJ-vg6Ah6tJOJqFYF9WkQb9J32dUiyjB=ZCv4w@mail-gmail-com%3e</id>
<updated>2012-12-30T00:08:17Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Nguyen,&#010;&#010;Tuscany is using JAXB as the databinding to map from Java to WSDL/XSD,&#010;and you've got a couple dimensions of complexity here...&#010;&#010;For one you're trying to use a generic 'java.lang.Object' type, and&#010;you're also using Map(s) which don't have an obvious mapping to XSD.&#010;&#010;I'd suggest researching the topic of JAXB's @XmlAdapter, which allows&#010;you to add your own custom marshalling/unmarshalling logic to some&#010;code like the Tuscany runtime's binding.ws which uses JAXB as a&#010;databinding.&#010;&#010;Just searching I hit on these articles, and there is the Javadoc as well:&#010;&#010;http://blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html&#010;http://javaevangelist.blogspot.com/2011/12/java-tip-of-day-generic-jaxb-map-v.html&#010;&#010;The @XmlAdapter will definitely help you deal with the Map(s)... the&#010;way you might deal with java.lang.Object as the parameter type might&#010;depend on how much you know about the types that will be used (e.g. is&#010;it a few well known types but without a common superclass or are you&#010;trying to accept an indefinite set of types?).&#010;&#010;In taking this route, you might find it helpful to try to do some&#010;"meet in the middle" thinking... e.g. try to figure out what the XML&#010;would look like, define a schema, and then use @XmlAdapter to adapt&#010;this to your Java interface.&#010;&#010;Hope that helps,&#010;Scott&#010;&#010;&#010;&#010;&#010;On Thu, Dec 6, 2012 at 5:12 AM, makiet &lt;Binhnt22@viettel.com.vn&gt; wrote:&#010;&gt; Hi,&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt; I have an interface with some functions return List&lt;HashMap&lt;String, Object&gt;&gt;&#010;&gt; and Map&lt;ArrayList&lt;Object&gt;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt; When I make the interface exposed as a service with binding.ws, the&#010;&gt; generated wsdl contains a complex type HashMap or ArrayList without content&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt; Ie: &lt;xs:complexType name="hashMap"&gt;&#010;&gt;&#010;&gt;                 &lt;xs:complexContent&gt;&#010;&gt;&#010;&gt;                                 &lt;xs:extension base="tns:abstractMap"&gt;&#010;&gt;&#010;&gt;                                                 &lt;xs:sequence&gt;&#010;&gt;&#010;&gt;                                                 &lt;/xs:sequence&gt;&#010;&gt;&#010;&gt;                                 &lt;/xs:extension&gt;&#010;&gt;&#010;&gt;                 &lt;/xs:complexContent&gt;&#010;&gt;&#010;&gt; &lt;/xs:complexType&gt;&#010;&gt;&#010;&gt; &lt;xs:complexType abstract="true" name="abstractMap"&gt;&#010;&gt;&#010;&gt; &lt;xs:sequence&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt; Therefore, I have no way to get the expected result. May anyone help me out?&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt; Best regards,&#010;&gt;&#010;&gt; ------------------------------------------------------------------&#010;&gt;&#010;&gt; Binh, Nguyen Thanh&#010;&gt;&#010;&gt; Software Architecture&#010;&gt;&#010;&gt; Product Department - BU BSS, Software Center, Viettel Group&#010;&gt;&#010;&gt;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3c1355950801.2478.897.camel@parsley%3e"/>
<id>urn:uuid:%3c1355950801-2478-897-camel@parsley%3e</id>
<updated>2012-12-19T21:00:01Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;Hi JS,&#010;&#010;I'm still looking through the docs, code, etc. I can find.&#010;&#010;One thing I discovered: it does not look to me as if SDO support has&#010;been removed from Java SCA, at least I found some related activity in&#010;2011:&#010;&#010;http://www.mail-archive.com/user@tuscany.apache.org/msg03435.html&#010;&#010;http://www.mail-archive.com/dev@tuscany.apache.org/msg17116.html&#010;&#010;(the latter is quite funny because I actually submitted this against C++&#010;but seems as if the same problem occurred with Java? :-)&#010;&#010;More later ... :-)&#010;Rgds,&#010;  tge&#010;&#010;On Thu, 2012-12-06 at 01:04 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; On Fri, Nov 30, 2012 at 9:43 AM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&gt;         &#010;&gt;         OK, many thx for this info!&#010;&gt;         &#010;&gt;         Regarding SDO - yes, I noticed that there was not a lot of&#010;&gt;         activity&#010;&gt;         during the last years.&#010;&gt;         Hello out there: Is there anybody else still using this?&#010;&gt;         &#010;&gt;         Rgd SDO as SCA-internal data-flow mechanism - what is being&#010;&gt;         used now?&#010;&gt;         I know about libxml2 (actually its being used in SCA/SDO :-),&#010;&gt;         nothing&#010;&gt;         yet about JSON, will read.&#010;&gt; &#010;&gt; &#010;&gt; Hi Thomas,&#010;&gt; &#010;&gt; &#010;&gt; Here's a short overview of what's used now.&#010;&gt; &#010;&gt; &#010;&gt; Data read/write functions are provided for XML (using Libxml2 [1]),&#010;&gt; JSON (using Mozilla SpiderMonkey but I've started to migrate to&#010;&gt; Jansson [2]), and Lisp/Scheme S-expressions [3].&#010;&gt; &#010;&gt; &#010;&gt; Here's how to read XML in a C++ component:&#010;&gt; &lt;customer&#010;&gt; age="21"&gt;&lt;name&gt;johndoe&lt;/name&gt;&lt;phone&gt;(650)123-4567&lt;/phone&gt;&lt;phone&gt;(415)765-4321&lt;/phone&gt;&lt;/customer&gt;&#010;&gt; &#010;&gt; &#010;&gt; // A list of strings containing the above XML doc, obtained from an&#010;&gt; input stream for example&#010;&gt; const list&lt;string&gt; ls = ...;&#010;&gt; &#010;&gt; &#010;&gt; // Read the XML doc (the failable&lt;...&gt; result type helps encapsulate&#010;&gt; error handling)&#010;&gt; // See below for a description of the 'value' data type&#010;&gt; const failable&lt;value&gt; fe = xml::readElements(ls);&#010;&gt; &#010;&gt; &#010;&gt; // Assuming no failure, get and print the result&#010;&gt; const value e = content(fe);&#010;&gt; cout &lt;&lt; e &lt;&lt; endl;&#010;&gt; &#010;&gt; &#010;&gt; The result is a list like follows (using the S-expression syntax here&#010;&gt; for conciseness: element, customer, attribute, age are symbols, 21 is&#010;&gt; a number, "johndoe" is a string, (x y) is a list of x, y):&#010;&gt; ((element customer (attribute age "21") (element name "johndoe")&#010;&gt; (element phone "(650)123-4567") (element phone "(415)765-4321")))&#010;&gt; &#010;&gt; &#010;&gt; The runtime is schema-less. You do not need an XML schema to&#010;&gt; read/write any XML.&#010;&gt; &#010;&gt; &#010;&gt; If you don't care about the XML element vs attribute representation&#010;&gt; you can strip it like this:&#010;&gt; const value v = elementsToValues(e);&#010;&gt; to get this:&#010;&gt; ((customer (@age "21") (name "johndoe") (phone ("(650)123-4567"&#010;&gt; "(415)765-4321"))))&#010;&gt; &#010;&gt; &#010;&gt; Note the @age attribute name, which follows the Badgerfish [4]&#010;&gt; convention often used to name XML attributes in JSON documents for&#010;&gt; example.&#010;&gt;  &#010;&gt; The same data can be constructed and represented in the various&#010;&gt; programming languages supported by the runtime, as follows:&#010;&gt; &#010;&gt; &#010;&gt; C++:&#010;&gt; list&lt;value&gt;(list&lt;value&gt;("customer", list&lt;value&gt;("@age", 21),&#010;&gt; list&lt;value&gt;("name", string("johndoe")), list&lt;value&gt;("phone",&#010;&gt; list&lt;value&gt;("(650)123-4567", "(415)765-4321"))));&#010;&gt; using the following C++ types:&#010;&gt; - string, similar to std::string but lighter and faster for small&#010;&gt; strings, with builtin conversions from/to native char*;&#010;&gt; - list&lt;T&gt;, a lightweight list/lazy-list type with useful&#010;&gt; Lisp/Scheme-like [5] functions incl. cons, car, cdr, map, filter,&#010;&gt; reduce, assoc, etc;&#010;&gt; - lambda&lt;R(P...)&gt;, a function type similar to std::function but&#010;&gt; lighter and faster;&#010;&gt; - value, a dynamic value type (type can be number, boolean, symbol,&#010;&gt; string, list&lt;value&gt;, lambda&lt;value(list&lt;value&gt;)&gt;, value*) with builtin&#010;&gt; conversions from/to native double, bool, char*, C++ lambdas and&#010;&gt; pointers.&#010;&gt; &#010;&gt; &#010;&gt; Python:&#010;&gt; ((customer, ("'@age" 21), ("'name", "johndoe") (phone,&#010;&gt; ("(650)123-4567" "(415)765-4321"))),)&#010;&gt; using Python tuples [6] and native Python data types for strings,&#010;&gt; numbers and booleans.&#010;&gt; &#010;&gt; &#010;&gt; JavaScript / JSON:&#010;&gt; {"customer":{"@age":"21","name":"johndoe","phone":["(650)123-4567","(415)765-4321"]}}&#010;&gt; using JSON arrays and native Javascript types.&#010;&gt; &#010;&gt; &#010;&gt; Scheme:&#010;&gt; ((customer (@age "21") (name "johndoe") (phone ("(650)123-4567"&#010;&gt; "(415)765-4321"))))&#010;&gt; just an S-expression.&#010;&gt; &#010;&gt; &#010;&gt; Java (there's experimental support for running Java components on the&#010;&gt; C++ runtime):&#010;&gt; list(list("'customer", list("'@age", 21), list("'name", "johndoe"),&#010;&gt; list("'phone", list("(650)123-4567", "(415)765-4321"))));&#010;&gt; using java.lang.Iterable [7] for lists and native Java data types for&#010;&gt; strings, numbers and booleans (the list(...) function is a static&#010;&gt; 'builder' function returning a java.lang.Iterable&lt;?&gt;.)&#010;&gt; &#010;&gt; &#010;&gt; To summarize: fast and schemaless support for XML, JSON and&#010;&gt; S-expressions, with lightweight representation using lists and simple&#010;&gt; types in the supported programming languages.&#010;&gt; &#010;&gt; &#010;&gt; Hope that helps.&#010;&gt; &#010;&gt; &#010;&gt; [1] http://www.xmlsoft.org&#010;&gt; [2] http://www.digip.org/jansson/&#010;&gt; [3] http://en.wikipedia.org/wiki/S-expression&#010;&gt; [4] http://badgerfish.ning.com&#010;&gt; [5] http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Lists.html#Lists&#010;&gt; [6] http://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences&#010;&gt; [7] http://docs.oracle.com/javase/6/docs/api/java/lang/Iterable.html&#010;&gt; &#010;&gt; &#010;&gt; - Jean-Sebastien&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>AUTO: Rahul Gupta is out of office  (returning 12/20/2012)</title>
<author><name>Rahul Gupta2 &lt;rahul.gupta@in.ibm.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3cOF83722E8C.B2E37458-ON65257ACD.005B0ACF-65257ACD.005B0AD0@in.ibm.com%3e"/>
<id>urn:uuid:%3cOF83722E8C-B2E37458-ON65257ACD-005B0ACF-65257ACD-005B0AD0@in-ibm-com%3e</id>
<updated>2012-12-07T16:34:25Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;I am out of the office until 12/20/2012.&#010;&#010;I will be out of office starting Wednesday (12/05) through Thursday&#010;(12/20), returning to work on Friday (12/21).  During this absence, I may&#010;not have network connectivity. For those items that cannot wait until my&#010;return, please contact the following :&#010;&#010;Henry Aguillon (  Henry Aguillon/Dallas/IBM )&#010;Regina Manuel ( Regina Manuel/Greensboro/IBM )&#010;&#010;&#010;Note: This is an automated response to your message  "Bringup build in mac&#010;os java7 environment, was Fwd: svn commit: r1418376 -&#010;in /tuscany/sca-java-2.x/trunk: modules/core-spi/pom.xml pom.xml" sent on&#010;07/12/2012 21:50:16.&#010;&#010;This is the only notification you will receive while this person is away.&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bringup build in mac os java7 environment, was Fwd: svn commit: r1418376 - in /tuscany/sca-java-2.x/trunk: modules/core-spi/pom.xml pom.xml</title>
<author><name>Luciano Resende &lt;lresende@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3cCAGU5spfq60k6ip8ycONseieFtraJCaB-UGN_pfjaNEebX6xOzQ@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAGU5spfq60k6ip8ycONseieFtraJCaB-UGN_pfjaNEebX6xOzQ@mail-gmail-com%3e</id>
<updated>2012-12-07T16:20:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Just finished making some minor changes on the poms (mainly around&#010;tools.jar and ant tasks related dependencies) to bring up the build in mac&#010;os environment with Oracle JDK 7 (1.7.0_07). I also tried it in mac os and&#010;unix with java 6, and things seems to be working fine, but don't hesitate&#010;to reach out if you find issues.&#010;&#010;Thanks&#010;&#010;---------- Forwarded message ----------&#010;From: &lt;lresende@apache.org&gt;&#010;Date: Fri, Dec 7, 2012 at 8:14 AM&#010;Subject: svn commit: r1418376 - in /tuscany/sca-java-2.x/trunk:&#010;modules/core-spi/pom.xml pom.xml&#010;To: commits@tuscany.apache.org&#010;&#010;&#010;Author: lresende&#010;Date: Fri Dec  7 16:14:49 2012&#010;New Revision: 1418376&#010;&#010;URL: http://svn.apache.org/viewvc?rev=1418376&amp;view=rev&#010;Log:&#010;Bringup build in mac os java7 environment&#010;&#010;Modified:&#010;    tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml&#010;    tuscany/sca-java-2.x/trunk/pom.xml&#010;&#010;Modified: tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml&#010;URL:&#010;http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml?rev=1418376&amp;r1=1418375&amp;r2=1418376&amp;view=diff&#010;==============================================================================&#010;--- tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml (original)&#010;+++ tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml Fri Dec  7 16:14:49&#010;2012&#010;@@ -80,7 +80,6 @@&#010;       &lt;plugin&gt;&#010;          &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&#010;          &lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;&#010;-        &lt;version&gt;1.6&lt;/version&gt;&#010;          &lt;executions&gt;&#010;              &lt;execution&gt;&#010;                 &lt;id&gt;process-resources&lt;/id&gt;&#010;&#010;Modified: tuscany/sca-java-2.x/trunk/pom.xml&#010;URL:&#010;http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/pom.xml?rev=1418376&amp;r1=1418375&amp;r2=1418376&amp;view=diff&#010;==============================================================================&#010;--- tuscany/sca-java-2.x/trunk/pom.xml (original)&#010;+++ tuscany/sca-java-2.x/trunk/pom.xml Fri Dec  7 16:14:49 2012&#010;@@ -145,6 +145,7 @@&#010;                 &lt;os&gt;&#010;                     &lt;family&gt;mac&lt;/family&gt;&#010;                 &lt;/os&gt;&#010;+                &lt;jdk&gt;[1.3,1.6)&lt;/jdk&gt;&#010;             &lt;/activation&gt;&#010;             &lt;properties&gt;&#010;                 &lt;tools.jar&gt;${java.home}/../Classes/classes.jar&lt;/tools.jar&gt;&#010;@@ -826,7 +827,7 @@ org.apache.tuscany.sca.assembly:org.apac&#010;                 &lt;plugin&gt;&#010;                     &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&#010;                     &lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;&#010;-                    &lt;version&gt;1.3&lt;/version&gt;&#010;+                    &lt;version&gt;1.7&lt;/version&gt;&#010;&#010;                     &lt;dependencies&gt;&#010;                         &lt;dependency&gt;&#010;@@ -835,6 +836,7 @@ org.apache.tuscany.sca.assembly:org.apac&#010;                             &lt;version&gt;1.7.1&lt;/version&gt;&#010;                         &lt;/dependency&gt;&#010;                         &lt;!-- this JDk dependency is a workaround for Maven&#010;bug - http://jira.codehaus.org/browse/MNG-1323  --&gt;&#010;+                        &lt;!--&#010;                         &lt;dependency&gt;&#010;                             &lt;groupId&gt;sun.jdk&lt;/groupId&gt;&#010;                             &lt;artifactId&gt;tools&lt;/artifactId&gt;&#010;@@ -843,6 +845,7 @@ org.apache.tuscany.sca.assembly:org.apac&#010;                             &lt;systemPath&gt;${tools.jar}&lt;/systemPath&gt;&#010;                             &lt;optional&gt;true&lt;/optional&gt;&#010;                         &lt;/dependency&gt;&#010;+                        --&gt;&#010;                     &lt;/dependencies&gt;&#010;                 &lt;/plugin&gt;&#010;&#010;&#010;&#010;&#010;&#010;&#010;-- &#010;Luciano Resende&#010;http://people.apache.org/~lresende&#010;http://twitter.com/lresende1975&#010;http://lresende.blogspot.com/&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Generated WSDL lose object info when return type is List&lt;HashMap&gt;&gt; or Map&lt;ArrayList&gt;&gt;</title>
<author><name>makiet &lt;Binhnt22@viettel.com.vn&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3c003f01cdd39a$2d9d99e0$88d8cda0$@viettel.com.vn%3e"/>
<id>urn:uuid:%3c003f01cdd39a$2d9d99e0$88d8cda0$@viettel-com-vn%3e</id>
<updated>2012-12-06T10:12:20Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi,&#010;&#010; &#010;&#010;I have an interface with some functions return List&lt;HashMap&lt;String, Object&gt;&gt;&#010;and Map&lt;ArrayList&lt;Object&gt;&gt;&#010;&#010; &#010;&#010;When I make the interface exposed as a service with binding.ws, the&#010;generated wsdl contains a complex type HashMap or ArrayList without content&#010;&#010; &#010;&#010;Ie: &lt;xs:complexType name="hashMap"&gt;&#010;&#010;                &lt;xs:complexContent&gt;&#010;&#010;                                &lt;xs:extension base="tns:abstractMap"&gt;&#010;&#010;                                                &lt;xs:sequence&gt;&#010;&#010;                                                &lt;/xs:sequence&gt;&#010;&#010;                                &lt;/xs:extension&gt;&#010;&#010;                &lt;/xs:complexContent&gt;&#010;&#010;&lt;/xs:complexType&gt;&#010;&#010;&lt;xs:complexType abstract="true" name="abstractMap"&gt;&#010;&#010;&lt;xs:sequence&gt;&#010;&#010; &#010;&#010;Therefore, I have no way to get the expected result. May anyone help me out?&#010;&#010;&#010; &#010;&#010;Best regards,&#010;&#010;------------------------------------------------------------------&#010;&#010;Binh, Nguyen Thanh&#010;&#010;Software Architecture&#010;&#010;Product Department - BU BSS, Software Center, Viettel Group&#010;&#010; &#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3cCA+5QmYCDOHMhSeMUzP_bMCrHAaJki8pydz5Zy_cRozffnkmE0w@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYCDOHMhSeMUzP_bMCrHAaJki8pydz5Zy_cRozffnkmE0w@mail-gmail-com%3e</id>
<updated>2012-12-06T09:04:09Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Fri, Nov 30, 2012 at 9:43 AM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&#010;&gt;&#010;&gt; OK, many thx for this info!&#010;&gt;&#010;&gt; Regarding SDO - yes, I noticed that there was not a lot of activity&#010;&gt; during the last years.&#010;&gt; Hello out there: Is there anybody else still using this?&#010;&gt;&#010;&gt; Rgd SDO as SCA-internal data-flow mechanism - what is being used now?&#010;&gt; I know about libxml2 (actually its being used in SCA/SDO :-), nothing&#010;&gt; yet about JSON, will read.&#010;&gt;&#010;&#010;Hi Thomas,&#010;&#010;Here's a short overview of what's used now.&#010;&#010;Data read/write functions are provided for XML (using Libxml2 [1]), JSON&#010;(using Mozilla SpiderMonkey but I've started to migrate to Jansson [2]),&#010;and Lisp/Scheme S-expressions [3].&#010;&#010;Here's how to read XML in a C++ component:&#010;&lt;customer&#010;age="21"&gt;&lt;name&gt;johndoe&lt;/name&gt;&lt;phone&gt;(650)123-4567&lt;/phone&gt;&lt;phone&gt;(415)765-4321&lt;/phone&gt;&lt;/customer&gt;&#010;&#010;// A list of strings containing the above XML doc, obtained from an input&#010;stream for example&#010;const list&lt;string&gt; ls = ...;&#010;&#010;// Read the XML doc (the failable&lt;...&gt; result type helps encapsulate error&#010;handling)&#010;// See below for a description of the 'value' data type&#010;const failable&lt;value&gt; fe = xml::readElements(ls);&#010;&#010;// Assuming no failure, get and print the result&#010;const value e = content(fe);&#010;cout &lt;&lt; e &lt;&lt; endl;&#010;&#010;The result is a list like follows (using the S-expression syntax here for&#010;conciseness: element, customer, attribute, age are symbols, 21 is a number,&#010;"johndoe" is a string, (x y) is a list of x, y):&#010;((element customer (attribute age "21") (element name "johndoe") (element&#010;phone "(650)123-4567") (element phone "(415)765-4321")))&#010;&#010;The runtime is schema-less. You do not need an XML schema to read/write any&#010;XML.&#010;&#010;If you don't care about the XML element vs attribute representation you can&#010;strip it like this:&#010;const value v = elementsToValues(e);&#010;to get this:&#010;((customer (@age "21") (name "johndoe") (phone ("(650)123-4567"&#010;"(415)765-4321"))))&#010;&#010;Note the @age attribute name, which follows the Badgerfish [4] convention&#010;often used to name XML attributes in JSON documents for example.&#010;&#010;The same data can be constructed and represented in the various programming&#010;languages supported by the runtime, as follows:&#010;&#010;C++:&#010;list&lt;value&gt;(list&lt;value&gt;("customer", list&lt;value&gt;("@age", 21),&#010;list&lt;value&gt;("name", string("johndoe")), list&lt;value&gt;("phone",&#010;list&lt;value&gt;("(650)123-4567", "(415)765-4321"))));&#010;using the following C++ types:&#010;- string, similar to std::string but lighter and faster for small strings,&#010;with builtin conversions from/to native char*;&#010;- list&lt;T&gt;, a lightweight list/lazy-list type with useful Lisp/Scheme-like&#010;[5] functions incl. cons, car, cdr, map, filter, reduce, assoc, etc;&#010;- lambda&lt;R(P...)&gt;, a function type similar to std::function but lighter and&#010;faster;&#010;- value, a dynamic value type (type can be number, boolean, symbol, string,&#010;list&lt;value&gt;, lambda&lt;value(list&lt;value&gt;)&gt;, value*) with builtin conversions&#010;from/to native double, bool, char*, C++ lambdas and pointers.&#010;&#010;Python:&#010;((customer, ("'@age" 21), ("'name", "johndoe") (phone, ("(650)123-4567"&#010;"(415)765-4321"))),)&#010;using Python tuples [6] and native Python data types for strings, numbers&#010;and booleans.&#010;&#010;JavaScript / JSON:&#010;{"customer":{"@age":"21","name":"johndoe","phone":["(650)123-4567","(415)765-4321"]}}&#010;using JSON arrays and native Javascript types.&#010;&#010;Scheme:&#010;((customer (@age "21") (name "johndoe") (phone ("(650)123-4567"&#010;"(415)765-4321"))))&#010;just an S-expression.&#010;&#010;Java (there's experimental support for running Java components on the C++&#010;runtime):&#010;list(list("'customer", list("'@age", 21), list("'name", "johndoe"),&#010;list("'phone", list("(650)123-4567", "(415)765-4321"))));&#010;using java.lang.Iterable [7] for lists and native Java data types for&#010;strings, numbers and booleans (the list(...) function is a static 'builder'&#010;function returning a java.lang.Iterable&lt;?&gt;.)&#010;&#010;To summarize: fast and schemaless support for XML, JSON and S-expressions,&#010;with lightweight representation using lists and simple types in the&#010;supported programming languages.&#010;&#010;Hope that helps.&#010;&#010;[1] http://www.xmlsoft.org&#010;[2] http://www.digip.org/jansson/&#010;[3] http://en.wikipedia.org/wiki/S-expression&#010;[4] http://badgerfish.ning.com&#010;[5]&#010;http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Lists.html#Lists&#010;[6]&#010;http://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences&#010;[7] http://docs.oracle.com/javase/6/docs/api/java/lang/Iterable.html&#010;&#010;- Jean-Sebastien&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201212.mbox/%3c1354297394.2683.969.camel@parsley%3e"/>
<id>urn:uuid:%3c1354297394-2683-969-camel@parsley%3e</id>
<updated>2012-11-30T17:43:14Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;OK, many thx for this info!&#010;&#010;Regarding SDO - yes, I noticed that there was not a lot of activity&#010;during the last years.&#010;Hello out there: Is there anybody else still using this?&#010;&#010;Rgd SDO as SCA-internal data-flow mechanism - what is being used now?&#010;I know about libxml2 (actually its being used in SCA/SDO :-), nothing&#010;yet about JSON, will read.&#010;&#010;Rgd updating SDO: If nobody else cares, then I'm happy with it for now,&#010;so lets let it rest in peace ... (except that I'll have to deal with it&#010;all by myself if I find any problems :-)&#010;&#010;Rgds + nice WE,&#010;  tge&#010;&#010;On Mon, 2012-11-26 at 23:13 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; On Sun, Nov 25, 2012 at 1:31 PM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&gt;         On Sun, 2012-11-25 at 10:38 -0800, Jean-Sebastien Delfino&#010;&gt;         wrote:&#010;&gt;         &gt; On Fri, Nov 23, 2012 at 9:02 AM, Thomas Gentsch&#010;&gt;         &lt;tg@e-tge.de&gt; wrote:&#010;&gt;         ... &#010;&gt;         &gt; Great! Papers from the C++11 standard work groups are&#010;&gt;         available on&#010;&gt;         &gt; open-std.org there [1]. The final ISO standard is not free&#010;&gt;         but the&#010;&gt;         &gt; last draft [2] is free.  If you just want a high level&#010;&gt;         overview&#010;&gt;         &gt; there's one on Wikipedia [3]. Hope that helps.&#010;&gt;         &#010;&gt;         &#010;&gt;         Shortly looked through it, definitely interesting. Of course&#010;&gt;         that makes&#010;&gt;         me worry a bit how far compilers support this already ...&#010;&gt;         particularly&#010;&gt;         as partially maybe (as in our case) older OS versions are to&#010;&gt;         be&#010;&gt;         supported.&#010;&gt; &#010;&gt; &#010;&gt; On Linux, GCC 4.3 and later, see [5]. On MacOS, CLang 3.1 and later,&#010;&gt; see [6].&#010;&gt; Of course you don't need to worry about it if you're using SDO as I'm&#010;&gt; not touching the M3 SDO code anyway :).&#010;&gt;  &#010;&gt; ...&#010;&gt; &#010;&gt; &#010;&gt;         &#010;&gt;         &#010;&gt;         I quickly looked into Jira and found at least these:&#010;&gt;         &#010;&gt;         https://issues.apache.org/jira/browse/TUSCANY-3841&#010;&gt;         https://issues.apache.org/jira/browse/TUSCANY-3715&#010;&gt;         https://issues.apache.org/jira/browse/TUSCANY-3597&#010;&gt;         &#010;&gt;         https://issues.apache.org/jira/browse/TUSCANY-1552&#010;&gt;         &#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; Ah, I now realize that you're using SDO, and I was only looking for&#010;&gt; SCA JIRAs.&#010;&gt;  &#010;&gt;         &#010;&gt;         &gt;&#010;&gt;         &gt; The C++ trunk has already gone through some refactoring and&#010;&gt;         quite a&#010;&gt;         &gt; few changes over time since M3... There's no SDO anymore&#010;&gt;         &#010;&gt;         &#010;&gt;         Oh!!! Actually I always believed Tuscany is mainly about SDO!&#010;&gt;         Well, then I have to correct myself - we are using Tuscany C++&#010;&gt;         SDO. I&#010;&gt;         wasn't aware of this at all (haven't looked into it for a&#010;&gt;         while though)&#010;&gt; &#010;&gt; &#010;&gt; Tus-SCA-ny is mainly about SCA [7]. SCA is a programming model for&#010;&gt; building apps with components that provide or use services, and&#010;&gt; initially used SDO to represent (mostly XML) data flowing through&#010;&gt; these services.&#010;&gt; &#010;&gt; &#010;&gt;         &#010;&gt;         &gt; (like the Java trunk, which I believe dropped SDO as well),&#010;&gt;         the&#010;&gt;         &gt; composite files use the new SCDL from OASIS, the runtime&#010;&gt;         integrates&#010;&gt;         &gt; with Apache HTTPD, etc. There's still an integration with&#010;&gt;         Axis2C but&#010;&gt;         &gt; I've not looked at it for a very long time.&#010;&gt;         &gt;&#010;&gt;         &gt;&#010;&gt;         &gt; So, if you're still using SDO you'll probably want to stick&#010;&gt;         to the M3&#010;&gt;         &gt; level, but I can help apply your patch to a maintenance&#010;&gt;         branch off M3&#010;&gt;         &gt; at some point if that helps.&#010;&gt;         &#010;&gt;         &#010;&gt;         Well, if SDO is dead anyway then there will not be any release&#010;&gt;         anymore I&#010;&gt;         suppose, so maybe no need to bother.&#010;&gt;         &#010;&gt;         &#010;&gt; ...&#010;&gt; &#010;&gt; &#010;&gt; I'm not sure about the state of SDO. I've not seen any activity on it&#010;&gt; for some time now, and I'm not planning to do anything with SDO at&#010;&gt; this point, but can try to help on my spare time if you or others are&#010;&gt; interested in maintaining or evolving the SDO code.&#010;&gt; &#010;&gt; &#010;&gt;  &#010;&gt;         &#010;&gt;         OK, then I should look into the alternatives? Is there any&#010;&gt;         replacement?&#010;&gt;         Many thx + regards,&#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; I personally like libxml2 [8] for XML and jansson [9] for JSON, and&#010;&gt; there's several other good XML and JSON libraries out there too, but&#010;&gt; if SDO works for you and you have a good handle on that code (and it&#010;&gt; looks like it since you were able to create some good patches), then&#010;&gt; why change? :)&#010;&gt;  &#010;&gt;         &gt;&#010;&gt;         &gt; [1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/&#010;&gt;         &gt; [2]&#010;&gt;         http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf&#010;&gt;         &gt; [3] http://en.wikipedia.org/wiki/C%2B%2B11&#010;&gt;         &gt; [4] https://issues.apache.org/jira/browse/TUSCANY-3598&#010;&gt;         &#010;&gt;         &#010;&gt; [5] http://gcc.gnu.org/projects/cxx0x.html &#010;&gt; [6] http://clang.llvm.org/cxx_status.html&#010;&gt; [7] http://www.oasis-opencsa.org/committees &#010;&gt; [8] http://www.xmlsoft.org&#010;&gt; [9] http://www.digip.org/jansson/&#010;&gt; &#010;&gt; &#010;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Created] (TUSCANY-4074) Registering a ContributionClassLoaderProvider has unpredictable result</title>
<author><name>&quot;Sebastian Millies (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c614298909.42392.1354225378546.JavaMail.jiratomcat@arcas%3e"/>
<id>urn:uuid:%3c614298909-42392-1354225378546-JavaMail-jiratomcat@arcas%3e</id>
<updated>2012-11-29T21:42:58Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Sebastian Millies created TUSCANY-4074:&#010;------------------------------------------&#010;&#010;             Summary: Registering a ContributionClassLoaderProvider has unpredictable result&#010;                 Key: TUSCANY-4074&#010;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4074&#010;             Project: Tuscany&#010;          Issue Type: Bug&#010;          Components: Java SCA Misc Implementation Extensions&#010;    Affects Versions: Java-SCA-1.6.2&#010;         Environment: Oracle Java 7 on Windows 7 (64bit)&#010;            Reporter: Sebastian Millies&#010;            Priority: Minor&#010;&#010;&#010;When one defines a class loader provider and registers it in the DefaultClassLoaderProviderExtensionPoint,&#010;it is unpredictable which class loader will actually be used. Tuscany will look up ALL class&#010;loader providers, then put the ServiceDeclaration's in a HashSet. The  DefaultClassLoaderProviderExtensionPoint&#010;will iterate over the set, and keep one provider per contribution type, whichever one it happens&#010;to find last. It would be better if the result could be predicted, either on the basis of&#010;the order in which the service declarations are found on the classpath (for that, the Set&#010;would probably have to be changed to a List), or on the basis of some attribute in the service&#010;declaration itself.&#010;&#010;cf JIRA 4073 for an example and more technical detail.&#010;&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Updated] (TUSCANY-4073) Change classloader to use different versions of third-party libraries than the Tuscany runtime</title>
<author><name>&quot;Sebastian Millies (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c1275083411.40911.1354211338446.JavaMail.jiratomcat@arcas%3e"/>
<id>urn:uuid:%3c1275083411-40911-1354211338446-JavaMail-jiratomcat@arcas%3e</id>
<updated>2012-11-29T17:48:58Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/TUSCANY-4073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Sebastian Millies updated TUSCANY-4073:&#010;---------------------------------------&#010;&#010;    Attachment: example-code.zip&#010;&#010;Example class loader, class loader provider, extension point and services files&#010;                &#010;&gt; Change classloader to use different versions of third-party libraries than the Tuscany&#010;runtime&#010;&gt; ----------------------------------------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: TUSCANY-4073&#010;&gt;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4073&#010;&gt;             Project: Tuscany&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: SCA Java Runtime&#010;&gt;    Affects Versions: Java-SCA-1.6.2&#010;&gt;         Environment: Java 7 on Windows 7 (64bit)&#010;&gt;            Reporter: Sebastian Millies&#010;&gt;             Fix For: Java-SCA-1.6.2&#010;&gt;&#010;&gt;         Attachments: classloader.patch, example-code.zip&#010;&gt;&#010;&gt;&#010;&gt; I want to set up my contributions, so that they can use&#010;&gt; different versions of third-party libraries than the Tuscany runtime. My original example&#010;&gt; was using recent versions of EMF (hence the subject line), another example is using&#010;&gt; Tuscany with an Apache Solr 4.0 backend, which requires different Apache Http Components.&#010;&gt; The standard recommendation is [1], but I have had great trouble to get that to work.&#010;(The&#010;&gt; reasons have to do with the use of SDOs in the application in question.)&#010;&gt; I have therefore decided to try the opposite approach of  including any different versions&#010;of components&#010;&gt; used  by Tuscany in nested jars in the contribution itself. Nested jars in a zip contribution&#010;get added into&#010;&gt; the contribution classpath.&#010;&gt; Here I am working under the assumption that the SCA contribution classloader would work&#010;&gt; somewhat like a webapp class loader in that it would not follow the delegation model,&#010;&gt; but would look for classes in the following order&#010;&gt; 1) inside the contribution&#010;&gt; 2) in the imports&#010;&gt; 3) in the parent classloader&#010;&gt; With this behavior, everything goes well. For example, I can make calls to Apache Solr&#010;through&#010;&gt; the solr-solrj-4.0.0.jar and its dependents, including httpclient-4.1.3.jar and httpcore-4.1.4.jar,&#010;&gt; without impacting HTTP calls made by Tuscany-generated proxies elsewhere.&#010;&gt; Here's the snag: As it turned out, org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader&#010;DID&#010;&gt; NOT work the way I expected, but rather looked in the parent classloader first, only&#010;then inside the contribution.&#010;&gt; I had to change the coding (in module contribution-java) and the associated test. A patch&#010;is attached.&#010;&gt; Would my change break anything, perhaps with respect to OSGi? Is there anything in the&#010;SCA spec that mandates a&#010;&gt; certain class loading behavior? I do feel that the alternative behavior is more natural&#010;than the one that is currently&#010;&gt; implemented. (There a very few resources on Tuscany classloading, and e. g. [2] does&#010;not seem to mention&#010;&gt; this particular issue.)&#010;&gt; Unfortunately, I cannot get all the Tuscany 1.6  tests to compile and run with maven.&#010;&gt; Please, would anyone be willing to see if Tuscany 1.6 with my patch applied would still&#010;pass all current tests?&#010;&gt; (unless my proposal is obviously wrong for other reasons, of course)&#010;&gt; Best,&#010;&gt; Sebastian&#010;&gt; [1] http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C4C164DD3.8090405@apache.org%3E&#010;&gt; [2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Commented] (TUSCANY-4073) Change classloader to use different versions of third-party libraries than the Tuscany runtime</title>
<author><name>&quot;Sebastian Millies (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c1711138473.40908.1354211218763.JavaMail.jiratomcat@arcas%3e"/>
<id>urn:uuid:%3c1711138473-40908-1354211218763-JavaMail-jiratomcat@arcas%3e</id>
<updated>2012-11-29T17:46:58Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;    [ https://issues.apache.org/jira/browse/TUSCANY-4073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=13506620#comment-13506620&#010;] &#010;&#010;Sebastian Millies commented on TUSCANY-4073:&#010;--------------------------------------------&#010;&#010;I have solution of sorts, and will attempt to summarize it here, working in some of Simon's&#010;comments as well.&#010;&#010;To re-iterate the problem: I want to set up my contributions, so that they can use&#010;different versions of third-party libraries than the Tuscany 1.6 runtime. My original example&#010;was using recent versions of EMF, another example is using Tuscany with an Apache Solr &#010;4.0 backend, which requires different Apache Http Components.&#010;&#010;Some approaches have turned out to be infeasible:&#010;1) patching the built-in ContributionClassLoader to use a parent-last strategy leads to several&#010;&#010;errors in Tuscany tests and samples. The fault may lie with the tests being based on wrong&#010;assumptions &#010;and bad-practices, but to correct them all is not a practical option. (Besides, it would be&#010;contrary to the &#010;OASIS specs.) &#010;2) The approach outlined in [1] is quite complicated, and I have not been able to get it to&#010;work.&#010;&#010;Instead, I have chosen to exploit the Tuscany extension mechanism in order to provide a class&#010;loader&#010;of my choice as the contribution class loader. This solution will work when one follows the&#010;recommended &#010;best practice of keeping contribution classes separate from the system classpath. The new&#010;class loader is&#010;the delegation parent of the contribution class loader.&#010;&#010;The approach has two limitations: &#010;1) the contributions shouldn't pass any references to these overriding external libraries&#010;to the Tuscany &#010;runtime (e. g. in the form of service parameters)&#010;2) the extension mechanism is a applied globally rather than to specific contributions.&#010;&#010;(Both these points do not worry me. With regard to the second one, the overriding classes&#010;could be &#010;included in a nested jar in the contribution itself, so even if the mechanism is global, any&#010;overriding&#010;could be kept strictly local, if desired. After all, it's my own class loader doing the work.)&#010;&#010;Finally, here's how it really works, without requiring any code changes in Tuscany itself.&#010;&#010;1) Define a class loader, e. g. EndorsedLibsClassLoader extends URLClassLoader&#010;&#010;2) Define a class loader provider, e. g. EndorsedLibsClassLoaderProvider implements ContributionClassLoaderProvider.&#010;This is the core of the solution. We inject the new class loader between the standard contribution&#010;class loader and&#010;the app class loader:&#010;    public ClassLoader getClassLoader( Contribution contribution, ClassLoader parent )&#010;    {&#010;        EndorsedLibsClassLoader endorsedLoader = new EndorsedLibsClassLoader( parent );&#010;        return new ContributionClassLoader( contribution, endorsedLoader );&#010;    }&#010;&#010;3) Define a class loader provider extension point, e. g. &#010;PrioritizedContributionClassLoaderProviderExtensionPoint implements ContributionClassloaderProviderExtensionPoint&#010;&#010;The reason for this is that Tuscany will look up ALL class loader providers, not just your&#010;own, then put them in&#010;a HashSet, iterate over the set, and keep one provider per contribution type, whichever one&#010;it happens to find&#010;last (clearly a bug, in my view). The PrioritizedContributionClassLoaderProviderExtensionPoint&#010;allows &#010;class loader providers to have a "priority" attribute, and keeps the one with the highest&#010;priority.&#010;&#010;4) Register the provider and the provider extension point in two files in a META-INF/services&#010;directory. The file names&#010;are:&#010;org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider&#010;org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint&#010;&#010;The latter just contains the FQCN of the extension point implementation. The former contains&#010;the FQCN of the class&#010;loader provider, along with its attributes, e. g. like this:&#010;example.contribution.java.EndorsedLibsClassLoaderProvider;type=application/x-compressed,priority=10&#010;&#010;5) Put the META-INF directory on the system classpath. But not just anywhere: It must come&#010;BEFORE the Tuscany&#010;runtime, because the tuscany-sca-all.jar will contain an analogous directory, and the extension&#010;point is loaded&#010;only once, from the first text file with appropriate name that is found.&#010;&#010;This is really quite simple, after all. It may not be the best of all possible solutions,&#010;but it works for me.&#010;&#010;-- Sebastian&#010;&#010;PS: I'd like to share some example code (99,9% is original Tuscany code anyway...)&#010;I have put the text of this mail plus a zip archive into the JIRA that has occasioned this&#010;entire exchange:&#010;https://issues.apache.org/jira/browse/TUSCANY-4073&#010;&#010;[1] http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C4C164DD3.8090405@apache.org%3E&#010;[2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html&#010;&#010;                &#010;&gt; Change classloader to use different versions of third-party libraries than the Tuscany&#010;runtime&#010;&gt; ----------------------------------------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: TUSCANY-4073&#010;&gt;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4073&#010;&gt;             Project: Tuscany&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: SCA Java Runtime&#010;&gt;    Affects Versions: Java-SCA-1.6.2&#010;&gt;         Environment: Java 7 on Windows 7 (64bit)&#010;&gt;            Reporter: Sebastian Millies&#010;&gt;             Fix For: Java-SCA-1.6.2&#010;&gt;&#010;&gt;         Attachments: classloader.patch&#010;&gt;&#010;&gt;&#010;&gt; I want to set up my contributions, so that they can use&#010;&gt; different versions of third-party libraries than the Tuscany runtime. My original example&#010;&gt; was using recent versions of EMF (hence the subject line), another example is using&#010;&gt; Tuscany with an Apache Solr 4.0 backend, which requires different Apache Http Components.&#010;&gt; The standard recommendation is [1], but I have had great trouble to get that to work.&#010;(The&#010;&gt; reasons have to do with the use of SDOs in the application in question.)&#010;&gt; I have therefore decided to try the opposite approach of  including any different versions&#010;of components&#010;&gt; used  by Tuscany in nested jars in the contribution itself. Nested jars in a zip contribution&#010;get added into&#010;&gt; the contribution classpath.&#010;&gt; Here I am working under the assumption that the SCA contribution classloader would work&#010;&gt; somewhat like a webapp class loader in that it would not follow the delegation model,&#010;&gt; but would look for classes in the following order&#010;&gt; 1) inside the contribution&#010;&gt; 2) in the imports&#010;&gt; 3) in the parent classloader&#010;&gt; With this behavior, everything goes well. For example, I can make calls to Apache Solr&#010;through&#010;&gt; the solr-solrj-4.0.0.jar and its dependents, including httpclient-4.1.3.jar and httpcore-4.1.4.jar,&#010;&gt; without impacting HTTP calls made by Tuscany-generated proxies elsewhere.&#010;&gt; Here's the snag: As it turned out, org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader&#010;DID&#010;&gt; NOT work the way I expected, but rather looked in the parent classloader first, only&#010;then inside the contribution.&#010;&gt; I had to change the coding (in module contribution-java) and the associated test. A patch&#010;is attached.&#010;&gt; Would my change break anything, perhaps with respect to OSGi? Is there anything in the&#010;SCA spec that mandates a&#010;&gt; certain class loading behavior? I do feel that the alternative behavior is more natural&#010;than the one that is currently&#010;&gt; implemented. (There a very few resources on Tuscany classloading, and e. g. [2] does&#010;not seem to mention&#010;&gt; this particular issue.)&#010;&gt; Unfortunately, I cannot get all the Tuscany 1.6  tests to compile and run with maven.&#010;&gt; Please, would anyone be willing to see if Tuscany 1.6 with my patch applied would still&#010;pass all current tests?&#010;&gt; (unless my proposal is obviously wrong for other reasons, of course)&#010;&gt; Best,&#010;&gt; Sebastian&#010;&gt; [1] http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C4C164DD3.8090405@apache.org%3E&#010;&gt; [2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Commented] (TUSCANY-4073) Change classloader to use different versions of third-party libraries than the Tuscany runtime</title>
<author><name>&quot;Simon Nash (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c1826920929.31961.1354097938407.JavaMail.jiratomcat@arcas%3e"/>
<id>urn:uuid:%3c1826920929-31961-1354097938407-JavaMail-jiratomcat@arcas%3e</id>
<updated>2012-11-28T10:18:58Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;    [ https://issues.apache.org/jira/browse/TUSCANY-4073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=13505347#comment-13505347&#010;] &#010;&#010;Simon Nash commented on TUSCANY-4073:&#010;-------------------------------------&#010;&#010;I tried this and got the following failures in modules and samples:&#010;&#010;modules/binding-rmi-runtime:&#010;testRmiService(org.apache.tuscany.sca.binding.rmi.BindingTestCase)&#010;&#010;modules/binding-ws-axis2:&#010;testEchoFoo(org.apache.tuscany.sca.binding.ws.axis2.itests.HelloWorldNoWSDLTestCase)&#010;testImageFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)&#010;testSourceFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)&#010;testDataHandlerFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)&#010;testOMElementFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)&#010;&#010;samples/callbacks-jms:&#010;testOderClient(callbacks.CallbacksTestCase)&#010;&#010;samples/helloworld-ws-reference-lean:&#010;testWSClient(helloworld.HelloWorldClientTestCase)&#010;&#010;samples/helloworld-ws-sdo:&#010;testWSClient(helloworld.HelloWorldClientTestCase)&#010;&#010;samples/implementation-composite:&#010;test(composite.CompositeTestCase)&#010;&#010;samples/quote-xquery:&#010;testQuoteJoin(xquery.quote.XQueryQuoteClientTestCase)&#010;&#010;samples/simple-bigbank:&#010;test(bigbank.BigBankTestCase)&#010;&#010;samples/spring-bigbank-stockquote:&#010;testServer(bigbank.stockquote.StockQuoteServiceTestCase)&#010;&#010;samples/simple-callback:&#010;test(simplecallback.SimpleCallbackTestCase)&#010;&#010;samples/simple-callback-ws:&#010;test(simplecallback.SimpleCallbackTestCase)&#010;&#010;I didn't go any further, as the above errors seem to indicate there are serious issues with&#010;this change.&#010;                &#010;&gt; Change classloader to use different versions of third-party libraries than the Tuscany&#010;runtime&#010;&gt; ----------------------------------------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: TUSCANY-4073&#010;&gt;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4073&#010;&gt;             Project: Tuscany&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: SCA Java Runtime&#010;&gt;    Affects Versions: Java-SCA-1.6.2&#010;&gt;         Environment: Java 7 on Windows 7 (64bit)&#010;&gt;            Reporter: Sebastian Millies&#010;&gt;             Fix For: Java-SCA-1.6.2&#010;&gt;&#010;&gt;         Attachments: classloader.patch&#010;&gt;&#010;&gt;&#010;&gt; I want to set up my contributions, so that they can use&#010;&gt; different versions of third-party libraries than the Tuscany runtime. My original example&#010;&gt; was using recent versions of EMF (hence the subject line), another example is using&#010;&gt; Tuscany with an Apache Solr 4.0 backend, which requires different Apache Http Components.&#010;&gt; The standard recommendation is [1], but I have had great trouble to get that to work.&#010;(The&#010;&gt; reasons have to do with the use of SDOs in the application in question.)&#010;&gt; I have therefore decided to try the opposite approach of  including any different versions&#010;of components&#010;&gt; used  by Tuscany in nested jars in the contribution itself. Nested jars in a zip contribution&#010;get added into&#010;&gt; the contribution classpath.&#010;&gt; Here I am working under the assumption that the SCA contribution classloader would work&#010;&gt; somewhat like a webapp class loader in that it would not follow the delegation model,&#010;&gt; but would look for classes in the following order&#010;&gt; 1) inside the contribution&#010;&gt; 2) in the imports&#010;&gt; 3) in the parent classloader&#010;&gt; With this behavior, everything goes well. For example, I can make calls to Apache Solr&#010;through&#010;&gt; the solr-solrj-4.0.0.jar and its dependents, including httpclient-4.1.3.jar and httpcore-4.1.4.jar,&#010;&gt; without impacting HTTP calls made by Tuscany-generated proxies elsewhere.&#010;&gt; Here's the snag: As it turned out, org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader&#010;DID&#010;&gt; NOT work the way I expected, but rather looked in the parent classloader first, only&#010;then inside the contribution.&#010;&gt; I had to change the coding (in module contribution-java) and the associated test. A patch&#010;is attached.&#010;&gt; Would my change break anything, perhaps with respect to OSGi? Is there anything in the&#010;SCA spec that mandates a&#010;&gt; certain class loading behavior? I do feel that the alternative behavior is more natural&#010;than the one that is currently&#010;&gt; implemented. (There a very few resources on Tuscany classloading, and e. g. [2] does&#010;not seem to mention&#010;&gt; this particular issue.)&#010;&gt; Unfortunately, I cannot get all the Tuscany 1.6  tests to compile and run with maven.&#010;&gt; Please, would anyone be willing to see if Tuscany 1.6 with my patch applied would still&#010;pass all current tests?&#010;&gt; (unless my proposal is obviously wrong for other reasons, of course)&#010;&gt; Best,&#010;&gt; Sebastian&#010;&gt; [1] http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C4C164DD3.8090405@apache.org%3E&#010;&gt; [2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Commented] (TUSCANY-4073) Change classloader to use different versions of third-party libraries than the Tuscany runtime</title>
<author><name>&quot;Sebastian Millies (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c195098629.28565.1354038238810.JavaMail.jiratomcat@arcas%3e"/>
<id>urn:uuid:%3c195098629-28565-1354038238810-JavaMail-jiratomcat@arcas%3e</id>
<updated>2012-11-27T17:43:58Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;    [ https://issues.apache.org/jira/browse/TUSCANY-4073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=13504791#comment-13504791&#010;] &#010;&#010;Sebastian Millies commented on TUSCANY-4073:&#010;--------------------------------------------&#010;&#010;I hereby give permission to the Apache Software Foundation use the attached patch for any&#010;purpose whatsoever. -- Sebastian Millies&#010;                &#010;&gt; Change classloader to use different versions of third-party libraries than the Tuscany&#010;runtime&#010;&gt; ----------------------------------------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: TUSCANY-4073&#010;&gt;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4073&#010;&gt;             Project: Tuscany&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: SCA Java Runtime&#010;&gt;    Affects Versions: Java-SCA-1.6.2&#010;&gt;         Environment: Java 7 on Windows 7 (64bit)&#010;&gt;            Reporter: Sebastian Millies&#010;&gt;             Fix For: Java-SCA-1.6.2&#010;&gt;&#010;&gt;         Attachments: classloader.patch&#010;&gt;&#010;&gt;&#010;&gt; I want to set up my contributions, so that they can use&#010;&gt; different versions of third-party libraries than the Tuscany runtime. My original example&#010;&gt; was using recent versions of EMF (hence the subject line), another example is using&#010;&gt; Tuscany with an Apache Solr 4.0 backend, which requires different Apache Http Components.&#010;&gt; The standard recommendation is [1], but I have had great trouble to get that to work.&#010;(The&#010;&gt; reasons have to do with the use of SDOs in the application in question.)&#010;&gt; I have therefore decided to try the opposite approach of  including any different versions&#010;of components&#010;&gt; used  by Tuscany in nested jars in the contribution itself. Nested jars in a zip contribution&#010;get added into&#010;&gt; the contribution classpath.&#010;&gt; Here I am working under the assumption that the SCA contribution classloader would work&#010;&gt; somewhat like a webapp class loader in that it would not follow the delegation model,&#010;&gt; but would look for classes in the following order&#010;&gt; 1) inside the contribution&#010;&gt; 2) in the imports&#010;&gt; 3) in the parent classloader&#010;&gt; With this behavior, everything goes well. For example, I can make calls to Apache Solr&#010;through&#010;&gt; the solr-solrj-4.0.0.jar and its dependents, including httpclient-4.1.3.jar and httpcore-4.1.4.jar,&#010;&gt; without impacting HTTP calls made by Tuscany-generated proxies elsewhere.&#010;&gt; Here's the snag: As it turned out, org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader&#010;DID&#010;&gt; NOT work the way I expected, but rather looked in the parent classloader first, only&#010;then inside the contribution.&#010;&gt; I had to change the coding (in module contribution-java) and the associated test. A patch&#010;is attached.&#010;&gt; Would my change break anything, perhaps with respect to OSGi? Is there anything in the&#010;SCA spec that mandates a&#010;&gt; certain class loading behavior? I do feel that the alternative behavior is more natural&#010;than the one that is currently&#010;&gt; implemented. (There a very few resources on Tuscany classloading, and e. g. [2] does&#010;not seem to mention&#010;&gt; this particular issue.)&#010;&gt; Unfortunately, I cannot get all the Tuscany 1.6  tests to compile and run with maven.&#010;&gt; Please, would anyone be willing to see if Tuscany 1.6 with my patch applied would still&#010;pass all current tests?&#010;&gt; (unless my proposal is obviously wrong for other reasons, of course)&#010;&gt; Best,&#010;&gt; Sebastian&#010;&gt; [1] http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C4C164DD3.8090405@apache.org%3E&#010;&gt; [2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Updated] (TUSCANY-4073) Change classloader to use different versions of third-party libraries than the Tuscany runtime</title>
<author><name>&quot;Sebastian Millies (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c58551136.28557.1354038118006.JavaMail.jiratomcat@arcas%3e"/>
<id>urn:uuid:%3c58551136-28557-1354038118006-JavaMail-jiratomcat@arcas%3e</id>
<updated>2012-11-27T17:41:57Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/TUSCANY-4073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Sebastian Millies updated TUSCANY-4073:&#010;---------------------------------------&#010;&#010;    Attachment: classloader.patch&#010;&#010;Patches for org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader and the&#010;associated unit test&#010;                &#010;&gt; Change classloader to use different versions of third-party libraries than the Tuscany&#010;runtime&#010;&gt; ----------------------------------------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: TUSCANY-4073&#010;&gt;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4073&#010;&gt;             Project: Tuscany&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: SCA Java Runtime&#010;&gt;    Affects Versions: Java-SCA-1.6.2&#010;&gt;         Environment: Java 7 on Windows 7 (64bit)&#010;&gt;            Reporter: Sebastian Millies&#010;&gt;             Fix For: Java-SCA-1.6.2&#010;&gt;&#010;&gt;         Attachments: classloader.patch&#010;&gt;&#010;&gt;&#010;&gt; I want to set up my contributions, so that they can use&#010;&gt; different versions of third-party libraries than the Tuscany runtime. My original example&#010;&gt; was using recent versions of EMF (hence the subject line), another example is using&#010;&gt; Tuscany with an Apache Solr 4.0 backend, which requires different Apache Http Components.&#010;&gt; The standard recommendation is [1], but I have had great trouble to get that to work.&#010;(The&#010;&gt; reasons have to do with the use of SDOs in the application in question.)&#010;&gt; I have therefore decided to try the opposite approach of  including any different versions&#010;of components&#010;&gt; used  by Tuscany in nested jars in the contribution itself. Nested jars in a zip contribution&#010;get added into&#010;&gt; the contribution classpath.&#010;&gt; Here I am working under the assumption that the SCA contribution classloader would work&#010;&gt; somewhat like a webapp class loader in that it would not follow the delegation model,&#010;&gt; but would look for classes in the following order&#010;&gt; 1) inside the contribution&#010;&gt; 2) in the imports&#010;&gt; 3) in the parent classloader&#010;&gt; With this behavior, everything goes well. For example, I can make calls to Apache Solr&#010;through&#010;&gt; the solr-solrj-4.0.0.jar and its dependents, including httpclient-4.1.3.jar and httpcore-4.1.4.jar,&#010;&gt; without impacting HTTP calls made by Tuscany-generated proxies elsewhere.&#010;&gt; Here's the snag: As it turned out, org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader&#010;DID&#010;&gt; NOT work the way I expected, but rather looked in the parent classloader first, only&#010;then inside the contribution.&#010;&gt; I had to change the coding (in module contribution-java) and the associated test. A patch&#010;is attached.&#010;&gt; Would my change break anything, perhaps with respect to OSGi? Is there anything in the&#010;SCA spec that mandates a&#010;&gt; certain class loading behavior? I do feel that the alternative behavior is more natural&#010;than the one that is currently&#010;&gt; implemented. (There a very few resources on Tuscany classloading, and e. g. [2] does&#010;not seem to mention&#010;&gt; this particular issue.)&#010;&gt; Unfortunately, I cannot get all the Tuscany 1.6  tests to compile and run with maven.&#010;&gt; Please, would anyone be willing to see if Tuscany 1.6 with my patch applied would still&#010;pass all current tests?&#010;&gt; (unless my proposal is obviously wrong for other reasons, of course)&#010;&gt; Best,&#010;&gt; Sebastian&#010;&gt; [1] http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C4C164DD3.8090405@apache.org%3E&#010;&gt; [2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Created] (TUSCANY-4073) Change classloader to use different versions of third-party libraries than the Tuscany runtime</title>
<author><name>&quot;Sebastian Millies (JIRA)&quot; &lt;dev@tuscany.apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c1458764337.28553.1354037878346.JavaMail.jiratomcat@arcas%3e"/>
<id>urn:uuid:%3c1458764337-28553-1354037878346-JavaMail-jiratomcat@arcas%3e</id>
<updated>2012-11-27T17:37:58Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Sebastian Millies created TUSCANY-4073:&#010;------------------------------------------&#010;&#010;             Summary: Change classloader to use different versions of third-party libraries&#010;than the Tuscany runtime&#010;                 Key: TUSCANY-4073&#010;                 URL: https://issues.apache.org/jira/browse/TUSCANY-4073&#010;             Project: Tuscany&#010;          Issue Type: Improvement&#010;          Components: SCA Java Runtime&#010;    Affects Versions: Java-SCA-1.6.2&#010;         Environment: Java 7 on Windows 7 (64bit)&#010;            Reporter: Sebastian Millies&#010;             Fix For: Java-SCA-1.6.2&#010;&#010;&#010;I want to set up my contributions, so that they can use&#010;different versions of third-party libraries than the Tuscany runtime. My original example&#010;was using recent versions of EMF (hence the subject line), another example is using&#010;Tuscany with an Apache Solr 4.0 backend, which requires different Apache Http Components.&#010;&#010;The standard recommendation is [1], but I have had great trouble to get that to work. (The&#010;reasons have to do with the use of SDOs in the application in question.)&#010;&#010;I have therefore decided to try the opposite approach of  including any different versions&#010;of components&#010;used  by Tuscany in nested jars in the contribution itself. Nested jars in a zip contribution&#010;get added into&#010;the contribution classpath.&#010;&#010;Here I am working under the assumption that the SCA contribution classloader would work&#010;somewhat like a webapp class loader in that it would not follow the delegation model,&#010;but would look for classes in the following order&#010;1) inside the contribution&#010;2) in the imports&#010;3) in the parent classloader&#010;&#010;With this behavior, everything goes well. For example, I can make calls to Apache Solr through&#010;the solr-solrj-4.0.0.jar and its dependents, including httpclient-4.1.3.jar and httpcore-4.1.4.jar,&#010;without impacting HTTP calls made by Tuscany-generated proxies elsewhere.&#010;&#010;Here's the snag: As it turned out, org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader&#010;DID&#010;NOT work the way I expected, but rather looked in the parent classloader first, only then&#010;inside the contribution.&#010;I had to change the coding (in module contribution-java) and the associated test. A patch&#010;is attached.&#010;&#010;Would my change break anything, perhaps with respect to OSGi? Is there anything in the SCA&#010;spec that mandates a&#010;certain class loading behavior? I do feel that the alternative behavior is more natural than&#010;the one that is currently&#010;implemented. (There a very few resources on Tuscany classloading, and e. g. [2] does not seem&#010;to mention&#010;this particular issue.)&#010;&#010;Unfortunately, I cannot get all the Tuscany 1.6  tests to compile and run with maven.&#010;&#010;Please, would anyone be willing to see if Tuscany 1.6 with my patch applied would still pass&#010;all current tests?&#010;(unless my proposal is obviously wrong for other reasons, of course)&#010;&#010;Best,&#010;Sebastian&#010;&#010;[1] http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C4C164DD3.8090405@apache.org%3E&#010;[2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html&#010;&#010;--&#010;This message is automatically generated by JIRA.&#010;If you think it was sent incorrectly, please contact your JIRA administrators&#010;For more information on JIRA, see: http://www.atlassian.com/software/jira&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>AUTO: High, Rob is out of the office. (returning 12/17/2012)</title>
<author><name>Rob High &lt;highr@us.ibm.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3cOF3A0530A5.B7BDCAD4-ON87257AC3.003CE072-87257AC3.003CE072@us.ibm.com%3e"/>
<id>urn:uuid:%3cOF3A0530A5-B7BDCAD4-ON87257AC3-003CE072-87257AC3-003CE072@us-ibm-com%3e</id>
<updated>2012-11-27T11:04:56Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;&#010;I am out of the office until 12/17/2012.&#010;&#010;Please direct personnel questions to Jayashree Subrahmonia/Watson/IBM.&#010;Direct technical questions to Raphael P Chancey/Austin/IBM, Sridhar&#010;Sudarsan/Austin/IBM, or Matthew Sanchez/Austin/IBM.&#010;&#010;&#010;Note: This is an automated response to your message  "Re: Porting Tuscany C&#010;++ to C++11 and some code cleanup" sent on 11/27/2012 12:13:40 AM.&#010;&#010;This is the only notification you will receive while this person is away.&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3cCA+5QmYAth3+2isCCrs2MCyMQf04_jMcT6ifP2Lfu9M7sRR07dg@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYAth3+2isCCrs2MCyMQf04_jMcT6ifP2Lfu9M7sRR07dg@mail-gmail-com%3e</id>
<updated>2012-11-27T07:13:40Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Sun, Nov 25, 2012 at 1:31 PM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&#010;&gt; On Sun, 2012-11-25 at 10:38 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; &gt; On Fri, Nov 23, 2012 at 9:02 AM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&gt;&#010;...&#010;&gt;&#010;&gt; Great! Papers from the C++11 standard work groups are available on&#010;&gt; &gt; open-std.org there [1]. The final ISO standard is not free but the&#010;&gt; &gt; last draft [2] is free.  If you just want a high level overview&#010;&gt; &gt; there's one on Wikipedia [3]. Hope that helps.&#010;&gt;&#010;&gt; Shortly looked through it, definitely interesting. Of course that makes&#010;&gt; me worry a bit how far compilers support this already ... particularly&#010;&gt; as partially maybe (as in our case) older OS versions are to be&#010;&gt; supported.&#010;&gt;&#010;&#010;On Linux, GCC 4.3 and later, see [5]. On MacOS, CLang 3.1 and later, see&#010;[6].&#010;Of course you don't need to worry about it if you're using SDO as I'm not&#010;touching the M3 SDO code anyway :).&#010;&#010;...&#010;&#010;&#010;&gt; I quickly looked into Jira and found at least these:&#010;&gt;&#010;&gt; https://issues.apache.org/jira/browse/TUSCANY-3841&#010;&gt; https://issues.apache.org/jira/browse/TUSCANY-3715&#010;&gt; https://issues.apache.org/jira/browse/TUSCANY-3597&#010;&gt;&#010;&gt; https://issues.apache.org/jira/browse/TUSCANY-1552&#010;&gt;&#010;&gt;&#010;Ah, I now realize that you're using SDO, and I was only looking for SCA&#010;JIRAs.&#010;&#010;&#010;&gt;&#010;&gt; &gt;&#010;&gt; &gt; The C++ trunk has already gone through some refactoring and quite a&#010;&gt; &gt; few changes over time since M3... There's no SDO anymore&#010;&gt;&#010;&gt; Oh!!! Actually I always believed Tuscany is mainly about SDO!&#010;&gt; Well, then I have to correct myself - we are using Tuscany C++ SDO. I&#010;&gt; wasn't aware of this at all (haven't looked into it for a while though)&#010;&gt;&#010;&#010;Tus-SCA-ny is mainly about SCA [7]. SCA is a programming model for building&#010;apps with components that provide or use services, and initially used SDO&#010;to represent (mostly XML) data flowing through these services.&#010;&#010;&#010;&gt; &gt; (like the Java trunk, which I believe dropped SDO as well), the&#010;&gt; &gt; composite files use the new SCDL from OASIS, the runtime integrates&#010;&gt; &gt; with Apache HTTPD, etc. There's still an integration with Axis2C but&#010;&gt; &gt; I've not looked at it for a very long time.&#010;&gt; &gt;&#010;&gt; &gt;&#010;&gt; &gt; So, if you're still using SDO you'll probably want to stick to the M3&#010;&gt; &gt; level, but I can help apply your patch to a maintenance branch off M3&#010;&gt; &gt; at some point if that helps.&#010;&gt;&#010;&gt; Well, if SDO is dead anyway then there will not be any release anymore I&#010;&gt; suppose, so maybe no need to bother.&#010;&gt;&#010;&gt; ...&#010;&#010;I'm not sure about the state of SDO. I've not seen any activity on it for&#010;some time now, and I'm not planning to do anything with SDO at this point,&#010;but can try to help on my spare time if you or others are interested in&#010;maintaining or evolving the SDO code.&#010;&#010;&#010;&#010;&gt; OK, then I should look into the alternatives? Is there any replacement?&#010;&gt; Many thx + regards,&#010;&gt;&#010;&#010;I personally like libxml2 [8] for XML and jansson [9] for JSON, and there's&#010;several other good XML and JSON libraries out there too, but if SDO works&#010;for you and you have a good handle on that code (and it looks like it since&#010;you were able to create some good patches), then why change? :)&#010;&#010;&#010;&gt; &gt;&#010;&gt; &gt; [1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/&#010;&gt; &gt; [2] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf&#010;&gt; &gt; [3] http://en.wikipedia.org/wiki/C%2B%2B11&#010;&gt; &gt; [4] https://issues.apache.org/jira/browse/TUSCANY-3598&#010;&gt;&#010;&gt; [5] http://gcc.gnu.org/projects/cxx0x.html&#010;[6] http://clang.llvm.org/cxx_status.html&#010;[7] http://www.oasis-opencsa.org/committees&#010;[8] http://www.xmlsoft.org&#010;[9] http://www.digip.org/jansson/&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c1353879062.2516.1164.camel@parsley%3e"/>
<id>urn:uuid:%3c1353879062-2516-1164-camel@parsley%3e</id>
<updated>2012-11-25T21:31:02Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Sun, 2012-11-25 at 10:38 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; On Fri, Nov 23, 2012 at 9:02 AM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&gt;         &#010;&gt;         Hi JS + all,&#010;&gt;         &#010;&gt;         we are using Tuscany C++ in one of our projects, hence we/I&#010;&gt;         have some&#010;&gt;         personal interest and also would like to contribute, if&#010;&gt;         possible. &#010;&gt;         &#010;&gt;         Tbh, I don't know details about C++11 (will read a bit) nor&#010;&gt;         the other&#010;&gt;         things you mention.&#010;&gt; &#010;&gt; &#010;&gt; Great! Papers from the C++11 standard work groups are available on&#010;&gt; open-std.org there [1]. The final ISO standard is not free but the&#010;&gt; last draft [2] is free.  If you just want a high level overview&#010;&gt; there's one on Wikipedia [3]. Hope that helps.&#010;&#010;Shortly looked through it, definitely interesting. Of course that makes&#010;me worry a bit how far compilers support this already ... particularly&#010;as partially maybe (as in our case) older OS versions are to be&#010;supported.&#010;&#010;&gt;         One thing though which appears quite important to me is that&#010;&gt;         the various&#010;&gt;         patches we/I have done (most/all (?) submitted to Jira) and&#010;&gt;         other people&#010;&gt;         are incorporated into the general code so that they are in the&#010;&gt;         next&#010;&gt;         release if there will ever be one ... and of course this is&#010;&gt;         easier&#010;&gt;         before any refactorings.&#010;&gt; &#010;&gt; &#010;&gt; I found one JIRA with a patch from you [4], which looks like a change&#010;&gt; to the SDO + Axiom support in the SCA-Native-M3 release.&#010;&#010;I quickly looked into Jira and found at least these:&#010;&#010;https://issues.apache.org/jira/browse/TUSCANY-3841&#010;https://issues.apache.org/jira/browse/TUSCANY-3715&#010;https://issues.apache.org/jira/browse/TUSCANY-3597&#010;&#010;https://issues.apache.org/jira/browse/TUSCANY-1552&#010;&#010;&#010;&gt; &#010;&gt; The C++ trunk has already gone through some refactoring and quite a&#010;&gt; few changes over time since M3... There's no SDO anymore&#010;&#010;Oh!!! Actually I always believed Tuscany is mainly about SDO!&#010;Well, then I have to correct myself - we are using Tuscany C++ SDO. I&#010;wasn't aware of this at all (haven't looked into it for a while though)&#010;&#010;&gt; (like the Java trunk, which I believe dropped SDO as well), the&#010;&gt; composite files use the new SCDL from OASIS, the runtime integrates&#010;&gt; with Apache HTTPD, etc. There's still an integration with Axis2C but&#010;&gt; I've not looked at it for a very long time.&#010;&gt; &#010;&gt; &#010;&gt; So, if you're still using SDO you'll probably want to stick to the M3&#010;&gt; level, but I can help apply your patch to a maintenance branch off M3&#010;&gt; at some point if that helps.&#010;&#010;Well, if SDO is dead anyway then there will not be any release anymore I&#010;suppose, so maybe no need to bother.&#010;&#010;&gt;         &#010;&gt;         The other thing: Are the planned changes going to modify the&#010;&gt;         API&#010;&gt;         interface or is it just internally?&#010;&gt; &#010;&gt; &#010;&gt; The C++11 changes only apply to the runtime internals, but again if&#010;&gt; you're using the SDO-based API from M3, that already changed a long&#010;&gt; time ago.&#010;&#010;OK, then I should look into the alternatives? Is there any replacement?&#010;Many thx + regards,&#010;  tge&#010;&#010;&gt;         &#010;&gt;         Rgds,&#010;&gt;           tge&#010;&gt;         &#010;&gt;         &#010;&gt; &#010;&gt; &#010;&gt; [1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/&#010;&gt; [2] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf&#010;&gt; [3] http://en.wikipedia.org/wiki/C%2B%2B11&#010;&gt; [4] https://issues.apache.org/jira/browse/TUSCANY-3598&#010;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3cCA+5QmYAg3u3qrDP+i4Tpw3wrjk2X3ah6nVXVuLUDCLD88usPSg@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYAg3u3qrDP+i4Tpw3wrjk2X3ah6nVXVuLUDCLD88usPSg@mail-gmail-com%3e</id>
<updated>2012-11-25T18:38:37Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
On Fri, Nov 23, 2012 at 9:02 AM, Thomas Gentsch &lt;tg@e-tge.de&gt; wrote:&#010;&#010;&gt;&#010;&gt; Hi JS + all,&#010;&gt;&#010;&gt; we are using Tuscany C++ in one of our projects, hence we/I have some&#010;&gt; personal interest and also would like to contribute, if possible.&#010;&#010;&#010;&gt; Tbh, I don't know details about C++11 (will read a bit) nor the other&#010;&gt; things you mention.&#010;&gt;&#010;&#010;Great! Papers from the C++11 standard work groups are available on&#010;open-std.org there [1]. The final ISO standard is not free but the last&#010;draft [2] is free.  If you just want a high level overview there's one on&#010;Wikipedia [3]. Hope that helps.&#010;&#010;&#010;&gt; One thing though which appears quite important to me is that the various&#010;&gt; patches we/I have done (most/all (?) submitted to Jira) and other people&#010;&gt; are incorporated into the general code so that they are in the next&#010;&gt; release if there will ever be one ... and of course this is easier&#010;&gt; before any refactorings.&#010;&gt;&#010;&#010;I found one JIRA with a patch from you [4], which looks like a change to&#010;the SDO + Axiom support in the SCA-Native-M3 release.&#010;&#010;The C++ trunk has already gone through some refactoring and quite a few&#010;changes over time since M3... There's no SDO anymore (like the Java trunk,&#010;which I believe dropped SDO as well), the composite files use the new SCDL&#010;from OASIS, the runtime integrates with Apache HTTPD, etc. There's still an&#010;integration with Axis2C but I've not looked at it for a very long time.&#010;&#010;So, if you're still using SDO you'll probably want to stick to the M3&#010;level, but I can help apply your patch to a maintenance branch off M3 at&#010;some point if that helps.&#010;&#010;&#010;&gt;&#010;&gt; The other thing: Are the planned changes going to modify the API&#010;&gt; interface or is it just internally?&#010;&gt;&#010;&#010;The C++11 changes only apply to the runtime internals, but again if you're&#010;using the SDO-based API from M3, that already changed a long time ago.&#010;&#010;&#010;&gt;&#010;&gt; Rgds,&#010;&gt;   tge&#010;&gt;&#010;&gt;&#010;[1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/&#010;[2] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf&#010;[3] http://en.wikipedia.org/wiki/C%2B%2B11&#010;[4] https://issues.apache.org/jira/browse/TUSCANY-3598&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Thomas Gentsch &lt;tg@e-tge.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3c1353690145.2516.732.camel@parsley%3e"/>
<id>urn:uuid:%3c1353690145-2516-732-camel@parsley%3e</id>
<updated>2012-11-23T17:02:25Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;Hi JS + all,&#010;&#010;we are using Tuscany C++ in one of our projects, hence we/I have some&#010;personal interest and also would like to contribute, if possible.&#010;&#010;Tbh, I don't know details about C++11 (will read a bit) nor the other&#010;things you mention.&#010;One thing though which appears quite important to me is that the various&#010;patches we/I have done (most/all (?) submitted to Jira) and other people&#010;are incorporated into the general code so that they are in the next&#010;release if there will ever be one ... and of course this is easier&#010;before any refactorings.&#010;&#010;The other thing: Are the planned changes going to modify the API&#010;interface or is it just internally?&#010;&#010;Rgds,&#010;  tge&#010;&#010;On Thu, 2012-11-22 at 11:31 -0800, Jean-Sebastien Delfino wrote:&#010;&gt; Hi all,&#010;&gt; &#010;&gt; &#010;&gt; Happy Thanksgiving :). I'm going to have a little bit of spare time on&#010;&gt; the long weekend to do some cleanup of Tuscany C++.&#010;&gt; &#010;&gt; &#010;&gt; I'm planning to do some code refactoring to start leveraging some of&#010;&gt; the new C++11 standard constructs (replace the current functors with C&#010;&gt; ++11 lambda expressions for example). I'll also try to do some more&#010;&gt; general cleanup of the code base and improvements to a few areas like&#010;&gt; the JSON support (which currently requires SpiderMonkey, that's&#010;&gt; overkill) and the server hosting module.&#010;&gt; &#010;&gt; &#010;&gt; These changes should simplify the code base a bit and bring&#010;&gt; significant performance improvements as well. It'd be nice to have&#010;&gt; another release at some point... perhaps on one of the next holiday&#010;&gt; breaks if I get enough spare time again, or if others would like to&#010;&gt; help...&#010;&gt; &#010;&gt; &#010;&gt; HTH&#010;&gt; &#010;&gt; &#010;&gt; - Jean-Sebastien&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Porting Tuscany C++ to C++11 and some code cleanup</title>
<author><name>Jean-Sebastien Delfino &lt;jsdelfino@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/tuscany-dev/201211.mbox/%3cCA+5QmYC3z3SnQ9tYUY7d-LJRmQnnrjdn8pqMZCGMb2bBp-5VSA@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCA+5QmYC3z3SnQ9tYUY7d-LJRmQnnrjdn8pqMZCGMb2bBp-5VSA@mail-gmail-com%3e</id>
<updated>2012-11-22T19:31:56Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi all,&#010;&#010;Happy Thanksgiving :). I'm going to have a little bit of spare time on the&#010;long weekend to do some cleanup of Tuscany C++.&#010;&#010;I'm planning to do some code refactoring to start leveraging some of the&#010;new C++11 standard constructs (replace the current functors with C++11&#010;lambda expressions for example). I'll also try to do some more general&#010;cleanup of the code base and improvements to a few areas like the JSON&#010;support (which currently requires SpiderMonkey, that's overkill) and the&#010;server hosting module.&#010;&#010;These changes should simplify the code base a bit and bring significant&#010;performance improvements as well. It'd be nice to have another release at&#010;some point... perhaps on one of the next holiday breaks if I get enough&#010;spare time again, or if others would like to help...&#010;&#010;HTH&#010;&#010;- Jean-Sebastien&#010;&#010;
</pre>
</div>
</content>
</entry>
</feed>
