[Zope-CMF] Re: How do deal with cmfcatalog-wrapped objects?

yuppie y.2006_ at wcm-solutions.de
Fri Mar 31 04:47:36 EST 2006


Hi Andreas!


Andreas Jung wrote:
> we have a CMF-based application where I am trying to migrate from 
> TextIndexNG 2 -> 3.
> 
> For a content-type class A I have configured an adapter to implement
> IIndexableContent. However when the object is reindexed CMF wraps
> the object as IndexableObjectWrapper which by itself implements
> the IndexableObjectWrapper interface. The low-level indexer of TXNG
> get the wrapped object and has no idea what to do with the object since 
> the interface of the wrapper  shadows the interface of the wrapped object.
> Any idea how to deal with this problem?

I'm currently fighting with the same issue. And I was in the process of 
writing a mail to the Zope-CMF list when your mail came in. AFAICS this 
is more a CMF issue than a Five issue, so I add Zope-CMF to the 
recipients list.


Just for the records, I'm sure you already figured that out yourself:

Plone 2.1 doesn't have this issue because it has no interface 
declaration on its ExtensibleIndexableObjectWrapper.  If the wrapper 
doesn't have its own __providedBy__ attribute the __getattr__ method 
looks it up in the wrapped class, making the interface declarations 
completely transparent.

Plone 2.5 has an interface declaration so I guess it has the same 
problem as the CMF.


The quick and dirty solution would be to remove the interface 
declaration from the wrapper. The clean solution would be to make sure 
that all the interfaces that are actually provided - the wrapper 
interface *and* the interfaces of the wrapped object - can be looked up. 
But implementing that seems to require deeper knowledge of the interface 
machinery than I have.

So if nobody can come up with a patch for the clean solution I propose 
just to remove the interface declaration in CMF.

An alternative approach would be to modify TextIndexNG and try to unwrap 
the object if no adapter can be found. But that would mean that 
TextIndexNG would depend on the knowledge of CMF specific implementation 
details.


Cheers,

	Yuppie




More information about the Zope-CMF mailing list