Hi Florent,
Actually, the contract and the JavaDoc are not the same for all methods.
Take getName() as an example. For CmisObject it returns the name of the
object as it was loaded. For TransientObject it returns the current
state of the name property in the transient object. If you have changed
the name and haven't saved the object yet, it doesn't return the name
that was loaded.
I have no strong opinion on the adapter design. Accepting an arbitrary
interface doesn't feel right to me, but if you have a use case, we can
change that.
- Florian
On 22/11/2010 09:56, Florent Guillaume wrote:
Hi Florian,
I agree that inheritance of implementation would be difficult.
I was more thinking about inheritance of the interfaces. The contract
is the same, the javadoc is the same, I really think the common
interfaces shouldn't be duplicated (DRY). In that case having six new
base interfaces would just clean things up IMHO.
Regarding adapters, yes their implementation needs to be designed for
CMIS, but not the interfaces. For instance you could adapt to
InputStream to get a direct view of the content stream, or adapt to
Map to get a Map-like view of the document's properties. Or adapt to
pre-existing vendor interfaces.
Florent
On Fri, Nov 19, 2010 at 9:38 PM, Florian Müller
<[email protected]> wrote:
Hi Florent,
Inheritance would be very difficult. The implementations of Document and
TransientDocument, for example, are too different.
We could create common interfaces that cover all property getters. That
would clean up the existing interfaces a bit, but would also create six new
interfaces that I can't see a real use case for. Let me know if I'm missing
something.
My idea behind the CmisObjectAdapter interface was to make the whole thing
more type save. Could you provide a sample use case that would require
reusing a third-party interface? Doesn't an adapter need to be designed for
CMIS?
- Florian
On 19/11/2010 18:58, Florent Guillaume wrote:
Hi,
There's a lot of duplication of methods from, for instance, Document
and TransientDocument.
Couldn't one inherit from the other (I guess not), or couldn't they
have a common base interface?
Also I don't think we need a base CmisObjectAdapter interface, it's
actually useful to be able to adapt to any third-party interface. I'll
deal with making getAdapter not need that (and use generics).
Florent
On Wed, Nov 17, 2010 at 11:01 AM, Florian Müller
<[email protected]> wrote:
Hi all,
Merge is done. Please test and provide feedback.
Thanks,
Florian
On 15/11/2010 13:50, Florian Müller wrote:
Hi all,
If nobody objects, I will merge the client API refactoring branch into
trunk this Wednesday.
If there are any reasons not to merge, please let me know as soon as
possible!
Cheers,
Florian