<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>dev@chemistry.apache.org Archives</title>
<link rel="self" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/?format=atom"/>
<link href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/"/>
<id>http://mail-archives.apache.org/mod_mbox/chemistry-dev/</id>
<updated>2013-05-19T14:29:23Z</updated>
<entry>
<title>Re: [discussion] OpenCMIS release</title>
<author><name>Mark Streit &lt;mcs130@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAK-66_k4bUkDEW+yD9dN=A1fmCTvR-OV5EN50BH+qdv7JsJvtA@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAK-66_k4bUkDEW+yD9dN=A1fmCTvR-OV5EN50BH+qdv7JsJvtA@mail-gmail-com%3e</id>
<updated>2013-05-19T11:39:11Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Obviously I am not a voting member but would like to ask:&#010;&#010;Will the samples/documentation be updated to cover the JSON browser binding&#010;(CMIS 1.1) and the Type Mutability (also CMIS 1.1).   Primarily the&#010;http://chemistry.apache.org/java/developing/guide.html and the samples&#010;bundled in the source code from the SVN /trunk?&#010;&#010;I assume it will just take some time given all the development work on CMIS&#010;1.1 that you're all doing.&#010;&#010;We are heavy users of OpenCMIS and are looking forward to these new&#010;features.  (obviously realizing that that server vendor implementations&#010;have to support this :-) )&#010;&#010;Thanks for all the great work.&#010;&#010;Mark&#010;&#010;On Tue, May 14, 2013 at 10:21 AM, Florian Müller &lt;fmui@apache.org&gt; wrote:&#010;&#010;&gt; Hi,&#010;&gt;&#010;&gt; What do you think about releasing OpenCMIS 0.9.0?&#010;&gt; The CMIS 1.1 implementation is complete for all bindings. The overall&#010;&gt; performance has been improved and there are no major issues.&#010;&gt; I think it's a good time to cut a release.&#010;&gt;&#010;&gt; - Florian&#010;&gt;&#010;&gt;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: svn commit: r1483889 [1/3] - in /chemistry/opencmis/trunk: ./ chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/ap...</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c519770FA.7090109@apache.org%3e"/>
<id>urn:uuid:%3c519770FA-7090109@apache-org%3e</id>
<updated>2013-05-18T12:15:54Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
The @since tag is usually for the library version and this is the &#010;specification version. I have also adapted the JavaDoc configuration in &#010;the main pom.xml to recognize this custom tag and format it nicely.&#010;The @cmis tag might avoid confusion later when OpenCMIS reaches the &#010;versions 1.0 and 1.1.&#010;But if there is consensus to use @since here, I'm fine with that.&#010;&#010;- Florian&#010;&#010;&gt; This is extremely useful (and a lot of work thanks) but maybe we could&#010;&gt; use a standard Javadoc tag that tools will pick up and display nicely,&#010;&gt; like:&#010;&gt;&#010;&gt;   @since CMIS 1.0&#010;&gt;   @since CMIS 1.1&#010;&gt;&#010;&gt; A quick sed -i could do the change on all the files at once.&#010;&gt;&#010;&gt; Florent&#010;&gt;&#010;&gt; On Fri, May 17, 2013 at 6:05 PM,&lt;fmui@apache.org&gt;  wrote:&#010;&gt;&gt; more JavaDoc&#010;&gt;&#010;&gt;&gt; @@ -61,60 +61,80 @@ public interface CmisObjectProperties {&#010;&gt;&gt;       /**&#010;&gt;&gt;        * Returns the name of this CMIS object (CMIS property&#010;&gt;&gt;        *&lt;code&gt;cmis:name&lt;/code&gt;).&#010;&gt;&gt; +     *&#010;&gt;&gt; +     * @cmis 1.0&#010;&gt;&gt;        */&#010;&gt;&gt;       String getName();&#010;&gt;&gt;&#010;&gt;&gt;       /**&#010;&gt;&gt;        * Returns the description of this CMIS object (CMIS property&#010;&gt;&gt;        *&lt;code&gt;cmis:description&lt;/code&gt;).&#010;&gt;&gt; +     *&#010;&gt;&gt; +     * @cmis 1.1&#010;&gt;&gt;        */&#010;&gt;&gt;       String getDescription();&#010;&gt;&gt;&#010;&gt;&#010;&gt;&#010;&gt; --&#010;&gt; Florent Guillaume, Director of R&amp;D, Nuxeo&#010;&gt; Open Source, Java EE based, Enterprise Content Management (ECM)&#010;&gt; http://www.nuxeo.com   http://www.nuxeo.org   +33 1 40 33 79 87&#010;&gt;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: svn commit: r1483889 [1/3] - in /chemistry/opencmis/trunk: ./ chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/ap...</title>
<author><name>Florent Guillaume &lt;fg@nuxeo.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAF-4BpM-42A5fNCBKry6YoW05PLz_1X+JGevOS_XntcX1wNKcA@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAF-4BpM-42A5fNCBKry6YoW05PLz_1X+JGevOS_XntcX1wNKcA@mail-gmail-com%3e</id>
<updated>2013-05-18T11:52:39Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
This is extremely useful (and a lot of work thanks) but maybe we could&#010;use a standard Javadoc tag that tools will pick up and display nicely,&#010;like:&#010;&#010; @since CMIS 1.0&#010; @since CMIS 1.1&#010;&#010;A quick sed -i could do the change on all the files at once.&#010;&#010;Florent&#010;&#010;On Fri, May 17, 2013 at 6:05 PM,  &lt;fmui@apache.org&gt; wrote:&#010;&gt; more JavaDoc&#010;&#010;&gt; @@ -61,60 +61,80 @@ public interface CmisObjectProperties {&#010;&gt;      /**&#010;&gt;       * Returns the name of this CMIS object (CMIS property&#010;&gt;       * &lt;code&gt;cmis:name&lt;/code&gt;).&#010;&gt; +     *&#010;&gt; +     * @cmis 1.0&#010;&gt;       */&#010;&gt;      String getName();&#010;&gt;&#010;&gt;      /**&#010;&gt;       * Returns the description of this CMIS object (CMIS property&#010;&gt;       * &lt;code&gt;cmis:description&lt;/code&gt;).&#010;&gt; +     *&#010;&gt; +     * @cmis 1.1&#010;&gt;       */&#010;&gt;      String getDescription();&#010;&gt;&#010;&#010;&#010;--&#010;Florent Guillaume, Director of R&amp;D, Nuxeo&#010;Open Source, Java EE based, Enterprise Content Management (ECM)&#010;http://www.nuxeo.com   http://www.nuxeo.org   +33 1 40 33 79 87&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: kCMISSessionAllowUntrustedSSLCertificate</title>
<author><name>&quot;Eberlein, Peter&quot; &lt;peter.eberlein@sap.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cAD6CAFE1-9BE2-4C3F-BC9E-7D87CF79A3E0@sap.com%3e"/>
<id>urn:uuid:%3cAD6CAFE1-9BE2-4C3F-BC9E-7D87CF79A3E0@sap-com%3e</id>
<updated>2013-05-17T17:08:30Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
There are certainly use cases for self-signed certificates (althoug no good ones from a security&#010;perspective). But as I said, the Objective-CMIs lib perfectly supports these use cases in&#010;the authentication provider, there is no need to extend the HTTPRequest classes by an additional&#010;parameter. So the right place to implement such a feature is in an authentication provider&#010;and if there is concern that developers might struggle doing so we could either provide sample&#010;code for this or enhance the default provider (which I obviously would not prefer, but this&#010;is still the better option as you can completely swap out this (dangerous) provider and get&#010;back to a secure system).&#010;&#010;How about that for a proposal?&#010;&#010;Peter&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>RE: kCMISSessionAllowUntrustedSSLCertificate</title>
<author><name>&quot;Florentine, George&quot; &lt;George.Florentine@flatironssolutions.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cD0FBC87BF2331546B46CD3BC6BEDA1E274FFD3F40E@pyramidx64.flatironssolutions.com%3e"/>
<id>urn:uuid:%3cD0FBC87BF2331546B46CD3BC6BEDA1E274FFD3F40E@pyramidx64-flatironssolutions-com%3e</id>
<updated>2013-05-17T15:55:10Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
I'd agree with Mike's assessment of the market drivers. We've seen the same kind of market&#010;pressure in some work we've done in this space. Lots of developers and IT shops will use self&#010;signed certs in dev environments. Any implementation that demands valid SSL certs will have&#010;trouble getting deployed and adopted in the real world. At least, that's been our experience&#010;for SDK level tooling we've done around remoting CMS capabilities to Android and iOS clients.&#010;&#010;&#010;thx,&#010;&#010;g&#010;&#010;&#010;George Florentine &#010;VP, Engineering&#010;&#010;&#010;Office:&#010;+1.303.542.5173&#010;Mobile:&#010;+1.303.669.8628&#010;Fax:&#010;+1.303.544.0522&#010;&#010;&#010;&#010;&#010;&#010;www.FlatironsSolutions.com&#010;George.Florentine@FlatironsSolutions.com&#010;&#010;&#010;&#010;-----Original Message-----&#010;From: Mike Hatfield [mailto:mike.hatfield@alfresco.com] &#010;Sent: Friday, May 17, 2013 8:34 AM&#010;To: dev@chemistry.apache.org&#010;Cc: objective-cmis@googlegroups.com&#010;Subject: Re: kCMISSessionAllowUntrustedSSLCertificate&#010;&#010;Hi Peter,&#010;&#010;The primary driver for this flag is to support app deployments for development environments&#010;where the developers are building server-side applications (rather than mobile clients) and&#010;using self-signed SSL certificates. The vast majority of these engineers just aren't skilled&#010;in, nor tooled-up to implement *any* sort of iOS development, let alone to code and deploy&#010;a new authentication provider in a library wrapped in a library wrapped in an app.&#010;&#010;At Alfresco, we received many requests for our "Alfresco Mobile" app to support this scenario.&#010;Whilst our app exposes this setting via user preferences, we were mindful that this is far&#010;from ideal from a security standpoint - but had to weigh that against strong commercial drivers.&#010;That's why this behaviour has been designed to be off by default and must very explicitly&#010;be switched on during session creation; something app developers can choose to not expose&#010;at all should they wish.&#010;&#010;I believe not having this feature available at all would severely limit the usefulness of&#010;any app built upon Objective-CMIS and, I fear, therefore similarly limit interest in the platform.&#010;&#010;Regards,&#010;Mike&#010;-- &#010;Mike Hatfield&#010;Lead Engineer, Mobile Apps&#010;Alfresco Software, Inc.&#010;&#010;On 17 May 2013, at 13:54, "Eberlein, Peter" &lt;peter.eberlein@sap.com&gt; wrote:&#010;&#010;&gt; Hi Peter,&#010;&gt; &#010;&gt; I noticed the new session parameter, kCMISSessionAllowUntrustedSSLCertificate, that you&#010;introduced. If set, server certificate validation is skipped so SSL connections to untrusted&#010;servers can be established.&#010;&gt; &#010;&gt; I don't think that we should have such a parameter. The world is already insecure enough&#010;without encouraging people to deactivate essential security settings. If there is a need to&#010;accept untrusted server certificates temporarily, like during development, than this can easily&#010;be done by providing a custom authentication provider. This was already possible before this&#010;change, without extending the standard implementation with insecure code. Or did I miss something?&#010;I would feel a lot better if this whole "feature" was removed again and whoever needs to do&#010;such messy things does them in own code in a custom authentication provider.&#010;&gt; &#010;&gt; Or is it just me who is overly sensitive here? What does everyone else think?&#010;&gt; &#010;&gt; Peter&#010;&gt; &#010;&gt; &#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: kCMISSessionAllowUntrustedSSLCertificate</title>
<author><name>Mike Hatfield &lt;mike.hatfield@alfresco.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c7E16FFF9-917A-493E-8DBA-4C025D78176C@alfresco.com%3e"/>
<id>urn:uuid:%3c7E16FFF9-917A-493E-8DBA-4C025D78176C@alfresco-com%3e</id>
<updated>2013-05-17T14:34:09Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Peter,&#010;&#010;The primary driver for this flag is to support app deployments for development environments&#010;where the developers are building server-side applications (rather than mobile clients) and&#010;using self-signed SSL certificates. The vast majority of these engineers just aren't skilled&#010;in, nor tooled-up to implement *any* sort of iOS development, let alone to code and deploy&#010;a new authentication provider in a library wrapped in a library wrapped in an app.&#010;&#010;At Alfresco, we received many requests for our "Alfresco Mobile" app to support this scenario.&#010;Whilst our app exposes this setting via user preferences, we were mindful that this is far&#010;from ideal from a security standpoint - but had to weigh that against strong commercial drivers.&#010;That's why this behaviour has been designed to be off by default and must very explicitly&#010;be switched on during session creation; something app developers can choose to not expose&#010;at all should they wish.&#010;&#010;I believe not having this feature available at all would severely limit the usefulness of&#010;any app built upon Objective-CMIS and, I fear, therefore similarly limit interest in the platform.&#010;&#010;Regards,&#010;Mike&#010;-- &#010;Mike Hatfield&#010;Lead Engineer, Mobile Apps&#010;Alfresco Software, Inc.&#010;&#010;On 17 May 2013, at 13:54, "Eberlein, Peter" &lt;peter.eberlein@sap.com&gt; wrote:&#010;&#010;&gt; Hi Peter,&#010;&gt; &#010;&gt; I noticed the new session parameter, kCMISSessionAllowUntrustedSSLCertificate, that you&#010;introduced. If set, server certificate validation is skipped so SSL connections to untrusted&#010;servers can be established.&#010;&gt; &#010;&gt; I don't think that we should have such a parameter. The world is already insecure enough&#010;without encouraging people to deactivate essential security settings. If there is a need to&#010;accept untrusted server certificates temporarily, like during development, than this can easily&#010;be done by providing a custom authentication provider. This was already possible before this&#010;change, without extending the standard implementation with insecure code. Or did I miss something?&#010;I would feel a lot better if this whole "feature" was removed again and whoever needs to do&#010;such messy things does them in own code in a custom authentication provider.&#010;&gt; &#010;&gt; Or is it just me who is overly sensitive here? What does everyone else think?&#010;&gt; &#010;&gt; Peter&#010;&gt; &#010;&gt; &#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: kCMISSessionAllowUntrustedSSLCertificate</title>
<author><name>Peter Schmidt &lt;peter.schmidt@alfresco.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAFzZK1aNxyzEnmmUzeNpe5+DFy8EjG5RJgxEvHhKQAW1_hHvrw@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAFzZK1aNxyzEnmmUzeNpe5+DFy8EjG5RJgxEvHhKQAW1_hHvrw@mail-gmail-com%3e</id>
<updated>2013-05-17T13:42:55Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Peter&#010;many thanks for your comments. As I am about to leave Alfresco in less than&#010;a week I would like to pass this question on to Mike Hatfield (cc'd)&#010;&#010;Kind regards&#010;Peter&#010;&#010;&#010;On 17 May 2013 13:54, Eberlein, Peter &lt;peter.eberlein@sap.com&gt; wrote:&#010;&#010;&gt;  Hi Peter,&#010;&gt;&#010;&gt;  I noticed the new session parameter,&#010;&gt; kCMISSessionAllowUntrustedSSLCertificate, that you introduced. If set,&#010;&gt; server certificate validation is skipped so SSL connections to untrusted&#010;&gt; servers can be established.&#010;&gt;&#010;&gt;  I don't think that we should have such a parameter. The world is already&#010;&gt; insecure enough without encouraging people to deactivate essential security&#010;&gt; settings. If there is a need to accept untrusted server certificates *&#010;&gt; temporarily*, like during development, than this can easily be done by&#010;&gt; providing a custom authentication provider. This was already possible&#010;&gt; before this change, without extending the standard implementation with&#010;&gt; insecure code. Or did I miss something? I would feel a lot better if this&#010;&gt; whole "feature" was removed again and whoever needs to do such messy things&#010;&gt; does them in own code in a custom authentication provider.&#010;&gt;&#010;&gt;  Or is it just me who is overly sensitive here? What does everyone else&#010;&gt; think?&#010;&gt;&#010;&gt;  Peter&#010;&gt;&#010;&gt;&#010;&gt;&#010;&#010;&#010;-- &#010;Kind regards&#010;Peter&#010;&#010;-----------&#010;*Peter Schmidt*&#010;*Alfresco Software Ltd.*&#010;*UK: 07748 185496*&#010;*Int.: +44 7748 185496*&#010;*Skype: pweschmidt*&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>kCMISSessionAllowUntrustedSSLCertificate</title>
<author><name>&quot;Eberlein, Peter&quot; &lt;peter.eberlein@sap.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c9FAC356C8627E0429B4A37F6E3D39B802F508E88@DEWDFEMB10B.global.corp.sap%3e"/>
<id>urn:uuid:%3c9FAC356C8627E0429B4A37F6E3D39B802F508E88@DEWDFEMB10B-global-corp-sap%3e</id>
<updated>2013-05-17T12:54:48Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Peter,&#010;&#010;I noticed the new session parameter, kCMISSessionAllowUntrustedSSLCertificate, that you introduced.&#010;If set, server certificate validation is skipped so SSL connections to untrusted servers can&#010;be established.&#010;&#010;I don't think that we should have such a parameter. The world is already insecure enough without&#010;encouraging people to deactivate essential security settings. If there is a need to accept&#010;untrusted server certificates temporarily, like during development, than this can easily be&#010;done by providing a custom authentication provider. This was already possible before this&#010;change, without extending the standard implementation with insecure code. Or did I miss something?&#010;I would feel a lot better if this whole "feature" was removed again and whoever needs to do&#010;such messy things does them in own code in a custom authentication provider.&#010;&#010;Or is it just me who is overly sensitive here? What does everyone else think?&#010;&#010;Peter&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Updated] (CMIS-652) Method CMISService::getFolderParent() throws a fatal error</title>
<author><name>&quot;Daniel Peraza (JIRA)&quot; &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12645367.1367294789252.337655.1368771436851@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12645367-1367294789252-337655-1368771436851@arcas%3e</id>
<updated>2013-05-17T06:17:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-652?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Daniel Peraza updated CMIS-652:&#010;-------------------------------&#010;&#010;    Attachment: cmis_repository_wrapper.php&#010;&#010;Patch for cmis_repository_wrapper.php&#010;                &#010;&gt; Method CMISService::getFolderParent() throws a fatal error&#010;&gt; ----------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-652&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-652&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Bug&#010;&gt;          Components: cmis-phplib&#010;&gt;    Affects Versions: PHPCMIS 0.1, PHPCMIS 0.2&#010;&gt;         Environment: Ubuntu 12.10 x64, Apache Server 2.2.22, PHP 5.4&#010;&gt;            Reporter: Daniel Peraza&#010;&gt;            Assignee: Richard McKnight&#010;&gt;              Labels: patch&#010;&gt;             Fix For: PHPCMIS 0.1, PHPCMIS 0.2&#010;&gt;&#010;&gt;         Attachments: cmis_repository_wrapper.php&#010;&gt;&#010;&gt;   Original Estimate: 0.5h&#010;&gt;  Remaining Estimate: 0.5h&#010;&gt;&#010;&gt; On line 852 of cmis_repository_wrapper.php, there is an invocation to {code}extractObjectEntry(){code},&#010;which is not implemented in the class, nor its parent, which is causing a fatal error in PHP.&#010;&gt; It should be changed to {code}CMISRepositoryWrapper::extractObjectFeed($ret-&gt;body){code}&#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: [discussion] OpenCMIS release</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c811ab7221692dae22ea91d71a910cfc3-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJWWAgwXnUHXVNUVlpATA==-webmailer2@server01.webmailer.hosteurope.de%3e"/>
<id>urn:uuid:%3c811ab7221692dae22ea91d71a910cfc3-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJWWAgwXnUHXVNUVlpATA==-webmailer2@server01-webmailer-hosteurope-de%3e</id>
<updated>2013-05-16T10:18:39Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
 I'll send you a summary of the changes and prepare the website for the &#010; release.&#010;&#010; - Florian&#010;&#010;&#010;&gt; +1, sounds good to me.&#010;&gt;&#010;&gt; I can probably do it over the weekend, with some overflow into next&#010;&gt; week.&#010;&gt;&#010;&gt; Can someone write a little blurb for the release and update the&#010;&gt; relevant bit of the site in staging?&#010;&gt;&#010;&gt; Keep you posted,&#010;&gt;&#010;&gt; Gab&#010;&gt;&#010;&gt; On 16 May 2013 12:09, Florian Müller  wrote:&#010;&gt;  There haven't been any objections. I assume we have consensus.&#010;&gt;&#010;&gt;  @Gab: Would you please run the release?&#010;&gt;&#010;&gt;  Thanks,&#010;&gt;&#010;&gt;  Florian&#010;&gt;&#010;&gt;   +1 for a 0.9.0 release.&#010;&gt;&#010;&gt;  - Gi&#010;&gt;&#010;&gt;  On Tuesday, May 14, 2013 at 10:11 AM, Florent Guillaume wrote:&#010;&gt;&#010;&gt;   +1 thanks for all the changes.&#010;&gt;&#010;&gt;  Florent&#010;&gt;&#010;&gt;  On Tue, May 14, 2013 at 4:21 PM, Florian Müller  wrote:&#010;&gt;  &gt; Hi,&#010;&gt;  &gt;&#010;&gt;  &gt; What do you think about releasing OpenCMIS 0.9.0?&#010;&gt;  &gt; The CMIS 1.1 implementation is complete for all bindings. The&#010;&gt; overall&#010;&gt;  &gt; performance has been improved and there are no major issues.&#010;&gt;  &gt; I think it's a good time to cut a release.&#010;&gt;  &gt;&#010;&gt;  &gt; - Florian&#010;&gt;&#010;&gt;  --&#010;&gt;  Florent Guillaume, Director of R&amp;D, Nuxeo&#010;&gt;  Open Source, Java EE based, Enterprise Content Management (ECM)&#010;&gt;  http://www.nuxeo.com [4] http://www.nuxeo.org [5] +33 1 40 33 79 87&#010;&gt; [6]&#010;&gt;&#010;&gt; --&#010;&gt;&#010;&gt; Gabriele Columbro | Principal Architect, Consulting Services&#010;&gt;  twitter @mindthegabz&#010;&gt;&#010;&gt;  [7]  [8]  [9]  [10]  [11]  [12]&#010;&gt;&#010;&gt;  [13]&#010;&gt;&#010;&gt;  [14]&#010;&gt;&#010;&gt; Links:&#010;&gt; ------&#010;&gt; [1] mailto:fmui@apache.org&#010;&gt; [2] mailto:fmui@apache.org&#010;&gt; [3] mailto:fmui@apache.org&#010;&gt; [4] http://www.nuxeo.com&#010;&gt; [5] http://www.nuxeo.org&#010;&gt; [6] http://webmailer.hosteurope.de/tel:%2B33%201%2040%2033%2079%2087&#010;&gt; [7] http://www.alfresco.com/&#010;&gt; [8] http://www.facebook.com/alfrescosoftware&#010;&gt; [9] http://twitter.com/alfresco&#010;&gt; [10] http://blogs.alfresco.com/&#010;&gt; [11] http://www.linkedin.com/company/alfresco&#010;&gt; [12] http://www.youtube.com/alfresco101&#010;&gt; [13] http://university.alfresco.com/ACE.html&#010;&gt; [14] http://www.youtube.com/alfresco101&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: [discussion] OpenCMIS release</title>
<author><name>Gabriele Columbro &lt;gabriele.columbro@alfresco.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAMZX+EP+amzapREUrD_UJR8tjHDp37m-nUUAJvXkcD_qj89ZjA@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAMZX+EP+amzapREUrD_UJR8tjHDp37m-nUUAJvXkcD_qj89ZjA@mail-gmail-com%3e</id>
<updated>2013-05-16T10:14:14Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
+1, sounds good to me.&#010;&#010;I can probably do it over the weekend, with some overflow into next week.&#010;&#010;Can someone write a little blurb for the release and update the relevant&#010;bit of the site in staging?&#010;&#010;Keep you posted,&#010;&#010;Gab&#010;&#010;&#010;On 16 May 2013 12:09, Florian Müller &lt;fmui@apache.org&gt; wrote:&#010;&#010;&gt; There haven't been any objections. I assume we have consensus.&#010;&gt;&#010;&gt; @Gab: Would you please run the release?&#010;&gt;&#010;&gt;&#010;&gt; Thanks,&#010;&gt;&#010;&gt; Florian&#010;&gt;&#010;&gt;&#010;&gt;  +1 for a 0.9.0 release.&#010;&gt;&gt;&#010;&gt;&gt; - Gi&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt; On Tuesday, May 14, 2013 at 10:11 AM, Florent Guillaume wrote:&#010;&gt;&gt;&#010;&gt;&gt;  +1 thanks for all the changes.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; Florent&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; On Tue, May 14, 2013 at 4:21 PM, Florian Müller &lt;fmui@apache.org(mailto:&#010;&gt;&gt;&gt; fmui@apache.org)&gt; wrote:&#010;&gt;&gt;&gt; &gt; Hi,&#010;&gt;&gt;&gt; &gt;&#010;&gt;&gt;&gt; &gt; What do you think about releasing OpenCMIS 0.9.0?&#010;&gt;&gt;&gt; &gt; The CMIS 1.1 implementation is complete for all bindings. The overall&#010;&gt;&gt;&gt; &gt; performance has been improved and there are no major issues.&#010;&gt;&gt;&gt; &gt; I think it's a good time to cut a release.&#010;&gt;&gt;&gt; &gt;&#010;&gt;&gt;&gt; &gt; - Florian&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; --&#010;&gt;&gt;&gt; Florent Guillaume, Director of R&amp;D, Nuxeo&#010;&gt;&gt;&gt; Open Source, Java EE based, Enterprise Content Management (ECM)&#010;&gt;&gt;&gt; http://www.nuxeo.com http://www.nuxeo.org +33 1 40 33 79 87&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&#010;&#010;&#010;-- &#010;&#010;Gabriele Columbro | Principal Architect, Consulting Services&#010;twitter @mindthegabz&#010;&#010;[image: Alfresco] &lt;http://www.alfresco.com/&gt; [image:&#010;Facebook]&lt;http://www.facebook.com/alfrescosoftware&gt; [image:&#010;Twitter] &lt;http://twitter.com/alfresco&gt; [image:&#010;Feed]&lt;http://blogs.alfresco.com/&gt; [image:&#010;LinkedIn] &lt;http://www.linkedin.com/company/alfresco&gt; [image:&#010;YouTube]&lt;http://www.youtube.com/alfresco101&gt;&#010;&#010;&lt;http://university.alfresco.com/ACE.html&gt;&#010;&#010;&#010;&lt;http://www.youtube.com/alfresco101&gt;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: [discussion] OpenCMIS release</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c95aa6e83ddebb97f7d6909aa165dc84b-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9ZUF0WWlloB11LX15ZLkQBWVJfSVBcUA8=-webmailer2@server01.webmailer.hosteurope.de%3e"/>
<id>urn:uuid:%3c95aa6e83ddebb97f7d6909aa165dc84b-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9ZUF0WWlloB11LX15ZLkQBWVJfSVBcUA8=-webmailer2@server01-webmailer-hosteurope-de%3e</id>
<updated>2013-05-16T10:09:47Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
 There haven't been any objections. I assume we have consensus.&#010;&#010; @Gab: Would you please run the release?&#010;&#010;&#010; Thanks,&#010;&#010; Florian&#010;&#010;&#010;&gt; +1 for a 0.9.0 release.&#010;&gt;&#010;&gt; - Gi&#010;&gt;&#010;&gt;&#010;&gt; On Tuesday, May 14, 2013 at 10:11 AM, Florent Guillaume wrote:&#010;&gt;&#010;&gt;&gt; +1 thanks for all the changes.&#010;&gt;&gt;&#010;&gt;&gt; Florent&#010;&gt;&gt;&#010;&gt;&gt; On Tue, May 14, 2013 at 4:21 PM, Florian Müller &lt;fmui@apache.org &#010;&gt;&gt; (mailto:fmui@apache.org)&gt; wrote:&#010;&gt;&gt; &gt; Hi,&#010;&gt;&gt; &gt;&#010;&gt;&gt; &gt; What do you think about releasing OpenCMIS 0.9.0?&#010;&gt;&gt; &gt; The CMIS 1.1 implementation is complete for all bindings. The &#010;&gt;&gt; overall&#010;&gt;&gt; &gt; performance has been improved and there are no major issues.&#010;&gt;&gt; &gt; I think it's a good time to cut a release.&#010;&gt;&gt; &gt;&#010;&gt;&gt; &gt; - Florian&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt; --&#010;&gt;&gt; Florent Guillaume, Director of R&amp;D, Nuxeo&#010;&gt;&gt; Open Source, Java EE based, Enterprise Content Management (ECM)&#010;&gt;&gt; http://www.nuxeo.com http://www.nuxeo.org +33 1 40 33 79 87&#010;&gt;&gt;&#010;&gt;&gt;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Updated] (CMIS-657) Memory leak in DotCMIS</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12647741.1368624126667.331036.1368695237733@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12647741-1368624126667-331036-1368695237733@arcas%3e</id>
<updated>2013-05-16T09:07:17Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Florian Müller updated CMIS-657:&#010;--------------------------------&#010;&#010;    Fix Version/s: DotCMIS 0.6&#010;    &#010;&gt; Memory leak in DotCMIS&#010;&gt; ----------------------&#010;&gt;&#010;&gt;                 Key: CMIS-657&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-657&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Bug&#010;&gt;          Components: dotcmis&#010;&gt;    Affects Versions: DotCMIS 0.5&#010;&gt;            Reporter: Björn&#010;&gt;            Assignee: Florian Müller&#010;&gt;             Fix For: DotCMIS 0.6&#010;&gt;&#010;&gt;&#010;&gt; I have just found a serious memory leak in dotcmis. The function "DeserializeElement"&#010;in converter.cs is leaking. I have tried to load a type definition multiple times without&#010;reusing the session object.(I have always created a new one.) The type definition contains&#010;a large set of "choices". Doing so will flood the memory. The memory leak is located in the&#010;XmlSerializer constructor. Please take a look at this article describing the issue: http://www-jo.se/f.pfleger/memoryleak&#010;Microsofts suggestion is to reuse the XmlSerializer class or to use another constructor. &#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] [Resolved] (CMIS-657) Memory leak in DotCMIS</title>
<author><name>Björn (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12647741.1368624126667.331027.1368695116157@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12647741-1368624126667-331027-1368695116157@arcas%3e</id>
<updated>2013-05-16T09:05:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Björn resolved CMIS-657.&#010;------------------------&#010;&#010;    Resolution: Fixed&#010;&#010;Bug is solved. Thank you very much Florian!&#010;                &#010;&gt; Memory leak in DotCMIS&#010;&gt; ----------------------&#010;&gt;&#010;&gt;                 Key: CMIS-657&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-657&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Bug&#010;&gt;          Components: dotcmis&#010;&gt;    Affects Versions: DotCMIS 0.5&#010;&gt;            Reporter: Björn&#010;&gt;            Assignee: Florian Müller&#010;&gt;&#010;&gt; I have just found a serious memory leak in dotcmis. The function "DeserializeElement"&#010;in converter.cs is leaking. I have tried to load a type definition multiple times without&#010;reusing the session object.(I have always created a new one.) The type definition contains&#010;a large set of "choices". Doing so will flood the memory. The memory leak is located in the&#010;XmlSerializer constructor. Please take a look at this article describing the issue: http://www-jo.se/f.pfleger/memoryleak&#010;Microsofts suggestion is to reuse the XmlSerializer class or to use another constructor. &#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: Memory leak in DotCMIS</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cc59c22e656d5d6d83a488ff63b81dcf0-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJWWAgwXnUHXVNfV1dDRg==-webmailer2@server04.webmailer.hosteurope.de%3e"/>
<id>urn:uuid:%3cc59c22e656d5d6d83a488ff63b81dcf0-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJWWAgwXnUHXVNfV1dDRg==-webmailer2@server04-webmailer-hosteurope-de%3e</id>
<updated>2013-05-15T14:40:23Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
 Hi Björn,&#010;&#010; I have checked in a fix for this issue.&#010; It works here for me. Could you please verify if it solves your &#010; problem? If so, we can close the JIRA issue.&#010;&#010;&#010; Thanks,&#010;&#010; Florian&#010;&#010;&#010;&gt; Hello,&#010;&gt;&#010;&gt; I have just found a serious memory leak in dotcmis. The function&#010;&gt; "DeserializeElement" in converter.cs is leaking. I have tried to load&#010;&gt; a type definition multiple times without reusing the session &#010;&gt; object.(I&#010;&gt; have always created a new one.) The type definition contains a large&#010;&gt; set of "choices". Doing so will flood the memory. The memory leak is&#010;&gt; located in the XmlSerializer constructor. Please take a look at this&#010;&gt; article describing the issue: http://www-jo.se/f.pfleger/memoryleak&#010;&gt; Microsofts suggestion is to reuse the XmlSerializer class or to use&#010;&gt; another constructor.&#010;&gt;&#010;&gt; Thank You&#010;&gt; Björn&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Assigned] (CMIS-657) Memory leak in DotCMIS</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12647741.1368624126667.323642.1368624317916@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12647741-1368624126667-323642-1368624317916@arcas%3e</id>
<updated>2013-05-15T13:25:17Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Florian Müller reassigned CMIS-657:&#010;-----------------------------------&#010;&#010;    Assignee: Florian Müller&#010;    &#010;&gt; Memory leak in DotCMIS&#010;&gt; ----------------------&#010;&gt;&#010;&gt;                 Key: CMIS-657&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-657&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Bug&#010;&gt;          Components: dotcmis&#010;&gt;    Affects Versions: DotCMIS 0.5&#010;&gt;            Reporter: Björn&#010;&gt;            Assignee: Florian Müller&#010;&gt;&#010;&gt; I have just found a serious memory leak in dotcmis. The function "DeserializeElement"&#010;in converter.cs is leaking. I have tried to load a type definition multiple times without&#010;reusing the session object.(I have always created a new one.) The type definition contains&#010;a large set of "choices". Doing so will flood the memory. The memory leak is located in the&#010;XmlSerializer constructor. Please take a look at this article describing the issue: http://www-jo.se/f.pfleger/memoryleak&#010;Microsofts suggestion is to reuse the XmlSerializer class or to use another constructor. &#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] (CMIS-657) Memory leak in DotCMIS</title>
<author><name>Björn (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12647741.1368624126667.323627.1368624197450@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12647741-1368624126667-323627-1368624197450@arcas%3e</id>
<updated>2013-05-15T13:23:17Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Björn created CMIS-657:&#010;--------------------------&#010;&#010;             Summary: Memory leak in DotCMIS&#010;                 Key: CMIS-657&#010;                 URL: https://issues.apache.org/jira/browse/CMIS-657&#010;             Project: Chemistry&#010;          Issue Type: Bug&#010;          Components: dotcmis&#010;    Affects Versions: DotCMIS 0.5&#010;            Reporter: Björn&#010;&#010;&#010;I have just found a serious memory leak in dotcmis. The function "DeserializeElement" in converter.cs&#010;is leaking. I have tried to load a type definition multiple times without reusing the session&#010;object.(I have always created a new one.) The type definition contains a large set of "choices".&#010;Doing so will flood the memory. The memory leak is located in the XmlSerializer constructor.&#010;Please take a look at this article describing the issue: http://www-jo.se/f.pfleger/memoryleak&#010;Microsofts suggestion is to reuse the XmlSerializer class or to use another constructor. &#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: Memory leak in DotCMIS</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c6ba0759666f3f008b42dcd8745533f30-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJWWAgwXnUHXVNfXFlAQw==-webmailer2@server04.webmailer.hosteurope.de%3e"/>
<id>urn:uuid:%3c6ba0759666f3f008b42dcd8745533f30-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJWWAgwXnUHXVNfXFlAQw==-webmailer2@server04-webmailer-hosteurope-de%3e</id>
<updated>2013-05-15T13:13:36Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
 Hi Björn,&#010;&#010; Thanks for that hint.&#010; Please open an bug report in the Apache JIRA [1].&#010;&#010; Thanks,&#010;&#010; Florian&#010;&#010;&#010; [1] https://issues.apache.org/jira/browse/CMIS&#010;&#010;&#010;&gt; Hello,&#010;&gt;&#010;&gt; I have just found a serious memory leak in dotcmis. The function&#010;&gt; "DeserializeElement" in converter.cs is leaking. I have tried to load&#010;&gt; a type definition multiple times without reusing the session &#010;&gt; object.(I&#010;&gt; have always created a new one.) The type definition contains a large&#010;&gt; set of "choices". Doing so will flood the memory. The memory leak is&#010;&gt; located in the XmlSerializer constructor. Please take a look at this&#010;&gt; article describing the issue: http://www-jo.se/f.pfleger/memoryleak&#010;&gt; Microsofts suggestion is to reuse the XmlSerializer class or to use&#010;&gt; another constructor.&#010;&gt;&#010;&gt; Thank You&#010;&gt; Björn&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Memory leak in DotCMIS</title>
<author><name>Björn Kremer &lt;bkr@patorg.de&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c51938404.4080906@patorg.de%3e"/>
<id>urn:uuid:%3c51938404-4080906@patorg-de%3e</id>
<updated>2013-05-15T12:48:04Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hello,&#010;&#010;I have just found a serious memory leak in dotcmis. The function &#010;"DeserializeElement" in converter.cs is leaking. I have tried to load a &#010;type definition multiple times without reusing the session object.(I &#010;have always created a new one.) The type definition contains a large set &#010;of "choices". Doing so will flood the memory. The memory leak is located &#010;in the XmlSerializer constructor. Please take a look at this article &#010;describing the issue: http://www-jo.se/f.pfleger/memoryleak Microsofts &#010;suggestion is to reuse the XmlSerializer class or to use another &#010;constructor.&#010;&#010;Thank You&#010;Björn&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Resolved] (CMIS-647) Exceptions when trying to access SharePoint 2013 folders</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12643589.1366379364384.323194.1368618676079@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12643589-1366379364384-323194-1368618676079@arcas%3e</id>
<updated>2013-05-15T11:51:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Florian Müller resolved CMIS-647.&#010;---------------------------------&#010;&#010;       Resolution: Fixed&#010;    Fix Version/s: DotCMIS 0.6&#010;    &#010;&gt; Exceptions when trying to access SharePoint 2013 folders&#010;&gt; --------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-647&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-647&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Bug&#010;&gt;          Components: dotcmis&#010;&gt;    Affects Versions: DotCMIS 0.5&#010;&gt;         Environment: Windows 7 Professional&#010;&gt;            Reporter: Thomas Rogall&#010;&gt;            Assignee: Florian Müller&#010;&gt;             Fix For: DotCMIS 0.6&#010;&gt;&#010;&gt;         Attachments: Fiddler_Raw_GetChildren.txt, screenshot-1.jpg, screenshot-2.jpg,&#010;screenshot-3.jpg&#010;&gt;&#010;&gt;&#010;&gt; I am trying to retrieve objects within a SharePoint 2013 library, using "IFolder.GetChildren(…)"&#010;&gt; In plain libraries this is working OK. But when the SharePoint library contains folders,&#010;the function always raises a NULL-Pointer-Exceptions.&#010;&gt; After removing all folders from the SharePoint library the function works correct again.&#010;&gt; The NULL pointer exception is caused in "binding-caches.cs", line 220, see stacktrace&#010;below.&#010;&gt; Note 1: Using the CMIS Workbench (same connection parameters and same credentials) documents&#010;AND folders are listed correctly (!)&#010;&gt; Note 2: I already tried to add some code which simply avoids NULL-arguments. This does&#010;NOT help,  just an empty result will be returned.&#010;&gt; Note 3: A similar behavior occurs when trying to access objects using "ISession.GetObjectByPath()"&#010;--&gt; rootFolder and documents are OK, subfolders will raise exceptions.&#010;&gt; Sample output from my test program:&#010;&gt; Path '/' --&gt; Folder: Meine erste Bibliothek&#010;&gt; Path '/NOTEBOOK.JPG' --&gt; Picture: NOTEBOOK.JPG&#010;&gt; Path '/AAA' --&gt; EXCEPTION: Received Atom entry is not a CMIS entry!&#010;&gt; Path '/AAA/' --&gt; EXCEPTION: Received Atom entry is not a CMIS entry!&#010;&gt; Path '/AAA/BBB' --&gt; EXCEPTION: Received Atom entry is not a CMIS entry!&#010;&gt; Path '/AAA/BBB/JUDGESCH.GIF' --&gt; Document: JUDGESCH.GIF&#010;&gt; Stacktrace:&#010;&gt;    bei System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)&#010;&gt;    bei System.Collections.Generic.Dictionary`2.FindEntry(TKey key)&#010;&gt;    bei System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue&amp; value)&#010;&gt;    bei DotCMIS.Util.LRUCache`2.Remove(K key) in C:\EIS\CMIS\Chemistry\src\util.cs:Zeile&#010;104.&#010;&gt;    bei DotCMIS.Binding.LruCacheLevel.Remove(String key) in C:\EIS\CMIS\Chemistry\src\binding\binding-caches.cs:Zeile&#010;551.&#010;&gt;    bei DotCMIS.Binding.Cache.Remove(String[] keys) in C:\EIS\CMIS\Chemistry\src\binding\binding-caches.cs:Zeile&#010;220.&#010;&gt;    bei DotCMIS.Binding.AtomPub.LinkCache.RemoveLinks(String repositoryId, String id)&#010;in C:\EIS\CMIS\Chemistry\src\binding\atompub\atompub-linkcache.cs:Zeile 126.&#010;&gt;    bei DotCMIS.Binding.AtomPub.AbstractAtomPubService.RemoveLinks(String repositoryId,&#010;String id) in C:\EIS\CMIS\Chemistry\src\binding\atompub\atompub.cs:Zeile 199.&#010;&gt;    bei DotCMIS.Binding.AtomPub.NavigationService.GetChildren(String repositoryId, String&#010;folderId, String filter, String orderBy, Nullable`1 includeAllowableActions, Nullable`1 includeRelationships,&#010;String renditionFilter, Nullable`1 includePathSegment, Nullable`1 maxItems, Nullable`1 skipCount,&#010;IExtensionsData extension) in C:\EIS\CMIS\Chemistry\src\binding\atompub\atompub.cs:Zeile 1080.&#010;&gt;    bei DotCMIS.Client.Impl.Folder.&lt;&gt;c__DisplayClass4.&lt;GetChildren&gt;b__3(Int64&#010;maxNumItems, Int64 skipCount) in C:\EIS\CMIS\Chemistry\src\client\client-objects.cs:Zeile&#010;1252.&#010;&gt;    bei DotCMIS.Client.Impl.PageFetcher`1.FetchNextPage(Int64 skipCount) in C:\EIS\CMIS\Chemistry\src\client\client-utils.cs:Zeile&#010;563.&#010;&gt;    bei DotCMIS.Client.Impl.AbstractEnumerator`1.GetCurrentPage() in C:\EIS\CMIS\Chemistry\src\client\client-utils.cs:Zeile&#010;528.&#010;&gt;    bei DotCMIS.Client.Impl.CollectionEnumerator`1.MoveNext() in C:\EIS\CMIS\Chemistry\src\client\client-utils.cs:Zeile&#010;608.&#010;&gt;    bei TestClient.MainForm.DumpRepository(ISession session) in C:\EIS\CMIS\Chemistry\TestClient\MainForm.cs:Zeile&#010;139.&#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] [Resolved] (CMIS-649) NTLM over HTTP authentication</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12644296.1366786482270.322888.1368613635921@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12644296-1366786482270-322888-1368613635921@arcas%3e</id>
<updated>2013-05-15T10:27:15Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Florian Müller resolved CMIS-649.&#010;---------------------------------&#010;&#010;       Resolution: Fixed&#010;    Fix Version/s: DotCMIS 0.5&#010;         Assignee: Florian Müller&#010;    &#010;&gt; NTLM over HTTP authentication&#010;&gt; -----------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-649&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-649&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: dotcmis&#010;&gt;         Environment: SharePoint 2013 with NTLM over HTTP authentication&#010;&gt;            Reporter: Nicolas Raoul&#010;&gt;            Assignee: Florian Müller&#010;&gt;             Fix For: DotCMIS 0.5&#010;&gt;&#010;&gt;&#010;&gt; Implement NTLM over HTTP authentication.&#010;&gt; Same for OpenCMIS-client: https://issues.apache.org/jira/browse/CMIS-648&#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] [Resolved] (CMIS-632) SetContentStream issue</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12634633.1362066739824.322631.1368608956346@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12634633-1362066739824-322631-1368608956346@arcas%3e</id>
<updated>2013-05-15T09:09:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-632?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Florian Müller resolved CMIS-632.&#010;---------------------------------&#010;&#010;    Resolution: Fixed&#010;      Assignee: Florian Müller&#010;    &#010;&gt; SetContentStream issue&#010;&gt; ----------------------&#010;&gt;&#010;&gt;                 Key: CMIS-632&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-632&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Bug&#010;&gt;          Components: dotcmis&#010;&gt;    Affects Versions: DotCMIS 0.5&#010;&gt;         Environment: Windows&#010;&gt;            Reporter: Yannick MOLINET&#010;&gt;            Assignee: Florian Müller&#010;&gt;            Priority: Blocker&#010;&gt;             Fix For: DotCMIS 0.6&#010;&gt;&#010;&gt;&#010;&gt; I have a strange issue when I try to update more files with SetContentStream.&#010;&gt; First file is correctly updated, but second is block and wait for SetContentStream End.&#010;&gt; This occur only on second update and occur when the new contentstream is read by Refresh().&#010;If I call SetContentStream without refresh, I'm blocked when I try to update properties (for&#010;example). &#010;&gt; In debug, I could see that the wait occur on AbstractAtomPubService.GetObjectInternal()&#010;when &#010;&gt; HttpUtils.Response resp = Read(url); is called. This method call httputils.Invoke, the&#010;wait occur on HttpWebResponse response = (HttpWebResponse)conn.GetResponse();&#010;&gt; Thanks for help,&#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: [discussion] OpenCMIS release</title>
<author><name>Gi Lee &lt;gi.lee@ziaconsulting.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c53B830C58C084304BAD196CFD80D5592@ziaconsulting.com%3e"/>
<id>urn:uuid:%3c53B830C58C084304BAD196CFD80D5592@ziaconsulting-com%3e</id>
<updated>2013-05-15T04:42:32Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
+1 for a 0.9.0 release.&#010;&#010;- Gi  &#010;&#010;&#010;On Tuesday, May 14, 2013 at 10:11 AM, Florent Guillaume wrote:&#010;&#010;&gt; +1 thanks for all the changes.&#010;&gt;  &#010;&gt; Florent&#010;&gt;  &#010;&gt; On Tue, May 14, 2013 at 4:21 PM, Florian Müller &lt;fmui@apache.org (mailto:fmui@apache.org)&gt;&#010;wrote:&#010;&gt; &gt; Hi,&#010;&gt; &gt;  &#010;&gt; &gt; What do you think about releasing OpenCMIS 0.9.0?&#010;&gt; &gt; The CMIS 1.1 implementation is complete for all bindings. The overall&#010;&gt; &gt; performance has been improved and there are no major issues.&#010;&gt; &gt; I think it's a good time to cut a release.&#010;&gt; &gt;  &#010;&gt; &gt; - Florian&#010;&gt;  &#010;&gt;  &#010;&gt;  &#010;&gt; --  &#010;&gt; Florent Guillaume, Director of R&amp;D, Nuxeo&#010;&gt; Open Source, Java EE based, Enterprise Content Management (ECM)&#010;&gt; http://www.nuxeo.com http://www.nuxeo.org +33 1 40 33 79 87&#010;&gt;  &#010;&gt;  &#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: [discussion] OpenCMIS release</title>
<author><name>Florent Guillaume &lt;fg@nuxeo.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAF-4BpM+XaJCVRugznzmRK=Lvz-GuiLrT=tVdh1Q8_LzhCT=bg@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAF-4BpM+XaJCVRugznzmRK=Lvz-GuiLrT=tVdh1Q8_LzhCT=bg@mail-gmail-com%3e</id>
<updated>2013-05-14T16:11:21Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
+1 thanks for all the changes.&#010;&#010;Florent&#010;&#010;On Tue, May 14, 2013 at 4:21 PM, Florian Müller &lt;fmui@apache.org&gt; wrote:&#010;&gt; Hi,&#010;&gt;&#010;&gt; What do you think about releasing OpenCMIS 0.9.0?&#010;&gt; The CMIS 1.1 implementation is complete for all bindings. The overall&#010;&gt; performance has been improved and there are no major issues.&#010;&gt; I think it's a good time to cut a release.&#010;&gt;&#010;&gt; - Florian&#010;&gt;&#010;&#010;&#010;&#010;-- &#010;Florent Guillaume, Director of R&amp;D, Nuxeo&#010;Open Source, Java EE based, Enterprise Content Management (ECM)&#010;http://www.nuxeo.com   http://www.nuxeo.org   +33 1 40 33 79 87&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Commented] (CMIS-621) Context and servlet path can not be overridden when using a reverse proxy</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12627869.1358355881467.316797.1368546436587@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12627869-1358355881467-316797-1368546436587@arcas%3e</id>
<updated>2013-05-14T15:47:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;    [ https://issues.apache.org/jira/browse/CMIS-621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=13657145#comment-13657145&#010;] &#010;&#010;Florian Müller commented on CMIS-621:&#010;-------------------------------------&#010;&#010;It's kind of there. If a servlet filter in front of OpenCMIS adds the servlet attribute "org.apache.chemistry.opencmis.baseurl"&#010;and provides the base URL, OpenCMIS uses this URL to generate URLs in CMIS responses.&#010;What OpenCMIS doesn't provide at the moment is such a filter. But the implementation is trivial&#010;if you know how to construct a specific base URL. &#010;What's also missing is documentation...&#010;                &#010;&gt; Context and servlet path can not be overridden when using a reverse proxy&#010;&gt; -------------------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-621&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-621&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: opencmis-server&#010;&gt;    Affects Versions: OpenCMIS 0.8.0&#010;&gt;            Reporter: Gavin Cornwell&#010;&gt;            Assignee: Florian Müller&#010;&gt;&#010;&gt; CMIS-500 introduced a filter to allow the AtomPub binding to be used with a reverse proxy&#010;but the context and servlet paths can not be configured.&#010;&gt; If the app server is using a path of /app/cmisatom the proxy also has to.&#010;&gt; Ideally it would be possible to rewrite the path as well as the host 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] [Commented] (CMIS-621) Context and servlet path can not be overridden when using a reverse proxy</title>
<author><name>&quot;Mike Hatfield (JIRA)&quot; &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12627869.1358355881467.316615.1368544756519@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12627869-1358355881467-316615-1368544756519@arcas%3e</id>
<updated>2013-05-14T15:19:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;    [ https://issues.apache.org/jira/browse/CMIS-621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=13657127#comment-13657127&#010;] &#010;&#010;Mike Hatfield commented on CMIS-621:&#010;------------------------------------&#010;&#010;Florian - where are we with this issue please? Can we get this into 0.9.0?&#010;                &#010;&gt; Context and servlet path can not be overridden when using a reverse proxy&#010;&gt; -------------------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-621&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-621&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: opencmis-server&#010;&gt;    Affects Versions: OpenCMIS 0.8.0&#010;&gt;            Reporter: Gavin Cornwell&#010;&gt;            Assignee: Florian Müller&#010;&gt;&#010;&gt; CMIS-500 introduced a filter to allow the AtomPub binding to be used with a reverse proxy&#010;but the context and servlet paths can not be configured.&#010;&gt; If the app server is using a path of /app/cmisatom the proxy also has to.&#010;&gt; Ideally it would be possible to rewrite the path as well as the host 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] [Resolved] (CMIS-655) Chunked transfer encoding effectively disables browser caching</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12646574.1367999579186.316447.1368542715830@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12646574-1367999579186-316447-1368542715830@arcas%3e</id>
<updated>2013-05-14T14:45:15Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-655?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Florian Müller resolved CMIS-655.&#010;---------------------------------&#010;&#010;       Resolution: Fixed&#010;    Fix Version/s: OpenCMIS 0.9.0&#010;    &#010;&gt; Chunked transfer encoding effectively disables browser caching&#010;&gt; --------------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-655&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-655&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: opencmis-server&#010;&gt;    Affects Versions: OpenCMIS 0.9.0 beta 1&#010;&gt;            Reporter: Carlo Sciolla&#010;&gt;             Fix For: OpenCMIS 0.9.0&#010;&gt;&#010;&gt;&#010;&gt; OpenCMIS never sets the Content-length on HTTP responses, letting the app server use&#010;the default strategy of sending them with a "Transfer-encoding: chunked" header. &#010;&gt; While it's valid HTTP 1.1, it's not fully supported by e.g. some browsers and cache middleware,&#010;which handle such responses fine but fail to cache them. &#010;&gt; Please provide to either set the content-length at least in the getContentStream calls,&#010;or allow users to hook into the HTTP serialization process.&#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] [Resolved] (CMIS-656) Provide extension points for the protocol handling logic</title>
<author><name>Florian Müller (JIRA) &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12647017.1368196339398.316445.1368542596698@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12647017-1368196339398-316445-1368542596698@arcas%3e</id>
<updated>2013-05-14T14:43:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Florian Müller resolved CMIS-656.&#010;---------------------------------&#010;&#010;       Resolution: Fixed&#010;    Fix Version/s: OpenCMIS 0.9.0&#010;    &#010;&gt; Provide extension points for the protocol handling logic&#010;&gt; --------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-656&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-656&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: opencmis-server&#010;&gt;    Affects Versions: OpenCMIS 0.9.0 beta 1&#010;&gt;            Reporter: Carlo Sciolla&#010;&gt;             Fix For: OpenCMIS 0.9.0&#010;&gt;&#010;&gt;         Attachments: noreflection.patch&#010;&gt;&#010;&gt;&#010;&gt; Chemistry takes full control over the serialization process, including all details of&#010;the underlying HTTP communication. Extension points or APIs in this process would allow implementors&#010;to leverage greater flexibility to fine tune the serialization process, or to implement extensions&#010;over the standard CMIS.&#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: Chunked transfer encoding</title>
<author><name>Carlo Sciolla &lt;carlo.sciolla@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAJLgDnBxFzdY7rd-FEj1kqnkJk9riKgneXLmwyt0hUV40H4ojg@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAJLgDnBxFzdY7rd-FEj1kqnkJk9riKgneXLmwyt0hUV40H4ojg@mail-gmail-com%3e</id>
<updated>2013-05-14T14:41:17Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
2013/5/14 Florian Müller &lt;fmui@apache.org&gt;&#010;&#010;&gt; Can we close CMIS-656 then?&#010;&#010;&#010;Sure, go ahead!&#010;c.&#010;&#010;&#010;-- &#010;Carlo Sciolla&#010;&#010;--==(A)==--&#010;Linux User #372086&#010;My personal blog: http://www.skuro.tk&#010;Follow me on twitter: http://twitter.com/skuro&#010;&lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010; &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;http://nl.linkedin.com/in/carlosciolla&#010;--==(A)==--&#010;&#010;Product Lead at Backbase - Next Generation Portal Software for Financials &amp;&#010;Large Enterprises (http://www.backbase.com)&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: [discussion] OpenCMIS release</title>
<author><name>&quot;Huebel, Jens&quot; &lt;j.huebel@sap.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c2767A70F8371284B98513C2B582F84B157A9B196@DEWDFEMB16A.global.corp.sap%3e"/>
<id>urn:uuid:%3c2767A70F8371284B98513C2B582F84B157A9B196@DEWDFEMB16A-global-corp-sap%3e</id>
<updated>2013-05-14T14:38:09Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
+1 to go for another release...&#010;&#010;Jens&#010;&#010;&#010;&#010;On 14.05.13 16:21, "Florian Müller" &lt;fmui@apache.org&gt; wrote:&#010;&#010;&gt; Hi,&#010;&gt;&#010;&gt; What do you think about releasing OpenCMIS 0.9.0?&#010;&gt; The CMIS 1.1 implementation is complete for all bindings. The overall&#010;&gt; performance has been improved and there are no major issues.&#010;&gt; I think it's a good time to cut a release.&#010;&gt;&#010;&gt; - Florian&#010;&gt;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Chunked transfer encoding</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3ce940f0a71d610a1675061fad3bff5471-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJXWAgwXnUHXVBZXV1FQg==-webmailer2@server03.webmailer.hosteurope.de%3e"/>
<id>urn:uuid:%3ce940f0a71d610a1675061fad3bff5471-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJXWAgwXnUHXVBZXV1FQg==-webmailer2@server03-webmailer-hosteurope-de%3e</id>
<updated>2013-05-14T14:37:27Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
 Can we close CMIS-656 then?&#010;&#010; - Florian&#010;&#010;&#010;&gt; Hi Florian,&#010;&gt;&#010;&gt; I just reviewed the code, and I think it's quite a great leap forward &#010;&gt; :-)&#010;&gt; It includes everything we discussed above.&#010;&gt;&#010;&gt; Thanks for the quick roundtrip,&#010;&gt; c.&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Chunked transfer encoding</title>
<author><name>Carlo Sciolla &lt;carlo.sciolla@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAJLgDnB6V_Q9nrLHDw1xZ5-_qANTjimuG3aDGHgoYGTrPx64mg@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAJLgDnB6V_Q9nrLHDw1xZ5-_qANTjimuG3aDGHgoYGTrPx64mg@mail-gmail-com%3e</id>
<updated>2013-05-14T14:29:59Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Florian,&#010;&#010;I just reviewed the code, and I think it's quite a great leap forward :-)&#010;It includes everything we discussed above.&#010;&#010;Thanks for the quick roundtrip,&#010;c.&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[discussion] OpenCMIS release</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c55857956b73cbbb8f73983eb8d005fb2-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJXWAgwXnUHXVBZXlxBRQ==-webmailer2@server03.webmailer.hosteurope.de%3e"/>
<id>urn:uuid:%3c55857956b73cbbb8f73983eb8d005fb2-EhVcXl9JQQFXRwQFDQkEXR0wfgZLV15fQUBFBEFYXS9aBFgIVQkjAVVfDwkJFE8AXVpYSlJXWAgwXnUHXVBZXlxBRQ==-webmailer2@server03-webmailer-hosteurope-de%3e</id>
<updated>2013-05-14T14:21:40Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
 Hi,&#010;&#010; What do you think about releasing OpenCMIS 0.9.0?&#010; The CMIS 1.1 implementation is complete for all bindings. The overall &#010; performance has been improved and there are no major issues.&#010; I think it's a good time to cut a release.&#010;&#010; - Florian&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Chunked transfer encoding</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c518F95FE.2000108@apache.org%3e"/>
<id>urn:uuid:%3c518F95FE-2000108@apache-org%3e</id>
<updated>2013-05-12T13:15:42Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Carlo,&#010;&#010;I have refactored the server code.&#010;Please have a look.&#010;&#010;- Florian&#010;&#010;&#010;&gt; Hi Florian,&#010;&gt;&#010;&gt; the core of my change isn't in the Dispatcher itself. Discarding final&#010;&gt; classes, private constructors and static methods is the main objective&#010;&gt; of that change, as it basically enable class inheritance. Pluggability&#010;&gt; of different behavior can indeed be achieved by exposing the Dispatcher,&#010;&gt; but it would still be using the reflection over static methods combo as&#010;&gt; before, which alone breaks four out of five features of OO&#010;&gt; &lt;http://en.wikipedia.org/wiki/Object-oriented_programming&gt;[1].&#010;&gt;&#010;&gt; On the runtime efficiency, I'd be happy to store some 100 more class&#010;&gt; definition if that will spare some CPU cycles due to reflection. We're&#010;&gt; talking of one-off tiny memory allocation VS tiny performance&#010;&gt; degradation per every single call here.&#010;&gt;&#010;&gt; c.&#010;&gt;&#010;&gt; [1] please don't take me for an OO fanatic, I'm much more of a FP guy&#010;&gt; these days. I just think that OO is better than procedural, especially&#010;&gt; on an OO platforms such as Java&#010;&gt;&#010;&gt;&#010;&gt; 2013/5/10 Florian Müller &lt;fmui@apache.org &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;     Got it. I thought you were heading in a different direction.&#010;&gt;&#010;&gt;     How is that different from making the current Dispatch object&#010;&gt;     protected or adding a protected method that wraps the&#010;&gt;     Dispatch.addResource() method?&#010;&gt;&#010;&gt;     Extensibility-wise they would be equal. Your version only adds a bit&#010;&gt;     more syntactic sugar. It would also need a bit more memory because&#010;&gt;     we would have to add about 100 additional classes (AtomPub +&#010;&gt;     Browser) and runtime objects.&#010;&gt;&#010;&gt;     - Florian&#010;&gt;&#010;&gt;&#010;&gt;         Is it next week already? :-)&#010;&gt;&#010;&gt;         Jokes apart, I had one hour to spare for this topic now that&#010;&gt;         it's still&#010;&gt;         hot, and produced the patch you can see attached to&#010;&gt;         CMIS-656&lt;https://issues.__apache.org/jira/browse/CMIS-__656&#010;&gt;         &lt;https://issues.apache.org/jira/browse/CMIS-656&gt;&gt;.&#010;&gt;&#010;&gt;         That's a translation of the current Chemistry dispatch logic to&#010;&gt;         abandon&#010;&gt;         reflection, static methods, private constructors, and final classes.&#010;&gt;&#010;&gt;         The flow is quite the same as before, with the servlet&#010;&gt;         initialization logic&#010;&gt;         registering the default bindings by adding concrete instances of a&#010;&gt;         ServiceCall interface into a local registry. At request serving&#010;&gt;         time the&#010;&gt;         registered ServiceCall is retrieved and its service() method&#010;&gt;         invoked. The&#010;&gt;         invocation logic is now a mere INVOKEINTERFACE JVM instruction&#010;&gt;         instead of&#010;&gt;         the previous reflection trick (tiny performance improvement here).&#010;&gt;&#010;&gt;         Please note that the ServiceCall interface was already a hidden&#010;&gt;         contract&#010;&gt;         that all service calls had to implement to be addressable by the&#010;&gt;         Method&#010;&gt;         created by the Dispatcher.&#010;&gt;&#010;&gt;         As a last note, CmisAtomPubServlet also exposes a protected&#010;&gt;         registerDispatch(resource, method, ServiceCall) to allow&#010;&gt;         implementors to&#010;&gt;         override the default logic.&#010;&gt;&#010;&gt;         That's it for now. Please note that as the Dispatcher is shared&#010;&gt;         across the&#010;&gt;         AtomPub and Browser bindings, and as only the AtomPub was properly&#010;&gt;         refactored, that patch will break your build.&#010;&gt;&#010;&gt;         Looking forward to hear your comments,&#010;&gt;         c.&#010;&gt;&#010;&gt;&#010;&gt;         2013/5/10 Carlo Sciolla&lt;carlo.sciolla@gmail.__com&#010;&gt;         &lt;mailto:carlo.sciolla@gmail.com&gt;&gt;&#010;&gt;&#010;&gt;             Hi Florian,&#010;&gt;&#010;&gt;             will do, I'll hopefully have a patch for you to review next&#010;&gt;             week.&#010;&gt;&#010;&gt;             c.&#010;&gt;&#010;&gt;&#010;&gt;             2013/5/10 Florian Müller&lt;fmui@apache.org&#010;&gt;             &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                 Hi Carlo,&#010;&gt;&#010;&gt;                 Please go ahead and make a proposal. Submit a patch that&#010;&gt;                 sketches your&#010;&gt;                 ideas. It doesn't have to be complete and running.&#010;&gt;                 It's easier to talk about something concrete rather than&#010;&gt;                 discussing about&#010;&gt;                 generic topics.&#010;&gt;&#010;&gt;                 - Florian&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;                    Hi Florian,&#010;&gt;&#010;&gt;                     it's not my intent to start a flame war, and we can&#010;&gt;                     continue offline if&#010;&gt;                     you&#010;&gt;                     want. To the interest of the list, I'll just write&#010;&gt;                     here some of the&#010;&gt;                     reasons&#010;&gt;                     behind my previous comment, and wait until I have&#010;&gt;                     some patch ready to&#010;&gt;                     prove&#010;&gt;                     my points before bothering you guys again with my&#010;&gt;                     ramblings.&#010;&gt;&#010;&gt;                     I understand your remark on the spec compliance, and&#010;&gt;                     that interop is at&#010;&gt;                     stake when you allow the protocol details to be&#010;&gt;                     modified. BUT...&#010;&gt;&#010;&gt;                     - There's much more to HTTP than what CMIS&#010;&gt;                     specifies, and Chemistry is&#010;&gt;                     currently in charge of handling the transport&#010;&gt;                     protocol on top of which&#010;&gt;                     CMIS&#010;&gt;                     expresses itself.&#010;&gt;&#010;&gt;                     - No extensibility means that backporting of fixes&#010;&gt;                     might be a no-go. For&#010;&gt;                     example, if I now upgrade Chemistry to the latest&#010;&gt;                     trunk my code doesn't&#010;&gt;                     compile anymore. Subclassing would be the best way&#010;&gt;                     to integrate your&#010;&gt;                     changes in the version I use, but that's not&#010;&gt;                     available to me.&#010;&gt;&#010;&gt;                     - The CMIS spec is (hopefully!) not fixed and will&#010;&gt;                     evolve with time. OO&#010;&gt;                     could help greatly e.g. to support different&#010;&gt;                     versions of the protocol&#010;&gt;                     with&#010;&gt;                     a single serve instance, which is painful to&#010;&gt;                     implement cleanly following&#010;&gt;                     the current code approach.&#010;&gt;&#010;&gt;                     - Spec extensions are not evil per se. While they&#010;&gt;                     might indeed break&#010;&gt;                     interoperability, they're also a way to open the&#010;&gt;                     protocol itself to&#010;&gt;                     experiments and eventually drive a community based&#010;&gt;                     evolution of it.&#010;&gt;&#010;&gt;                     - Interop is not always the top priority. CMIS and&#010;&gt;                     Chemistry provide a&#010;&gt;                     lot&#010;&gt;                     of value OOTB, and I don't see why proprietary&#010;&gt;                     extensions should be&#010;&gt;                     denied&#010;&gt;                     by principle. Why shouldn't I have the possibility&#010;&gt;                     to write a custom&#010;&gt;                     extension to improve e.g. content delivery capabilities&#010;&gt;                     (getContentStreamByPath, anyone?), while still&#010;&gt;                     retaining full protocol&#010;&gt;                     compliance for B2B data exchange?&#010;&gt;&#010;&gt;                     If you made it to here, a big thank you for your&#010;&gt;                     patience.&#010;&gt;&#010;&gt;                     Hope this helps,&#010;&gt;                     c.&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;                     2013/5/8 Florian Müller&lt;fmui@apache.org&#010;&gt;                     &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                        Hi Carlo,&#010;&gt;&#010;&gt;                         This code is not meant to be extensible. The&#010;&gt;                         CMIS standard is fixed.&#010;&gt;                         There&#010;&gt;                         will be no additional services or operations.&#010;&gt;                         Also, the semantics of the&#010;&gt;                         parameters will not change or have to be&#010;&gt;                         changed. Any extensions would&#010;&gt;                         bypass the specification, which would be a pain&#010;&gt;                         for clients and doesn't&#010;&gt;                         help interoperability.&#010;&gt;                         All methods that handle requests are stateless,&#010;&gt;                         isolated pieces of code.&#010;&gt;                         OO doesn't help here. And the alternative to&#010;&gt;                         reflections would be a 120&#010;&gt;                         lines if-statement. I can't see the advantage of&#010;&gt;                         that.&#010;&gt;&#010;&gt;                         Also, this part is considered internal code and&#010;&gt;                         may change at any time.&#010;&gt;                         OpenCMIS provides a lot of extensibility on the&#010;&gt;                         client side and keeping&#010;&gt;                         the&#010;&gt;                         interfaces compatible does hurt sometimes. I&#010;&gt;                         don't see a real use case&#010;&gt;                         to&#010;&gt;                         have that pain also on the server side. If there&#010;&gt;                         is something missing or&#010;&gt;                         wrong, we usually fix it pretty quick - as you&#010;&gt;                         have seen.&#010;&gt;&#010;&gt;                         Having said that, if you have a great idea how&#010;&gt;                         to refactor that code,&#010;&gt;                         feel&#010;&gt;                         free to provide a patch.&#010;&gt;&#010;&gt;&#010;&gt;                         - Florian&#010;&gt;&#010;&gt;&#010;&gt;                         Am Mittwoch, den 08.05.2013, 16:05 +0200 schrieb&#010;&gt;                         Carlo Sciolla&lt;&#010;&gt;                         carlo.sciolla@gmail.com&#010;&gt;                         &lt;mailto:carlo.sciolla@gmail.com&gt;&gt;:&#010;&gt;&#010;&gt;                            Hi Florian,&#010;&gt;&#010;&gt;                             thanks for your quick commit, I will&#010;&gt;                             experiment a bit with it and let&#010;&gt;                             you&#010;&gt;                             know what comes out of it. I do already have&#010;&gt;                             some initial comments&#010;&gt;                             anyway:&#010;&gt;&#010;&gt;                             - I see you only addressed the browser&#010;&gt;                             bindings implementation. While I&#010;&gt;                             can&#010;&gt;                             see the reason behind it, I think it won't&#010;&gt;                             hurt to also apply a similar&#010;&gt;                             logic to the AtomPub binding&#010;&gt;&#010;&gt;                             - as I'm stuck with v0.6.0, I'm looking into&#010;&gt;                             ways to backport or&#010;&gt;                             integrate&#010;&gt;                             your code in my app. The current logic for&#010;&gt;                             method dispatch in AtomPub&#010;&gt;                             goes&#010;&gt;                             against extensibility (and some object&#010;&gt;                             oriented design principles, IMO)&#010;&gt;                             and&#010;&gt;                             while for the time being I can work around&#010;&gt;                             it, would you guys consider&#010;&gt;                             refactoring the dispatch logic to make use&#010;&gt;                             of non-final classes / no&#010;&gt;                             reflection / public constructors?&#010;&gt;&#010;&gt;                             Thanks,&#010;&gt;                             c.&#010;&gt;&#010;&gt;&#010;&gt;                             2013/5/8 Florian Müller&lt;fmui@apache.org&#010;&gt;                             &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                                Hi Carlo,&#010;&gt;&#010;&gt;                                 I've added some new code. There are now&#010;&gt;                                 three interfaces that let you&#010;&gt;                                 control the server headers.&#010;&gt;                                 The ContentStream object that is&#010;&gt;                                 returned by getContentStream() must&#010;&gt;                                 implement the interface(s) to trigger&#010;&gt;                                 the behavior:&#010;&gt;&#010;&gt;                                 ContentLengthContentStream - Sets the&#010;&gt;                                 Content-Length header and turns&#010;&gt;                                 chunking off.&#010;&gt;&#010;&gt;                                 LastModifiedContentStream - Sets the&#010;&gt;                                 Last-Modified header and respects&#010;&gt;                                 the&#010;&gt;                                 If-Modified-Since header.&#010;&gt;&#010;&gt;                                 CacheHeaderContentStream - Sets the&#010;&gt;                                 Cache-Control header, the Expires&#010;&gt;                                 header, and the ETag header and respects&#010;&gt;                                 the If-None-Match header.&#010;&gt;&#010;&gt;&#010;&gt;                                 Please let me know if that works for you.&#010;&gt;&#010;&gt;&#010;&gt;                                 - Florian&#010;&gt;&#010;&gt;&#010;&gt;                                    Hi there, sorry for the late reply.&#010;&gt;&#010;&gt;&#010;&gt;                                     2013/5/7 Florian&#010;&gt;                                     Müller&lt;fmui@apache.org&#010;&gt;                                     &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                                        That is surprising. Chunked&#010;&gt;                                     encoding isn't really exotic.&#010;&gt;&#010;&gt;&#010;&gt;                                            Definitely, but browsers are&#010;&gt;                                         always there to remind us that world&#010;&gt;                                         class&#010;&gt;&#010;&gt;                                            standards are nothing&#010;&gt;                                         different from regional social&#010;&gt;                                         conventions,&#010;&gt;&#010;&gt;                                     are&#010;&gt;                                     they?&#010;&gt;&#010;&gt;&#010;&gt;                                        Could you please open an&#010;&gt;                                     Improvement issue and add a few details.&#010;&gt;                                     I'll&#010;&gt;&#010;&gt;                                        look into it.&#010;&gt;&#010;&gt;                                            Thanks, here it&#010;&gt;                                         is&lt;https://issues.apache.org/*__*****&#010;&gt;                                         &lt;https://issues.apache.org/******&gt;&lt;https://issues.apache.__org/****&#010;&gt;                                         &lt;https://issues.apache.org/****&gt;&gt;&#010;&gt;&#010;&gt;                                         jira/browse/CMIS-655&lt;https://*__*issues.apache.org/**jira/**&#010;&gt;                                         &lt;http://issues.apache.org/**jira/**&gt;&#010;&gt;                                         browse/CMIS-655&lt;https://__issues.apache.org/**jira/__browse/CMIS-655&#010;&gt;                                         &lt;https://issues.apache.org/**jira/browse/CMIS-655&gt;&gt;&gt;&#010;&gt;&#010;&gt;                                         &lt;https://**issues.apache.org/*__*jira/browse/**CMIS-655&#010;&gt;                                         &lt;http://issues.apache.org/**jira/browse/**CMIS-655&gt;&lt;http:/__/issues.apache.org/jira/__browse/**CMIS-655&#010;&gt;                                         &lt;http://issues.apache.org/jira/browse/**CMIS-655&gt;&gt;&#010;&gt;                                         &lt;https:/**/issues.apache.org/__jira/**browse/CMIS-655&#010;&gt;                                         &lt;http://issues.apache.org/jira/**browse/CMIS-655&gt;&lt;https:/__/issues.apache.org/jira/__browse/CMIS-655&#010;&gt;                                         &lt;https://issues.apache.org/jira/browse/CMIS-655&gt;&gt;&#010;&gt;&#010;&gt;&#010;&gt;                                          &gt;.&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;             --&#010;&gt;             Carlo Sciolla&#010;&gt;&#010;&gt;             --==(A)==--&#010;&gt;             Linux User #372086&#010;&gt;             My personal blog: http://www.skuro.tk&#010;&gt;             Follow me on twitter: http://twitter.com/skuro&#010;&gt;             &lt;http://twitter.com/skuro&gt;Fork me on Github:&#010;&gt;             http://github.com/skuro&#010;&gt;             &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;&gt;             http://nl.linkedin.com/in/__carlosciolla&#010;&gt;             &lt;http://nl.linkedin.com/in/carlosciolla&gt;&#010;&gt;             --==(A)==--&#010;&gt;&#010;&gt;             Product Lead at Backbase - Next Generation Portal Software&#010;&gt;             for Financials&#010;&gt;             &amp;  Large Enterprises (http://www.backbase.com)&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt; --&#010;&gt; Carlo Sciolla&#010;&gt;&#010;&gt; --==(A)==--&#010;&gt; Linux User #372086&#010;&gt; My personal blog: http://www.skuro.tk&#010;&gt; Follow me on twitter: http://twitter.com/skuro&#010;&gt; &lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010;&gt; &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;&gt; http://nl.linkedin.com/in/carlosciolla&#010;&gt; --==(A)==--&#010;&gt;&#010;&gt; Product Lead at Backbase - Next Generation Portal Software for&#010;&gt; Financials &amp; Large Enterprises (http://www.backbase.com)&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Chunked transfer encoding</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c518D212C.5020802@apache.org%3e"/>
<id>urn:uuid:%3c518D212C-5020802@apache-org%3e</id>
<updated>2013-05-10T16:32:44Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Carlo,&#010;&#010;I understand what you are saying. But there are no objects here. My &#010;first version of this servlet had all methods (that were implemented at &#010;that time) in the servlet class. The original idea of the Dispatcher was &#010;only to move the code out of the servlet class.&#010;&#010;But let me play with a few things here. I'll get back to you.&#010;&#010;&#010;- Florian&#010;&#010;&#010;&gt; Hi Florian,&#010;&gt;&#010;&gt; the core of my change isn't in the Dispatcher itself. Discarding final&#010;&gt; classes, private constructors and static methods is the main objective&#010;&gt; of that change, as it basically enable class inheritance. Pluggability&#010;&gt; of different behavior can indeed be achieved by exposing the Dispatcher,&#010;&gt; but it would still be using the reflection over static methods combo as&#010;&gt; before, which alone breaks four out of five features of OO&#010;&gt; &lt;http://en.wikipedia.org/wiki/Object-oriented_programming&gt;[1].&#010;&gt;&#010;&gt; On the runtime efficiency, I'd be happy to store some 100 more class&#010;&gt; definition if that will spare some CPU cycles due to reflection. We're&#010;&gt; talking of one-off tiny memory allocation VS tiny performance&#010;&gt; degradation per every single call here.&#010;&gt;&#010;&gt; c.&#010;&gt;&#010;&gt; [1] please don't take me for an OO fanatic, I'm much more of a FP guy&#010;&gt; these days. I just think that OO is better than procedural, especially&#010;&gt; on an OO platforms such as Java&#010;&gt;&#010;&gt;&#010;&gt; 2013/5/10 Florian Müller &lt;fmui@apache.org &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;     Got it. I thought you were heading in a different direction.&#010;&gt;&#010;&gt;     How is that different from making the current Dispatch object&#010;&gt;     protected or adding a protected method that wraps the&#010;&gt;     Dispatch.addResource() method?&#010;&gt;&#010;&gt;     Extensibility-wise they would be equal. Your version only adds a bit&#010;&gt;     more syntactic sugar. It would also need a bit more memory because&#010;&gt;     we would have to add about 100 additional classes (AtomPub +&#010;&gt;     Browser) and runtime objects.&#010;&gt;&#010;&gt;     - Florian&#010;&gt;&#010;&gt;&#010;&gt;         Is it next week already? :-)&#010;&gt;&#010;&gt;         Jokes apart, I had one hour to spare for this topic now that&#010;&gt;         it's still&#010;&gt;         hot, and produced the patch you can see attached to&#010;&gt;         CMIS-656&lt;https://issues.__apache.org/jira/browse/CMIS-__656&#010;&gt;         &lt;https://issues.apache.org/jira/browse/CMIS-656&gt;&gt;.&#010;&gt;&#010;&gt;         That's a translation of the current Chemistry dispatch logic to&#010;&gt;         abandon&#010;&gt;         reflection, static methods, private constructors, and final classes.&#010;&gt;&#010;&gt;         The flow is quite the same as before, with the servlet&#010;&gt;         initialization logic&#010;&gt;         registering the default bindings by adding concrete instances of a&#010;&gt;         ServiceCall interface into a local registry. At request serving&#010;&gt;         time the&#010;&gt;         registered ServiceCall is retrieved and its service() method&#010;&gt;         invoked. The&#010;&gt;         invocation logic is now a mere INVOKEINTERFACE JVM instruction&#010;&gt;         instead of&#010;&gt;         the previous reflection trick (tiny performance improvement here).&#010;&gt;&#010;&gt;         Please note that the ServiceCall interface was already a hidden&#010;&gt;         contract&#010;&gt;         that all service calls had to implement to be addressable by the&#010;&gt;         Method&#010;&gt;         created by the Dispatcher.&#010;&gt;&#010;&gt;         As a last note, CmisAtomPubServlet also exposes a protected&#010;&gt;         registerDispatch(resource, method, ServiceCall) to allow&#010;&gt;         implementors to&#010;&gt;         override the default logic.&#010;&gt;&#010;&gt;         That's it for now. Please note that as the Dispatcher is shared&#010;&gt;         across the&#010;&gt;         AtomPub and Browser bindings, and as only the AtomPub was properly&#010;&gt;         refactored, that patch will break your build.&#010;&gt;&#010;&gt;         Looking forward to hear your comments,&#010;&gt;         c.&#010;&gt;&#010;&gt;&#010;&gt;         2013/5/10 Carlo Sciolla&lt;carlo.sciolla@gmail.__com&#010;&gt;         &lt;mailto:carlo.sciolla@gmail.com&gt;&gt;&#010;&gt;&#010;&gt;             Hi Florian,&#010;&gt;&#010;&gt;             will do, I'll hopefully have a patch for you to review next&#010;&gt;             week.&#010;&gt;&#010;&gt;             c.&#010;&gt;&#010;&gt;&#010;&gt;             2013/5/10 Florian Müller&lt;fmui@apache.org&#010;&gt;             &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                 Hi Carlo,&#010;&gt;&#010;&gt;                 Please go ahead and make a proposal. Submit a patch that&#010;&gt;                 sketches your&#010;&gt;                 ideas. It doesn't have to be complete and running.&#010;&gt;                 It's easier to talk about something concrete rather than&#010;&gt;                 discussing about&#010;&gt;                 generic topics.&#010;&gt;&#010;&gt;                 - Florian&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;                    Hi Florian,&#010;&gt;&#010;&gt;                     it's not my intent to start a flame war, and we can&#010;&gt;                     continue offline if&#010;&gt;                     you&#010;&gt;                     want. To the interest of the list, I'll just write&#010;&gt;                     here some of the&#010;&gt;                     reasons&#010;&gt;                     behind my previous comment, and wait until I have&#010;&gt;                     some patch ready to&#010;&gt;                     prove&#010;&gt;                     my points before bothering you guys again with my&#010;&gt;                     ramblings.&#010;&gt;&#010;&gt;                     I understand your remark on the spec compliance, and&#010;&gt;                     that interop is at&#010;&gt;                     stake when you allow the protocol details to be&#010;&gt;                     modified. BUT...&#010;&gt;&#010;&gt;                     - There's much more to HTTP than what CMIS&#010;&gt;                     specifies, and Chemistry is&#010;&gt;                     currently in charge of handling the transport&#010;&gt;                     protocol on top of which&#010;&gt;                     CMIS&#010;&gt;                     expresses itself.&#010;&gt;&#010;&gt;                     - No extensibility means that backporting of fixes&#010;&gt;                     might be a no-go. For&#010;&gt;                     example, if I now upgrade Chemistry to the latest&#010;&gt;                     trunk my code doesn't&#010;&gt;                     compile anymore. Subclassing would be the best way&#010;&gt;                     to integrate your&#010;&gt;                     changes in the version I use, but that's not&#010;&gt;                     available to me.&#010;&gt;&#010;&gt;                     - The CMIS spec is (hopefully!) not fixed and will&#010;&gt;                     evolve with time. OO&#010;&gt;                     could help greatly e.g. to support different&#010;&gt;                     versions of the protocol&#010;&gt;                     with&#010;&gt;                     a single serve instance, which is painful to&#010;&gt;                     implement cleanly following&#010;&gt;                     the current code approach.&#010;&gt;&#010;&gt;                     - Spec extensions are not evil per se. While they&#010;&gt;                     might indeed break&#010;&gt;                     interoperability, they're also a way to open the&#010;&gt;                     protocol itself to&#010;&gt;                     experiments and eventually drive a community based&#010;&gt;                     evolution of it.&#010;&gt;&#010;&gt;                     - Interop is not always the top priority. CMIS and&#010;&gt;                     Chemistry provide a&#010;&gt;                     lot&#010;&gt;                     of value OOTB, and I don't see why proprietary&#010;&gt;                     extensions should be&#010;&gt;                     denied&#010;&gt;                     by principle. Why shouldn't I have the possibility&#010;&gt;                     to write a custom&#010;&gt;                     extension to improve e.g. content delivery capabilities&#010;&gt;                     (getContentStreamByPath, anyone?), while still&#010;&gt;                     retaining full protocol&#010;&gt;                     compliance for B2B data exchange?&#010;&gt;&#010;&gt;                     If you made it to here, a big thank you for your&#010;&gt;                     patience.&#010;&gt;&#010;&gt;                     Hope this helps,&#010;&gt;                     c.&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;                     2013/5/8 Florian Müller&lt;fmui@apache.org&#010;&gt;                     &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                        Hi Carlo,&#010;&gt;&#010;&gt;                         This code is not meant to be extensible. The&#010;&gt;                         CMIS standard is fixed.&#010;&gt;                         There&#010;&gt;                         will be no additional services or operations.&#010;&gt;                         Also, the semantics of the&#010;&gt;                         parameters will not change or have to be&#010;&gt;                         changed. Any extensions would&#010;&gt;                         bypass the specification, which would be a pain&#010;&gt;                         for clients and doesn't&#010;&gt;                         help interoperability.&#010;&gt;                         All methods that handle requests are stateless,&#010;&gt;                         isolated pieces of code.&#010;&gt;                         OO doesn't help here. And the alternative to&#010;&gt;                         reflections would be a 120&#010;&gt;                         lines if-statement. I can't see the advantage of&#010;&gt;                         that.&#010;&gt;&#010;&gt;                         Also, this part is considered internal code and&#010;&gt;                         may change at any time.&#010;&gt;                         OpenCMIS provides a lot of extensibility on the&#010;&gt;                         client side and keeping&#010;&gt;                         the&#010;&gt;                         interfaces compatible does hurt sometimes. I&#010;&gt;                         don't see a real use case&#010;&gt;                         to&#010;&gt;                         have that pain also on the server side. If there&#010;&gt;                         is something missing or&#010;&gt;                         wrong, we usually fix it pretty quick - as you&#010;&gt;                         have seen.&#010;&gt;&#010;&gt;                         Having said that, if you have a great idea how&#010;&gt;                         to refactor that code,&#010;&gt;                         feel&#010;&gt;                         free to provide a patch.&#010;&gt;&#010;&gt;&#010;&gt;                         - Florian&#010;&gt;&#010;&gt;&#010;&gt;                         Am Mittwoch, den 08.05.2013, 16:05 +0200 schrieb&#010;&gt;                         Carlo Sciolla&lt;&#010;&gt;                         carlo.sciolla@gmail.com&#010;&gt;                         &lt;mailto:carlo.sciolla@gmail.com&gt;&gt;:&#010;&gt;&#010;&gt;                            Hi Florian,&#010;&gt;&#010;&gt;                             thanks for your quick commit, I will&#010;&gt;                             experiment a bit with it and let&#010;&gt;                             you&#010;&gt;                             know what comes out of it. I do already have&#010;&gt;                             some initial comments&#010;&gt;                             anyway:&#010;&gt;&#010;&gt;                             - I see you only addressed the browser&#010;&gt;                             bindings implementation. While I&#010;&gt;                             can&#010;&gt;                             see the reason behind it, I think it won't&#010;&gt;                             hurt to also apply a similar&#010;&gt;                             logic to the AtomPub binding&#010;&gt;&#010;&gt;                             - as I'm stuck with v0.6.0, I'm looking into&#010;&gt;                             ways to backport or&#010;&gt;                             integrate&#010;&gt;                             your code in my app. The current logic for&#010;&gt;                             method dispatch in AtomPub&#010;&gt;                             goes&#010;&gt;                             against extensibility (and some object&#010;&gt;                             oriented design principles, IMO)&#010;&gt;                             and&#010;&gt;                             while for the time being I can work around&#010;&gt;                             it, would you guys consider&#010;&gt;                             refactoring the dispatch logic to make use&#010;&gt;                             of non-final classes / no&#010;&gt;                             reflection / public constructors?&#010;&gt;&#010;&gt;                             Thanks,&#010;&gt;                             c.&#010;&gt;&#010;&gt;&#010;&gt;                             2013/5/8 Florian Müller&lt;fmui@apache.org&#010;&gt;                             &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                                Hi Carlo,&#010;&gt;&#010;&gt;                                 I've added some new code. There are now&#010;&gt;                                 three interfaces that let you&#010;&gt;                                 control the server headers.&#010;&gt;                                 The ContentStream object that is&#010;&gt;                                 returned by getContentStream() must&#010;&gt;                                 implement the interface(s) to trigger&#010;&gt;                                 the behavior:&#010;&gt;&#010;&gt;                                 ContentLengthContentStream - Sets the&#010;&gt;                                 Content-Length header and turns&#010;&gt;                                 chunking off.&#010;&gt;&#010;&gt;                                 LastModifiedContentStream - Sets the&#010;&gt;                                 Last-Modified header and respects&#010;&gt;                                 the&#010;&gt;                                 If-Modified-Since header.&#010;&gt;&#010;&gt;                                 CacheHeaderContentStream - Sets the&#010;&gt;                                 Cache-Control header, the Expires&#010;&gt;                                 header, and the ETag header and respects&#010;&gt;                                 the If-None-Match header.&#010;&gt;&#010;&gt;&#010;&gt;                                 Please let me know if that works for you.&#010;&gt;&#010;&gt;&#010;&gt;                                 - Florian&#010;&gt;&#010;&gt;&#010;&gt;                                    Hi there, sorry for the late reply.&#010;&gt;&#010;&gt;&#010;&gt;                                     2013/5/7 Florian&#010;&gt;                                     Müller&lt;fmui@apache.org&#010;&gt;                                     &lt;mailto:fmui@apache.org&gt;&gt;&#010;&gt;&#010;&gt;                                        That is surprising. Chunked&#010;&gt;                                     encoding isn't really exotic.&#010;&gt;&#010;&gt;&#010;&gt;                                            Definitely, but browsers are&#010;&gt;                                         always there to remind us that world&#010;&gt;                                         class&#010;&gt;&#010;&gt;                                            standards are nothing&#010;&gt;                                         different from regional social&#010;&gt;                                         conventions,&#010;&gt;&#010;&gt;                                     are&#010;&gt;                                     they?&#010;&gt;&#010;&gt;&#010;&gt;                                        Could you please open an&#010;&gt;                                     Improvement issue and add a few details.&#010;&gt;                                     I'll&#010;&gt;&#010;&gt;                                        look into it.&#010;&gt;&#010;&gt;                                            Thanks, here it&#010;&gt;                                         is&lt;https://issues.apache.org/*__*****&#010;&gt;                                         &lt;https://issues.apache.org/******&gt;&lt;https://issues.apache.__org/****&#010;&gt;                                         &lt;https://issues.apache.org/****&gt;&gt;&#010;&gt;&#010;&gt;                                         jira/browse/CMIS-655&lt;https://*__*issues.apache.org/**jira/**&#010;&gt;                                         &lt;http://issues.apache.org/**jira/**&gt;&#010;&gt;                                         browse/CMIS-655&lt;https://__issues.apache.org/**jira/__browse/CMIS-655&#010;&gt;                                         &lt;https://issues.apache.org/**jira/browse/CMIS-655&gt;&gt;&gt;&#010;&gt;&#010;&gt;                                         &lt;https://**issues.apache.org/*__*jira/browse/**CMIS-655&#010;&gt;                                         &lt;http://issues.apache.org/**jira/browse/**CMIS-655&gt;&lt;http:/__/issues.apache.org/jira/__browse/**CMIS-655&#010;&gt;                                         &lt;http://issues.apache.org/jira/browse/**CMIS-655&gt;&gt;&#010;&gt;                                         &lt;https:/**/issues.apache.org/__jira/**browse/CMIS-655&#010;&gt;                                         &lt;http://issues.apache.org/jira/**browse/CMIS-655&gt;&lt;https:/__/issues.apache.org/jira/__browse/CMIS-655&#010;&gt;                                         &lt;https://issues.apache.org/jira/browse/CMIS-655&gt;&gt;&#010;&gt;&#010;&gt;&#010;&gt;                                          &gt;.&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;             --&#010;&gt;             Carlo Sciolla&#010;&gt;&#010;&gt;             --==(A)==--&#010;&gt;             Linux User #372086&#010;&gt;             My personal blog: http://www.skuro.tk&#010;&gt;             Follow me on twitter: http://twitter.com/skuro&#010;&gt;             &lt;http://twitter.com/skuro&gt;Fork me on Github:&#010;&gt;             http://github.com/skuro&#010;&gt;             &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;&gt;             http://nl.linkedin.com/in/__carlosciolla&#010;&gt;             &lt;http://nl.linkedin.com/in/carlosciolla&gt;&#010;&gt;             --==(A)==--&#010;&gt;&#010;&gt;             Product Lead at Backbase - Next Generation Portal Software&#010;&gt;             for Financials&#010;&gt;             &amp;  Large Enterprises (http://www.backbase.com)&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&gt; --&#010;&gt; Carlo Sciolla&#010;&gt;&#010;&gt; --==(A)==--&#010;&gt; Linux User #372086&#010;&gt; My personal blog: http://www.skuro.tk&#010;&gt; Follow me on twitter: http://twitter.com/skuro&#010;&gt; &lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010;&gt; &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;&gt; http://nl.linkedin.com/in/carlosciolla&#010;&gt; --==(A)==--&#010;&gt;&#010;&gt; Product Lead at Backbase - Next Generation Portal Software for&#010;&gt; Financials &amp; Large Enterprises (http://www.backbase.com)&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Chunked transfer encoding</title>
<author><name>Carlo Sciolla &lt;carlo.sciolla@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAJLgDnBmE6UUb+==fR14TzHPXOzwgAdQaYP9DQVcegoVRVpzuA@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAJLgDnBmE6UUb+==fR14TzHPXOzwgAdQaYP9DQVcegoVRVpzuA@mail-gmail-com%3e</id>
<updated>2013-05-10T16:05:31Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Hi Florian,&#010;&#010;the core of my change isn't in the Dispatcher itself. Discarding final&#010;classes, private constructors and static methods is the main objective of&#010;that change, as it basically enable class inheritance. Pluggability of&#010;different behavior can indeed be achieved by exposing the Dispatcher, but&#010;it would still be using the reflection over static methods combo as before,&#010;which alone breaks four out of five features of&#010;OO&lt;http://en.wikipedia.org/wiki/Object-oriented_programming&gt;&#010;[1].&#010;&#010;On the runtime efficiency, I'd be happy to store some 100 more class&#010;definition if that will spare some CPU cycles due to reflection. We're&#010;talking of one-off tiny memory allocation VS tiny performance degradation&#010;per every single call here.&#010;&#010;c.&#010;&#010;[1] please don't take me for an OO fanatic, I'm much more of a FP guy these&#010;days. I just think that OO is better than procedural, especially on an OO&#010;platforms such as Java&#010;&#010;&#010;2013/5/10 Florian Müller &lt;fmui@apache.org&gt;&#010;&#010;&gt; Got it. I thought you were heading in a different direction.&#010;&gt;&#010;&gt; How is that different from making the current Dispatch object protected or&#010;&gt; adding a protected method that wraps the Dispatch.addResource() method?&#010;&gt;&#010;&gt; Extensibility-wise they would be equal. Your version only adds a bit more&#010;&gt; syntactic sugar. It would also need a bit more memory because we would have&#010;&gt; to add about 100 additional classes (AtomPub + Browser) and runtime objects.&#010;&gt;&#010;&gt; - Florian&#010;&gt;&#010;&gt;&#010;&gt;  Is it next week already? :-)&#010;&gt;&gt;&#010;&gt;&gt; Jokes apart, I had one hour to spare for this topic now that it's still&#010;&gt;&gt; hot, and produced the patch you can see attached to&#010;&gt;&gt; CMIS-656&lt;https://issues.**apache.org/jira/browse/CMIS-**656&lt;https://issues.apache.org/jira/browse/CMIS-656&gt;&#010;&gt;&gt; &gt;.&#010;&gt;&gt;&#010;&gt;&gt; That's a translation of the current Chemistry dispatch logic to abandon&#010;&gt;&gt; reflection, static methods, private constructors, and final classes.&#010;&gt;&gt;&#010;&gt;&gt; The flow is quite the same as before, with the servlet initialization&#010;&gt;&gt; logic&#010;&gt;&gt; registering the default bindings by adding concrete instances of a&#010;&gt;&gt; ServiceCall interface into a local registry. At request serving time the&#010;&gt;&gt; registered ServiceCall is retrieved and its service() method invoked. The&#010;&gt;&gt; invocation logic is now a mere INVOKEINTERFACE JVM instruction instead of&#010;&gt;&gt; the previous reflection trick (tiny performance improvement here).&#010;&gt;&gt;&#010;&gt;&gt; Please note that the ServiceCall interface was already a hidden contract&#010;&gt;&gt; that all service calls had to implement to be addressable by the Method&#010;&gt;&gt; created by the Dispatcher.&#010;&gt;&gt;&#010;&gt;&gt; As a last note, CmisAtomPubServlet also exposes a protected&#010;&gt;&gt; registerDispatch(resource, method, ServiceCall) to allow implementors to&#010;&gt;&gt; override the default logic.&#010;&gt;&gt;&#010;&gt;&gt; That's it for now. Please note that as the Dispatcher is shared across the&#010;&gt;&gt; AtomPub and Browser bindings, and as only the AtomPub was properly&#010;&gt;&gt; refactored, that patch will break your build.&#010;&gt;&gt;&#010;&gt;&gt; Looking forward to hear your comments,&#010;&gt;&gt; c.&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt; 2013/5/10 Carlo Sciolla&lt;carlo.sciolla@gmail.**com&lt;carlo.sciolla@gmail.com&gt;&#010;&gt;&gt; &gt;&#010;&gt;&gt;&#010;&gt;&gt;  Hi Florian,&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; will do, I'll hopefully have a patch for you to review next week.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; c.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; 2013/5/10 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;  Hi Carlo,&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; Please go ahead and make a proposal. Submit a patch that sketches your&#010;&gt;&gt;&gt;&gt; ideas. It doesn't have to be complete and running.&#010;&gt;&gt;&gt;&gt; It's easier to talk about something concrete rather than discussing&#010;&gt;&gt;&gt;&gt; about&#010;&gt;&gt;&gt;&gt; generic topics.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;   Hi Florian,&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; it's not my intent to start a flame war, and we can continue offline&#010;if&#010;&gt;&gt;&gt;&gt;&gt; you&#010;&gt;&gt;&gt;&gt;&gt; want. To the interest of the list, I'll just write here some of the&#010;&gt;&gt;&gt;&gt;&gt; reasons&#010;&gt;&gt;&gt;&gt;&gt; behind my previous comment, and wait until I have some patch ready to&#010;&gt;&gt;&gt;&gt;&gt; prove&#010;&gt;&gt;&gt;&gt;&gt; my points before bothering you guys again with my ramblings.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; I understand your remark on the spec compliance, and that interop is&#010;at&#010;&gt;&gt;&gt;&gt;&gt; stake when you allow the protocol details to be modified. BUT...&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - There's much more to HTTP than what CMIS specifies, and Chemistry is&#010;&gt;&gt;&gt;&gt;&gt; currently in charge of handling the transport protocol on top of which&#010;&gt;&gt;&gt;&gt;&gt; CMIS&#010;&gt;&gt;&gt;&gt;&gt; expresses itself.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - No extensibility means that backporting of fixes might be a no-go.&#010;&gt;&gt;&gt;&gt;&gt; For&#010;&gt;&gt;&gt;&gt;&gt; example, if I now upgrade Chemistry to the latest trunk my code doesn't&#010;&gt;&gt;&gt;&gt;&gt; compile anymore. Subclassing would be the best way to integrate your&#010;&gt;&gt;&gt;&gt;&gt; changes in the version I use, but that's not available to me.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - The CMIS spec is (hopefully!) not fixed and will evolve with time.&#010;OO&#010;&gt;&gt;&gt;&gt;&gt; could help greatly e.g. to support different versions of the protocol&#010;&gt;&gt;&gt;&gt;&gt; with&#010;&gt;&gt;&gt;&gt;&gt; a single serve instance, which is painful to implement cleanly&#010;&gt;&gt;&gt;&gt;&gt; following&#010;&gt;&gt;&gt;&gt;&gt; the current code approach.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - Spec extensions are not evil per se. While they might indeed break&#010;&gt;&gt;&gt;&gt;&gt; interoperability, they're also a way to open the protocol itself to&#010;&gt;&gt;&gt;&gt;&gt; experiments and eventually drive a community based evolution of it.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - Interop is not always the top priority. CMIS and Chemistry provide&#010;a&#010;&gt;&gt;&gt;&gt;&gt; lot&#010;&gt;&gt;&gt;&gt;&gt; of value OOTB, and I don't see why proprietary extensions should be&#010;&gt;&gt;&gt;&gt;&gt; denied&#010;&gt;&gt;&gt;&gt;&gt; by principle. Why shouldn't I have the possibility to write a custom&#010;&gt;&gt;&gt;&gt;&gt; extension to improve e.g. content delivery capabilities&#010;&gt;&gt;&gt;&gt;&gt; (getContentStreamByPath, anyone?), while still retaining full protocol&#010;&gt;&gt;&gt;&gt;&gt; compliance for B2B data exchange?&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; If you made it to here, a big thank you for your patience.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; Hope this helps,&#010;&gt;&gt;&gt;&gt;&gt; c.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; 2013/5/8 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;   Hi Carlo,&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; This code is not meant to be extensible. The CMIS standard is fixed.&#010;&gt;&gt;&gt;&gt;&gt;&gt; There&#010;&gt;&gt;&gt;&gt;&gt;&gt; will be no additional services or operations. Also, the semantics&#010;of&#010;&gt;&gt;&gt;&gt;&gt;&gt; the&#010;&gt;&gt;&gt;&gt;&gt;&gt; parameters will not change or have to be changed. Any extensions&#010;would&#010;&gt;&gt;&gt;&gt;&gt;&gt; bypass the specification, which would be a pain for clients and&#010;&gt;&gt;&gt;&gt;&gt;&gt; doesn't&#010;&gt;&gt;&gt;&gt;&gt;&gt; help interoperability.&#010;&gt;&gt;&gt;&gt;&gt;&gt; All methods that handle requests are stateless, isolated pieces of&#010;&gt;&gt;&gt;&gt;&gt;&gt; code.&#010;&gt;&gt;&gt;&gt;&gt;&gt; OO doesn't help here. And the alternative to reflections would be&#010;a&#010;&gt;&gt;&gt;&gt;&gt;&gt; 120&#010;&gt;&gt;&gt;&gt;&gt;&gt; lines if-statement. I can't see the advantage of that.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; Also, this part is considered internal code and may change at any&#010;&gt;&gt;&gt;&gt;&gt;&gt; time.&#010;&gt;&gt;&gt;&gt;&gt;&gt; OpenCMIS provides a lot of extensibility on the client side and&#010;&gt;&gt;&gt;&gt;&gt;&gt; keeping&#010;&gt;&gt;&gt;&gt;&gt;&gt; the&#010;&gt;&gt;&gt;&gt;&gt;&gt; interfaces compatible does hurt sometimes. I don't see a real use&#010;case&#010;&gt;&gt;&gt;&gt;&gt;&gt; to&#010;&gt;&gt;&gt;&gt;&gt;&gt; have that pain also on the server side. If there is something missing&#010;&gt;&gt;&gt;&gt;&gt;&gt; or&#010;&gt;&gt;&gt;&gt;&gt;&gt; wrong, we usually fix it pretty quick - as you have seen.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; Having said that, if you have a great idea how to refactor that code,&#010;&gt;&gt;&gt;&gt;&gt;&gt; feel&#010;&gt;&gt;&gt;&gt;&gt;&gt; free to provide a patch.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; Am Mittwoch, den 08.05.2013, 16:05 +0200 schrieb Carlo Sciolla&lt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; carlo.sciolla@gmail.com&gt;:&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;   Hi Florian,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; thanks for your quick commit, I will experiment a bit with it&#010;and let&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; you&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; know what comes out of it. I do already have some initial comments&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; anyway:&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; - I see you only addressed the browser bindings implementation.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; While I&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; can&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; see the reason behind it, I think it won't hurt to also apply&#010;a&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; similar&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; logic to the AtomPub binding&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; - as I'm stuck with v0.6.0, I'm looking into ways to backport&#010;or&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; integrate&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; your code in my app. The current logic for method dispatch in&#010;AtomPub&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; goes&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; against extensibility (and some object oriented design principles,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; IMO)&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; while for the time being I can work around it, would you guys&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; consider&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; refactoring the dispatch logic to make use of non-final classes&#010;/ no&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; reflection / public constructors?&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thanks,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; c.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2013/5/8 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Hi Carlo,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  I've added some new code. There are now three interfaces that&#010;let&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; you&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; control the server headers.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The ContentStream object that is returned by getContentStream()&#010;must&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; implement the interface(s) to trigger the behavior:&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ContentLengthContentStream - Sets the Content-Length header&#010;and&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; turns&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; chunking off.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; LastModifiedContentStream - Sets the Last-Modified header&#010;and&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; respects&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; If-Modified-Since header.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; CacheHeaderContentStream - Sets the Cache-Control header,&#010;the&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Expires&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; header, and the ETag header and respects the If-None-Match&#010;header.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Please let me know if that works for you.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Hi there, sorry for the late reply.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  2013/5/7 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   That is surprising. Chunked encoding isn't really exotic.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;    Definitely, but browsers are always there to remind&#010;us that&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; world&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; class&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   standards are nothing different from regional social&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; conventions,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; are&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; they?&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Could you please open an Improvement issue and add&#010;a few details.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I'll&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   look into it.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Thanks, here it is&lt;https://issues.apache.org/********&lt;https://issues.apache.org/******&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https://issues.apache.**org/****&lt;https://issues.apache.org/****&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; jira/browse/CMIS-655&lt;https://****issues.apache.org/**jira/**&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; browse/CMIS-655&lt;https://**issues.apache.org/**jira/**&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; browse/CMIS-655&lt;https://issues.apache.org/**jira/browse/CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https://**issues.apache.org/****jira/browse/**CMIS-655&lt;http://issues.apache.org/**jira/browse/**CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;http:/**/issues.apache.org/jira/**browse/**CMIS-655&lt;http://issues.apache.org/jira/browse/**CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https:/**/issues.apache.org/**jira/**browse/CMIS-655&lt;http://issues.apache.org/jira/**browse/CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https:/**/issues.apache.org/jira/**browse/CMIS-655&lt;https://issues.apache.org/jira/browse/CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;    &gt;.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt; --&#010;&gt;&gt;&gt; Carlo Sciolla&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; --==(A)==--&#010;&gt;&gt;&gt; Linux User #372086&#010;&gt;&gt;&gt; My personal blog: http://www.skuro.tk&#010;&gt;&gt;&gt; Follow me on twitter: http://twitter.com/skuro&#010;&gt;&gt;&gt;   &lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010;&gt;&gt;&gt; &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;&gt;&gt;&gt; http://nl.linkedin.com/in/**carlosciolla&lt;http://nl.linkedin.com/in/carlosciolla&gt;&#010;&gt;&gt;&gt; --==(A)==--&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; Product Lead at Backbase - Next Generation Portal Software for Financials&#010;&gt;&gt;&gt; &amp;  Large Enterprises (http://www.backbase.com)&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&#010;&#010;&#010;-- &#010;Carlo Sciolla&#010;&#010;--==(A)==--&#010;Linux User #372086&#010;My personal blog: http://www.skuro.tk&#010;Follow me on twitter: http://twitter.com/skuro&#010; &lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010;&lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;http://nl.linkedin.com/in/carlosciolla&#010;--==(A)==--&#010;&#010;Product Lead at Backbase - Next Generation Portal Software for Financials &amp;&#010;Large Enterprises (http://www.backbase.com)&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Chunked transfer encoding</title>
<author><name>Florian Müller &lt;fmui@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3c518D1613.2030405@apache.org%3e"/>
<id>urn:uuid:%3c518D1613-2030405@apache-org%3e</id>
<updated>2013-05-10T15:45:23Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Got it. I thought you were heading in a different direction.&#010;&#010;How is that different from making the current Dispatch object protected &#010;or adding a protected method that wraps the Dispatch.addResource() method?&#010;&#010;Extensibility-wise they would be equal. Your version only adds a bit &#010;more syntactic sugar. It would also need a bit more memory because we &#010;would have to add about 100 additional classes (AtomPub + Browser) and &#010;runtime objects.&#010;&#010;- Florian&#010;&#010;&#010;&gt; Is it next week already? :-)&#010;&gt;&#010;&gt; Jokes apart, I had one hour to spare for this topic now that it's still&#010;&gt; hot, and produced the patch you can see attached to&#010;&gt; CMIS-656&lt;https://issues.apache.org/jira/browse/CMIS-656&gt;.&#010;&gt; That's a translation of the current Chemistry dispatch logic to abandon&#010;&gt; reflection, static methods, private constructors, and final classes.&#010;&gt;&#010;&gt; The flow is quite the same as before, with the servlet initialization logic&#010;&gt; registering the default bindings by adding concrete instances of a&#010;&gt; ServiceCall interface into a local registry. At request serving time the&#010;&gt; registered ServiceCall is retrieved and its service() method invoked. The&#010;&gt; invocation logic is now a mere INVOKEINTERFACE JVM instruction instead of&#010;&gt; the previous reflection trick (tiny performance improvement here).&#010;&gt;&#010;&gt; Please note that the ServiceCall interface was already a hidden contract&#010;&gt; that all service calls had to implement to be addressable by the Method&#010;&gt; created by the Dispatcher.&#010;&gt;&#010;&gt; As a last note, CmisAtomPubServlet also exposes a protected&#010;&gt; registerDispatch(resource, method, ServiceCall) to allow implementors to&#010;&gt; override the default logic.&#010;&gt;&#010;&gt; That's it for now. Please note that as the Dispatcher is shared across the&#010;&gt; AtomPub and Browser bindings, and as only the AtomPub was properly&#010;&gt; refactored, that patch will break your build.&#010;&gt;&#010;&gt; Looking forward to hear your comments,&#010;&gt; c.&#010;&gt;&#010;&gt;&#010;&gt; 2013/5/10 Carlo Sciolla&lt;carlo.sciolla@gmail.com&gt;&#010;&gt;&#010;&gt;&gt; Hi Florian,&#010;&gt;&gt;&#010;&gt;&gt; will do, I'll hopefully have a patch for you to review next week.&#010;&gt;&gt;&#010;&gt;&gt; c.&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt; 2013/5/10 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&#010;&gt;&gt;&gt; Hi Carlo,&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; Please go ahead and make a proposal. Submit a patch that sketches your&#010;&gt;&gt;&gt; ideas. It doesn't have to be complete and running.&#010;&gt;&gt;&gt; It's easier to talk about something concrete rather than discussing about&#010;&gt;&gt;&gt; generic topics.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;   Hi Florian,&#010;&gt;&gt;&gt;&gt; it's not my intent to start a flame war, and we can continue offline if&#010;&gt;&gt;&gt;&gt; you&#010;&gt;&gt;&gt;&gt; want. To the interest of the list, I'll just write here some of the&#010;&gt;&gt;&gt;&gt; reasons&#010;&gt;&gt;&gt;&gt; behind my previous comment, and wait until I have some patch ready to&#010;&gt;&gt;&gt;&gt; prove&#010;&gt;&gt;&gt;&gt; my points before bothering you guys again with my ramblings.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; I understand your remark on the spec compliance, and that interop is at&#010;&gt;&gt;&gt;&gt; stake when you allow the protocol details to be modified. BUT...&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; - There's much more to HTTP than what CMIS specifies, and Chemistry is&#010;&gt;&gt;&gt;&gt; currently in charge of handling the transport protocol on top of which&#010;&gt;&gt;&gt;&gt; CMIS&#010;&gt;&gt;&gt;&gt; expresses itself.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; - No extensibility means that backporting of fixes might be a no-go. For&#010;&gt;&gt;&gt;&gt; example, if I now upgrade Chemistry to the latest trunk my code doesn't&#010;&gt;&gt;&gt;&gt; compile anymore. Subclassing would be the best way to integrate your&#010;&gt;&gt;&gt;&gt; changes in the version I use, but that's not available to me.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; - The CMIS spec is (hopefully!) not fixed and will evolve with time. OO&#010;&gt;&gt;&gt;&gt; could help greatly e.g. to support different versions of the protocol&#010;&gt;&gt;&gt;&gt; with&#010;&gt;&gt;&gt;&gt; a single serve instance, which is painful to implement cleanly following&#010;&gt;&gt;&gt;&gt; the current code approach.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; - Spec extensions are not evil per se. While they might indeed break&#010;&gt;&gt;&gt;&gt; interoperability, they're also a way to open the protocol itself to&#010;&gt;&gt;&gt;&gt; experiments and eventually drive a community based evolution of it.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; - Interop is not always the top priority. CMIS and Chemistry provide a&#010;&gt;&gt;&gt;&gt; lot&#010;&gt;&gt;&gt;&gt; of value OOTB, and I don't see why proprietary extensions should be&#010;&gt;&gt;&gt;&gt; denied&#010;&gt;&gt;&gt;&gt; by principle. Why shouldn't I have the possibility to write a custom&#010;&gt;&gt;&gt;&gt; extension to improve e.g. content delivery capabilities&#010;&gt;&gt;&gt;&gt; (getContentStreamByPath, anyone?), while still retaining full protocol&#010;&gt;&gt;&gt;&gt; compliance for B2B data exchange?&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; If you made it to here, a big thank you for your patience.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; Hope this helps,&#010;&gt;&gt;&gt;&gt; c.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; 2013/5/8 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;   Hi Carlo,&#010;&gt;&gt;&gt;&gt;&gt; This code is not meant to be extensible. The CMIS standard is fixed.&#010;&gt;&gt;&gt;&gt;&gt; There&#010;&gt;&gt;&gt;&gt;&gt; will be no additional services or operations. Also, the semantics of&#010;the&#010;&gt;&gt;&gt;&gt;&gt; parameters will not change or have to be changed. Any extensions would&#010;&gt;&gt;&gt;&gt;&gt; bypass the specification, which would be a pain for clients and doesn't&#010;&gt;&gt;&gt;&gt;&gt; help interoperability.&#010;&gt;&gt;&gt;&gt;&gt; All methods that handle requests are stateless, isolated pieces of code.&#010;&gt;&gt;&gt;&gt;&gt; OO doesn't help here. And the alternative to reflections would be a 120&#010;&gt;&gt;&gt;&gt;&gt; lines if-statement. I can't see the advantage of that.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; Also, this part is considered internal code and may change at any time.&#010;&gt;&gt;&gt;&gt;&gt; OpenCMIS provides a lot of extensibility on the client side and keeping&#010;&gt;&gt;&gt;&gt;&gt; the&#010;&gt;&gt;&gt;&gt;&gt; interfaces compatible does hurt sometimes. I don't see a real use case&#010;&gt;&gt;&gt;&gt;&gt; to&#010;&gt;&gt;&gt;&gt;&gt; have that pain also on the server side. If there is something missing&#010;or&#010;&gt;&gt;&gt;&gt;&gt; wrong, we usually fix it pretty quick - as you have seen.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; Having said that, if you have a great idea how to refactor that code,&#010;&gt;&gt;&gt;&gt;&gt; feel&#010;&gt;&gt;&gt;&gt;&gt; free to provide a patch.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; Am Mittwoch, den 08.05.2013, 16:05 +0200 schrieb Carlo Sciolla&lt;&#010;&gt;&gt;&gt;&gt;&gt; carlo.sciolla@gmail.com&gt;:&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;   Hi Florian,&#010;&gt;&gt;&gt;&gt;&gt;&gt; thanks for your quick commit, I will experiment a bit with it and&#010;let&#010;&gt;&gt;&gt;&gt;&gt;&gt; you&#010;&gt;&gt;&gt;&gt;&gt;&gt; know what comes out of it. I do already have some initial comments&#010;&gt;&gt;&gt;&gt;&gt;&gt; anyway:&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; - I see you only addressed the browser bindings implementation. While&#010;I&#010;&gt;&gt;&gt;&gt;&gt;&gt; can&#010;&gt;&gt;&gt;&gt;&gt;&gt; see the reason behind it, I think it won't hurt to also apply a similar&#010;&gt;&gt;&gt;&gt;&gt;&gt; logic to the AtomPub binding&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; - as I'm stuck with v0.6.0, I'm looking into ways to backport or&#010;&gt;&gt;&gt;&gt;&gt;&gt; integrate&#010;&gt;&gt;&gt;&gt;&gt;&gt; your code in my app. The current logic for method dispatch in AtomPub&#010;&gt;&gt;&gt;&gt;&gt;&gt; goes&#010;&gt;&gt;&gt;&gt;&gt;&gt; against extensibility (and some object oriented design principles,&#010;IMO)&#010;&gt;&gt;&gt;&gt;&gt;&gt; and&#010;&gt;&gt;&gt;&gt;&gt;&gt; while for the time being I can work around it, would you guys consider&#010;&gt;&gt;&gt;&gt;&gt;&gt; refactoring the dispatch logic to make use of non-final classes /&#010;no&#010;&gt;&gt;&gt;&gt;&gt;&gt; reflection / public constructors?&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; Thanks,&#010;&gt;&gt;&gt;&gt;&gt;&gt; c.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; 2013/5/8 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;   Hi Carlo,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I've added some new code. There are now three interfaces that&#010;let you&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; control the server headers.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The ContentStream object that is returned by getContentStream()&#010;must&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; implement the interface(s) to trigger the behavior:&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ContentLengthContentStream - Sets the Content-Length header and&#010;turns&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; chunking off.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; LastModifiedContentStream - Sets the Last-Modified header and&#010;respects&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; If-Modified-Since header.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; CacheHeaderContentStream - Sets the Cache-Control header, the&#010;Expires&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; header, and the ETag header and respects the If-None-Match header.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Please let me know if that works for you.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Hi there, sorry for the late reply.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2013/5/7 Florian Müller&lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   That is surprising. Chunked encoding isn't really exotic.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Definitely, but browsers are always there to remind&#010;us that world&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; class&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   standards are nothing different from regional social&#010;conventions,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; are&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; they?&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Could you please open an Improvement issue and add a few&#010;details.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I'll&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   look into it.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   Thanks, here it is&lt;https://issues.apache.org/******&lt;https://issues.apache.org/****&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; jira/browse/CMIS-655&lt;https://**issues.apache.org/**jira/**&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; browse/CMIS-655&lt;https://issues.apache.org/**jira/browse/CMIS-655&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https://**issues.apache.org/**jira/browse/**CMIS-655&lt;http://issues.apache.org/jira/browse/**CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https:/**/issues.apache.org/jira/**browse/CMIS-655&lt;https://issues.apache.org/jira/browse/CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   &gt;.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt; --&#010;&gt;&gt; Carlo Sciolla&#010;&gt;&gt;&#010;&gt;&gt; --==(A)==--&#010;&gt;&gt; Linux User #372086&#010;&gt;&gt; My personal blog: http://www.skuro.tk&#010;&gt;&gt; Follow me on twitter: http://twitter.com/skuro&#010;&gt;&gt;   &lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010;&gt;&gt; &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;&gt;&gt; http://nl.linkedin.com/in/carlosciolla&#010;&gt;&gt; --==(A)==--&#010;&gt;&gt;&#010;&gt;&gt; Product Lead at Backbase - Next Generation Portal Software for Financials&#010;&gt;&gt; &amp;  Large Enterprises (http://www.backbase.com)&#010;&gt;&gt;&#010;&gt;&#010;&gt;&#010;&gt;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>Re: Chunked transfer encoding</title>
<author><name>Carlo Sciolla &lt;carlo.sciolla@gmail.com&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cCAJLgDnDKgvDzfmozYC3hKGJ970CMDL3ut5rnJF8NDNE7rSrvsQ@mail.gmail.com%3e"/>
<id>urn:uuid:%3cCAJLgDnDKgvDzfmozYC3hKGJ970CMDL3ut5rnJF8NDNE7rSrvsQ@mail-gmail-com%3e</id>
<updated>2013-05-10T14:57:53Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Is it next week already? :-)&#010;&#010;Jokes apart, I had one hour to spare for this topic now that it's still&#010;hot, and produced the patch you can see attached to&#010;CMIS-656&lt;https://issues.apache.org/jira/browse/CMIS-656&gt;.&#010;That's a translation of the current Chemistry dispatch logic to abandon&#010;reflection, static methods, private constructors, and final classes.&#010;&#010;The flow is quite the same as before, with the servlet initialization logic&#010;registering the default bindings by adding concrete instances of a&#010;ServiceCall interface into a local registry. At request serving time the&#010;registered ServiceCall is retrieved and its service() method invoked. The&#010;invocation logic is now a mere INVOKEINTERFACE JVM instruction instead of&#010;the previous reflection trick (tiny performance improvement here).&#010;&#010;Please note that the ServiceCall interface was already a hidden contract&#010;that all service calls had to implement to be addressable by the Method&#010;created by the Dispatcher.&#010;&#010;As a last note, CmisAtomPubServlet also exposes a protected&#010;registerDispatch(resource, method, ServiceCall) to allow implementors to&#010;override the default logic.&#010;&#010;That's it for now. Please note that as the Dispatcher is shared across the&#010;AtomPub and Browser bindings, and as only the AtomPub was properly&#010;refactored, that patch will break your build.&#010;&#010;Looking forward to hear your comments,&#010;c.&#010;&#010;&#010;2013/5/10 Carlo Sciolla &lt;carlo.sciolla@gmail.com&gt;&#010;&#010;&gt; Hi Florian,&#010;&gt;&#010;&gt; will do, I'll hopefully have a patch for you to review next week.&#010;&gt;&#010;&gt; c.&#010;&gt;&#010;&gt;&#010;&gt; 2013/5/10 Florian Müller &lt;fmui@apache.org&gt;&#010;&gt;&#010;&gt;&gt; Hi Carlo,&#010;&gt;&gt;&#010;&gt;&gt; Please go ahead and make a proposal. Submit a patch that sketches your&#010;&gt;&gt; ideas. It doesn't have to be complete and running.&#010;&gt;&gt; It's easier to talk about something concrete rather than discussing about&#010;&gt;&gt; generic topics.&#010;&gt;&gt;&#010;&gt;&gt; - Florian&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&gt;  Hi Florian,&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; it's not my intent to start a flame war, and we can continue offline if&#010;&gt;&gt;&gt; you&#010;&gt;&gt;&gt; want. To the interest of the list, I'll just write here some of the&#010;&gt;&gt;&gt; reasons&#010;&gt;&gt;&gt; behind my previous comment, and wait until I have some patch ready to&#010;&gt;&gt;&gt; prove&#010;&gt;&gt;&gt; my points before bothering you guys again with my ramblings.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; I understand your remark on the spec compliance, and that interop is at&#010;&gt;&gt;&gt; stake when you allow the protocol details to be modified. BUT...&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; - There's much more to HTTP than what CMIS specifies, and Chemistry is&#010;&gt;&gt;&gt; currently in charge of handling the transport protocol on top of which&#010;&gt;&gt;&gt; CMIS&#010;&gt;&gt;&gt; expresses itself.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; - No extensibility means that backporting of fixes might be a no-go. For&#010;&gt;&gt;&gt; example, if I now upgrade Chemistry to the latest trunk my code doesn't&#010;&gt;&gt;&gt; compile anymore. Subclassing would be the best way to integrate your&#010;&gt;&gt;&gt; changes in the version I use, but that's not available to me.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; - The CMIS spec is (hopefully!) not fixed and will evolve with time. OO&#010;&gt;&gt;&gt; could help greatly e.g. to support different versions of the protocol&#010;&gt;&gt;&gt; with&#010;&gt;&gt;&gt; a single serve instance, which is painful to implement cleanly following&#010;&gt;&gt;&gt; the current code approach.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; - Spec extensions are not evil per se. While they might indeed break&#010;&gt;&gt;&gt; interoperability, they're also a way to open the protocol itself to&#010;&gt;&gt;&gt; experiments and eventually drive a community based evolution of it.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; - Interop is not always the top priority. CMIS and Chemistry provide a&#010;&gt;&gt;&gt; lot&#010;&gt;&gt;&gt; of value OOTB, and I don't see why proprietary extensions should be&#010;&gt;&gt;&gt; denied&#010;&gt;&gt;&gt; by principle. Why shouldn't I have the possibility to write a custom&#010;&gt;&gt;&gt; extension to improve e.g. content delivery capabilities&#010;&gt;&gt;&gt; (getContentStreamByPath, anyone?), while still retaining full protocol&#010;&gt;&gt;&gt; compliance for B2B data exchange?&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; If you made it to here, a big thank you for your patience.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; Hope this helps,&#010;&gt;&gt;&gt; c.&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt; 2013/5/8 Florian Müller &lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&#010;&gt;&gt;&gt;  Hi Carlo,&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; This code is not meant to be extensible. The CMIS standard is fixed.&#010;&gt;&gt;&gt;&gt; There&#010;&gt;&gt;&gt;&gt; will be no additional services or operations. Also, the semantics of the&#010;&gt;&gt;&gt;&gt; parameters will not change or have to be changed. Any extensions would&#010;&gt;&gt;&gt;&gt; bypass the specification, which would be a pain for clients and doesn't&#010;&gt;&gt;&gt;&gt; help interoperability.&#010;&gt;&gt;&gt;&gt; All methods that handle requests are stateless, isolated pieces of code.&#010;&gt;&gt;&gt;&gt; OO doesn't help here. And the alternative to reflections would be a 120&#010;&gt;&gt;&gt;&gt; lines if-statement. I can't see the advantage of that.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; Also, this part is considered internal code and may change at any time.&#010;&gt;&gt;&gt;&gt; OpenCMIS provides a lot of extensibility on the client side and keeping&#010;&gt;&gt;&gt;&gt; the&#010;&gt;&gt;&gt;&gt; interfaces compatible does hurt sometimes. I don't see a real use case&#010;&gt;&gt;&gt;&gt; to&#010;&gt;&gt;&gt;&gt; have that pain also on the server side. If there is something missing or&#010;&gt;&gt;&gt;&gt; wrong, we usually fix it pretty quick - as you have seen.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; Having said that, if you have a great idea how to refactor that code,&#010;&gt;&gt;&gt;&gt; feel&#010;&gt;&gt;&gt;&gt; free to provide a patch.&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt; Am Mittwoch, den 08.05.2013, 16:05 +0200 schrieb Carlo Sciolla &lt;&#010;&gt;&gt;&gt;&gt; carlo.sciolla@gmail.com&gt;:&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;  Hi Florian,&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; thanks for your quick commit, I will experiment a bit with it and let&#010;&gt;&gt;&gt;&gt;&gt; you&#010;&gt;&gt;&gt;&gt;&gt; know what comes out of it. I do already have some initial comments&#010;&gt;&gt;&gt;&gt;&gt; anyway:&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - I see you only addressed the browser bindings implementation. While&#010;I&#010;&gt;&gt;&gt;&gt;&gt; can&#010;&gt;&gt;&gt;&gt;&gt; see the reason behind it, I think it won't hurt to also apply a similar&#010;&gt;&gt;&gt;&gt;&gt; logic to the AtomPub binding&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; - as I'm stuck with v0.6.0, I'm looking into ways to backport or&#010;&gt;&gt;&gt;&gt;&gt; integrate&#010;&gt;&gt;&gt;&gt;&gt; your code in my app. The current logic for method dispatch in AtomPub&#010;&gt;&gt;&gt;&gt;&gt; goes&#010;&gt;&gt;&gt;&gt;&gt; against extensibility (and some object oriented design principles, IMO)&#010;&gt;&gt;&gt;&gt;&gt; and&#010;&gt;&gt;&gt;&gt;&gt; while for the time being I can work around it, would you guys consider&#010;&gt;&gt;&gt;&gt;&gt; refactoring the dispatch logic to make use of non-final classes / no&#010;&gt;&gt;&gt;&gt;&gt; reflection / public constructors?&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; Thanks,&#010;&gt;&gt;&gt;&gt;&gt; c.&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt; 2013/5/8 Florian Müller &lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;  Hi Carlo,&#010;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; I've added some new code. There are now three interfaces that let&#010;you&#010;&gt;&gt;&gt;&gt;&gt;&gt; control the server headers.&#010;&gt;&gt;&gt;&gt;&gt;&gt; The ContentStream object that is returned by getContentStream() must&#010;&gt;&gt;&gt;&gt;&gt;&gt; implement the interface(s) to trigger the behavior:&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; ContentLengthContentStream - Sets the Content-Length header and turns&#010;&gt;&gt;&gt;&gt;&gt;&gt; chunking off.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; LastModifiedContentStream - Sets the Last-Modified header and respects&#010;&gt;&gt;&gt;&gt;&gt;&gt; the&#010;&gt;&gt;&gt;&gt;&gt;&gt; If-Modified-Since header.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; CacheHeaderContentStream - Sets the Cache-Control header, the Expires&#010;&gt;&gt;&gt;&gt;&gt;&gt; header, and the ETag header and respects the If-None-Match header.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; Please let me know if that works for you.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt; - Florian&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;  Hi there, sorry for the late reply.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2013/5/7 Florian Müller &lt;fmui@apache.org&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  That is surprising. Chunked encoding isn't really exotic.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  Definitely, but browsers are always there to remind us that&#010;world&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; class&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  standards are nothing different from regional social conventions,&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; are&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; they?&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  Could you please open an Improvement issue and add a few details.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I'll&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  look into it.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  Thanks, here it is &lt;https://issues.apache.org/******&lt;https://issues.apache.org/****&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; jira/browse/CMIS-655&lt;https://**issues.apache.org/**jira/**&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; browse/CMIS-655 &lt;https://issues.apache.org/**jira/browse/CMIS-655&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https://**issues.apache.org/**jira/browse/**CMIS-655&lt;http://issues.apache.org/jira/browse/**CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;https:/**/issues.apache.org/jira/**browse/CMIS-655&lt;https://issues.apache.org/jira/browse/CMIS-655&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  &gt;.&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&gt;&gt;&#010;&gt;&gt;&#010;&gt;&#010;&gt;&#010;&gt; --&#010;&gt; Carlo Sciolla&#010;&gt;&#010;&gt; --==(A)==--&#010;&gt; Linux User #372086&#010;&gt; My personal blog: http://www.skuro.tk&#010;&gt; Follow me on twitter: http://twitter.com/skuro&#010;&gt;  &lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010;&gt; &lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;&gt; http://nl.linkedin.com/in/carlosciolla&#010;&gt; --==(A)==--&#010;&gt;&#010;&gt; Product Lead at Backbase - Next Generation Portal Software for Financials&#010;&gt; &amp; Large Enterprises (http://www.backbase.com)&#010;&gt;&#010;&#010;&#010;&#010;-- &#010;Carlo Sciolla&#010;&#010;--==(A)==--&#010;Linux User #372086&#010;My personal blog: http://www.skuro.tk&#010;Follow me on twitter: http://twitter.com/skuro&#010; &lt;http://twitter.com/skuro&gt;Fork me on Github: http://github.com/skuro&#010;&lt;http://github.com/skuro&gt;My LinkedIn profile:&#010;http://nl.linkedin.com/in/carlosciolla&#010;--==(A)==--&#010;&#010;Product Lead at Backbase - Next Generation Portal Software for Financials &amp;&#010;Large Enterprises (http://www.backbase.com)&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>[jira] [Updated] (CMIS-656) Provide extension points for the protocol handling logic</title>
<author><name>&quot;Carlo Sciolla (JIRA)&quot; &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12647017.1368196339398.300415.1368196876142@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12647017-1368196339398-300415-1368196876142@arcas%3e</id>
<updated>2013-05-10T14:41:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
&#010;     [ https://issues.apache.org/jira/browse/CMIS-656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&#010;]&#010;&#010;Carlo Sciolla updated CMIS-656:&#010;-------------------------------&#010;&#010;    Attachment: noreflection.patch&#010;&#010;The provided patch only affects the AtomPub binding (and partially the Browser binding, which&#010;is left broken for the time being) in the following ways:&#010;&#010;- a new ServiceCall single method interface is created, with a method call having the same&#010;interface as all Service methods used to have&#010;&#010;- single classes per service area (e.g. ObjectService) are translated into packages (e.g.&#010;org.apache.chemistry.opencmis.server.impl.atompub.object)&#010;&#010;- classes inside the service packages implement the ServiceCall interface, thus implementing&#010;a single service call each&#010;&#010;- the dispatch logic at servlet level is similar to what it used to be, with the Dispatcher&#010;now not using reflection anymore to point to the service logic but rather concrete instances&#010;of ServiceCall&#010;&#010;- CmisAtomPubServlet has a protected registerDispatch method to allow subclasses to override&#010;the default bindings&#010;                &#010;&gt; Provide extension points for the protocol handling logic&#010;&gt; --------------------------------------------------------&#010;&gt;&#010;&gt;                 Key: CMIS-656&#010;&gt;                 URL: https://issues.apache.org/jira/browse/CMIS-656&#010;&gt;             Project: Chemistry&#010;&gt;          Issue Type: Improvement&#010;&gt;          Components: opencmis-server&#010;&gt;    Affects Versions: OpenCMIS 0.9.0 beta 1&#010;&gt;            Reporter: Carlo Sciolla&#010;&gt;         Attachments: noreflection.patch&#010;&gt;&#010;&gt;&#010;&gt; Chemistry takes full control over the serialization process, including all details of&#010;the underlying HTTP communication. Extension points or APIs in this process would allow implementors&#010;to leverage greater flexibility to fine tune the serialization process, or to implement extensions&#010;over the standard CMIS.&#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] (CMIS-656) Provide extension points for the protocol handling logic</title>
<author><name>&quot;Carlo Sciolla (JIRA)&quot; &lt;jira@apache.org&gt;</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/chemistry-dev/201305.mbox/%3cJIRA.12647017.1368196339398.300382.1368196396023@arcas%3e"/>
<id>urn:uuid:%3cJIRA-12647017-1368196339398-300382-1368196396023@arcas%3e</id>
<updated>2013-05-10T14:33:16Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Carlo Sciolla created CMIS-656:&#010;----------------------------------&#010;&#010;             Summary: Provide extension points for the protocol handling logic&#010;                 Key: CMIS-656&#010;                 URL: https://issues.apache.org/jira/browse/CMIS-656&#010;             Project: Chemistry&#010;          Issue Type: Improvement&#010;          Components: opencmis-server&#010;    Affects Versions: OpenCMIS 0.9.0 beta 1&#010;            Reporter: Carlo Sciolla&#010;&#010;&#010;Chemistry takes full control over the serialization process, including all details of the&#010;underlying HTTP communication. Extension points or APIs in this process would allow implementors&#010;to leverage greater flexibility to fine tune the serialization process, or to implement extensions&#010;over the standard CMIS.&#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>
</feed>
