Author: fmancinelli
Date: 2007-11-30 15:06:49 +0100 (Fri, 30 Nov 2007)
New Revision: 6189

Modified:
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/XWikiEclipsePageIndexer.java
   
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiPlainConnection.java
Log:
* Fixed a serious bug in the background indexer that put connections in bad 
states due to concurrency problems.

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/XWikiEclipsePageIndexer.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/XWikiEclipsePageIndexer.java
 2007-11-30 14:04:28 UTC (rev 6188)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/XWikiEclipsePageIndexer.java
 2007-11-30 14:06:49 UTC (rev 6189)
@@ -11,6 +11,7 @@
 import org.xwiki.eclipse.model.IXWikiConnection;
 import org.xwiki.eclipse.model.IXWikiPage;
 import org.xwiki.eclipse.model.IXWikiSpace;
+import org.xwiki.eclipse.model.XWikiConnectionFactory;
 import org.xwiki.plugins.eclipse.XWikiEclipsePlugin;
 
 /**
@@ -57,19 +58,28 @@
                 monitor.beginTask(String.format("Indexing connection..."),
                     IProgressMonitor.UNKNOWN);
 
-                if (monitor.isCanceled()) {                   
+                if (monitor.isCanceled() || !connection.isConnected()) {       
            
                     return Status.CANCEL_STATUS;
                 }
 
-                Collection<IXWikiSpace> spaces = connection.getSpaces();
-
+                /* Use a working connection in order to not interfere with the 
"master" one */
+                IXWikiConnection workingConnection = 
XWikiConnectionFactory.createPlainConnection(connection.getServerUrl(), 
connection.getUserName());
+                
workingConnection.connect(XWikiConnectionManager.getDefault().getPasswordForConnection(connection));
                
+                
+                /* Check that the master connection is still "connected", 
otherwise cancel indexing */
+                if (monitor.isCanceled() || !connection.isConnected()) {       
            
+                    return Status.CANCEL_STATUS;
+                }
+                
+                Collection<IXWikiSpace> spaces = workingConnection.getSpaces();
+                
                 for (IXWikiSpace space : spaces) {
-                    if (monitor.isCanceled()) {              
+                    if (monitor.isCanceled() || !connection.isConnected()) {   
           
                         return Status.CANCEL_STATUS;
                     }
 
                     Collection<IXWikiPage> pages = space.getPages();
-                    for (IXWikiPage page : pages) {
+                    for (IXWikiPage page : pages) {                 
                         pageIndex.addPage(page);
                     }
                 }

Modified: 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiPlainConnection.java
===================================================================
--- 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiPlainConnection.java
 2007-11-30 14:04:28 UTC (rev 6188)
+++ 
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/eclipse/model/impl/XWikiPlainConnection.java
 2007-11-30 14:06:49 UTC (rev 6189)
@@ -82,9 +82,6 @@
 
             throw new XWikiConnectionException(e);
         }
-
-        XWikiEclipseNotificationCenter.getDefault().fireEvent(this,
-            XWikiEclipseEvent.CONNECTION_ESTABLISHED, this);
     }
 
     /**
@@ -106,9 +103,6 @@
         } catch (XWikiDAOException e) {
             e.printStackTrace();
         }
-
-        XWikiEclipseNotificationCenter.getDefault().fireEvent(this,
-            XWikiEclipseEvent.CONNECTION_CLOSED, this);
     }
 
     /**

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to