On 6/15/11 2:07 PM, Stefan Seelmann wrote:
On Wed, Jun 15, 2011 at 1:53 PM, Emmanuel Lecharny<[email protected]>  wrote:
Hi,

I'm wondering if the following code snippet is just a bug, or if this was
intended :

    public PresenceEvaluator( PresenceNode node, Store<Entry, ID>  db,
SchemaManager schemaManager )
        throws Exception
    {
        this.db = db;
        this.node = node;
        this.schemaManager = schemaManager;
        this.attributeType = node.getAttributeType();

        if ( db.hasUserIndexOn( attributeType ) )
        {
            idx = db.getPresenceIndex();
        }
        else
        {
            idx = null;
        }
    }

In my case, the AttributeType is ObjectClass, which is a System index. I
find it extremely doubtful that we want to set idx to null in this very
case.
AFAIK we only add user attributes to the precence index. System
attributes (objectClass, entryUUID, entryCSN) are not added to the
precense index because they are always present in an entry so it would
be a waste of space to add them to the presence index. Instead in
another part of the PresenceEvaluator we check if the index is a
system index and return true.

Stefan, you are absolutely right. The following code demonstrate it :

    public boolean evaluateEntry( Entry entry ) throws Exception
    {
        if ( db.hasSystemIndexOn( attributeType ) )
        {
// we don't maintain a presence index for objectClass, entryUUID, and entryCSN // however as every entry has such an attribute this evaluator always evaluates to true
            return true;
        }

Thanks a lot !

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to