Hi Florian,

Thanks for pointing to example with TypeDefinition. I was looking hard at 
"extension" parameter for binding methods and completely missed that 
TypeDefinition interface and others extend ExtensionsData. That solves my 
issues for many create/update scenarios. You also mentioned extension mechanism 
for Browser and AtomPub bindings. Can you point to any class/method/example for 
me to start looking at? Does such mechanism work for HTTP GETs or only PUTs and 
POSTs? We currently handle custom HTTP headers in CallContextHandler and 
AuthenticationFilter but as you mentioned it is a bit awkward. 

Regards,

Vyacheslav Pascarel


-----Original Message-----
From: Florian Müller [mailto:f...@apache.org] 
Sent: Friday, July 22, 2016 12:42 PM
To: dev@chemistry.apache.org
Cc: Vyacheslav Pascarel <vpasc...@opentext.com>
Subject: Re: How to pass "extension data" for different bindings?

Hi Vyacheslav,

Your example is actually the exception. When you create a type you can add 
extension data to almost every levels of the type definition and it will be 
transferred to the server. That is supported by all bindings. 
But this has nothing to do extensions you find in the method signatures.

The ExtensionData is only defined and only works for the Web Services binding. 
The AtomPub binding and the Browser binding rely on the Atom and HTTP extension 
mechanisms.  For example, to create a folder with the Browser Binding the 
client sends URL encoded form data. The CMIS spec allows to add extra data 
(key-value pairs) to it. So, protocol-wise that is supported.

You can extract this extra data with the OpenCMIS server framework. 
There is no obvious method, but it is possible.
On the OpenCMIS client side we don't have support for this. (We don't have real 
support for ExtensionData, either). There weren't many requests in the past to 
implement something like this.
If you have a good idea how to add this without polluting the interfaces (for 
example duplicating all methods), let us know.

If you have the same data, that you want to send with all requests, have a look 
the authentication provider. It allows you to set HTTP headers. 
Not an elegant way, but it works with all bindings.


- Florian


> Hi everyone,
> 
> I am trying to use pass some additional non-CMIS data from client to
> server. For example, in case of creating a new type in the target ECM,
> simple CMIS type definition may not be sufficient to pass all the
> data. I was looking at using ExtensionsData since it is coming as an
> input in almost every method on server side. But it seems that passing
> ExtensionData is only supported by Web Services binding. The source
> code on client for sending and on server for receiving does not do
> anything for extension data. Sending extension data from server to
> client seems to be supported by all bindings.
> 
> So my question: Is there a way to pass "extension data" without
> resorting to Web Services binding?
> 
> I understand HTTP GET for Browser and AtomPub applies some
> restrictions on sending data, but HTTP POST and PUT could include such
> data. PUT & GET would suffice for a lot of scenarios while GET could
> return extension data all the time if needed.
> 
> Regards,
> 
> Vyacheslav Pascarel

Reply via email to