Index: com/xpn/xwiki/plugin/lucene/IndexData.java =================================================================== --- com/xpn/xwiki/plugin/lucene/IndexData.java (révision 2268) +++ com/xpn/xwiki/plugin/lucene/IndexData.java (copie de travail) @@ -19,15 +19,16 @@ */ package com.xpn.xwiki.plugin.lucene; -import com.xpn.xwiki.XWikiContext; -import com.xpn.xwiki.doc.XWikiDocument; +import java.util.Date; + import org.apache.log4j.Logger; import org.apache.lucene.document.Field; import org.apache.lucene.index.Term; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; -import java.util.Date; +import com.xpn.xwiki.XWikiContext; +import com.xpn.xwiki.doc.XWikiDocument; /** * @version $Id: $ @@ -90,8 +91,9 @@ XWikiContext context) { // Keyword fields: stored and indexed, but not tokenized + //Note : ID field must be UN_TOKENIZED to enable case sensitive IDs luceneDoc.add( - new Field(IndexFields.DOCUMENT_ID, getId(), Field.Store.YES, Field.Index.TOKENIZED)); + new Field(IndexFields.DOCUMENT_ID, getId(), Field.Store.YES, Field.Index.UN_TOKENIZED)); luceneDoc.add(new Field(IndexFields.DOCUMENT_LANGUAGE, this.language, Field.Store.YES, Field.Index.TOKENIZED)); if (wiki != null && wiki.length() > 0) { Index: com/xpn/xwiki/plugin/lucene/LucenePlugin.java =================================================================== --- com/xpn/xwiki/plugin/lucene/LucenePlugin.java (révision 2268) +++ com/xpn/xwiki/plugin/lucene/LucenePlugin.java (copie de travail) @@ -79,7 +79,10 @@ public LucenePlugin(String name, String className, XWikiContext context) { super(name, className, context); - init(context); + + // "init" will be invoked by the core. Do not invoke manually, or will + // invoked twice +// init(context); } /** Index: com/xpn/xwiki/plugin/lucene/IndexUpdater.java =================================================================== --- com/xpn/xwiki/plugin/lucene/IndexUpdater.java (révision 2268) +++ com/xpn/xwiki/plugin/lucene/IndexUpdater.java (copie de travail) @@ -19,13 +19,15 @@ */ package com.xpn.xwiki.plugin.lucene; -import com.xpn.xwiki.XWiki; -import com.xpn.xwiki.XWikiContext; -import com.xpn.xwiki.doc.XWikiAttachment; -import com.xpn.xwiki.doc.XWikiDocument; -import com.xpn.xwiki.notify.XWikiActionNotificationInterface; -import com.xpn.xwiki.notify.XWikiDocChangeNotificationInterface; -import com.xpn.xwiki.notify.XWikiNotificationRule; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; + import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.log4j.MDC; @@ -38,14 +40,13 @@ import org.apache.lucene.search.Query; import org.apache.lucene.store.FSDirectory; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; +import com.xpn.xwiki.XWiki; +import com.xpn.xwiki.XWikiContext; +import com.xpn.xwiki.doc.XWikiAttachment; +import com.xpn.xwiki.doc.XWikiDocument; +import com.xpn.xwiki.notify.XWikiActionNotificationInterface; +import com.xpn.xwiki.notify.XWikiDocChangeNotificationInterface; +import com.xpn.xwiki.notify.XWikiNotificationRule; /** * @version $Id: $ @@ -114,7 +115,6 @@ XWikiContext context = (XWikiContext) this.context.clone(); context.getWiki().getStore().cleanUp(context); IndexData data = queue.remove(); - try { oldDocs.addAll(getOldIndexDocIds(data)); XWikiDocument doc = xwiki.getDocument(data.getFullName(), context); @@ -332,7 +332,8 @@ indexingInterval = 1000 * Integer.parseInt(config.getProperty(LucenePlugin.PROP_INDEXING_INTERVAL, "300")); - openSearcher(); + // No need to open search, each task needing the searcher will open it before +// openSearcher(); } /** @@ -444,20 +445,21 @@ LOG.debug("upload action notification for doc " + doc.getName()); } try { - List attachments = doc.getAttachmentList(); + //Retrieve the latest version (with the file just attached) + XWikiDocument basedoc = context.getWiki() + .getDocument(doc.getFullName(), context); + List attachments = basedoc.getAttachmentList(); // find out the most recently changed attachment XWikiAttachment newestAttachment = null; for (Iterator iter = attachments.iterator(); iter.hasNext();) { XWikiAttachment attachment = (XWikiAttachment) iter.next(); - if (newestAttachment != null - && attachment.getDate().before(newestAttachment.getDate())) + if (newestAttachment == null || + attachment.getDate().after(newestAttachment.getDate())) { newestAttachment = attachment; - } else { - newestAttachment = attachment; } } - add(doc, newestAttachment, context); + add(basedoc, newestAttachment, context); } catch (Exception e) { LOG.error("error in notify", e); }