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