Author: fmancinelli
Date: 2007-10-30 00:37:13 +0100 (Tue, 30 Oct 2007)
New Revision: 5564
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiConnectionManager.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/ConnectHandler.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
Log:
XECLIPSE-30 Added connection persistence
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
2007-10-29 22:28:56 UTC (rev 5563)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/plugins/eclipse/XWikiEclipsePlugin.java
2007-10-29 23:37:13 UTC (rev 5564)
@@ -21,15 +21,13 @@
package org.xwiki.plugins.eclipse;
-import java.net.URL;
+import java.io.File;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import org.xwiki.plugins.eclipse.model.IXWikiConnection;
import org.xwiki.plugins.eclipse.model.impl.XWikiConnectionManager;
-import org.xwiki.plugins.eclipse.util.XWikiConstants;
/**
* The activator class controls the plug-in life cycle, this is a mandatory
class and is used by the
@@ -61,8 +59,12 @@
* @see
org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception
- {
+ {
super.start(context);
+ File connections = new File(getStateLocation().toFile(),
"connections.data");
+ if(connections.exists()) {
+
org.xwiki.xeclipse.XWikiConnectionManager.getDefault().restoreConnections(connections);
+ }
}
/**
@@ -79,6 +81,10 @@
// Nothing to do.
}
}
+
+ File connections = new File(getStateLocation().toFile(),
"connections.data");
+
org.xwiki.xeclipse.XWikiConnectionManager.getDefault().saveConnections(connections);
+
plugin = null;
super.stop(context);
}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiConnectionManager.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiConnectionManager.java
2007-10-29 22:28:56 UTC (rev 5563)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/XWikiConnectionManager.java
2007-10-29 23:37:13 UTC (rev 5564)
@@ -20,8 +20,15 @@
*/
package org.xwiki.xeclipse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.runtime.ListenerList;
import org.xwiki.xeclipse.model.IXWikiConnection;
@@ -31,6 +38,7 @@
private static XWikiConnectionManager sharedInstance;
private List<IXWikiConnection> xwikiConnections;
+ private Map<String, String> idToPasswordMapping;
private ListenerList connectionManagerListenerList;
@@ -46,6 +54,7 @@
private XWikiConnectionManager()
{
xwikiConnections = new ArrayList<IXWikiConnection>();
+ idToPasswordMapping = new HashMap<String, String>();
connectionManagerListenerList = new ListenerList();
}
@@ -54,20 +63,43 @@
return xwikiConnections;
}
- public void addConnection(IXWikiConnection xwikiConnection)
+ public void addConnection(IXWikiConnection xwikiConnection, String
password)
{
if (!xwikiConnections.contains(xwikiConnection)) {
xwikiConnections.add(xwikiConnection);
+ idToPasswordMapping.put(xwikiConnection.getId(), password);
fireConnectionAdded(xwikiConnection);
}
- }
+ }
public void removeConnection(IXWikiConnection xwikiConnection)
{
xwikiConnections.remove(xwikiConnection);
fireConnectionRemoved(xwikiConnection);
}
-
+
+ public String getPasswordForConnection(String id) {
+ return idToPasswordMapping.get(id);
+ }
+
+ public void saveConnections(File output) throws Exception {
+ ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream(output));
+ oos.writeObject(xwikiConnections);
+
+ /* This should be written with some encryption mechanism */
+ oos.writeObject(idToPasswordMapping);
+
+ oos.close();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void restoreConnections(File input) throws Exception {
+ ObjectInputStream ois = new ObjectInputStream(new
FileInputStream(input));
+ xwikiConnections = (List<IXWikiConnection>) ois.readObject();
+ idToPasswordMapping = (Map<String, String>) ois.readObject();
+ ois.close();
+ }
+
// /////////////////////////// Event listeners management
/////////////////////////////
public void addConnectionManagerListener(IXWikiConnectionManagerListener
listener)
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/ConnectHandler.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/ConnectHandler.java
2007-10-29 22:28:56 UTC (rev 5563)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/handlers/ConnectHandler.java
2007-10-29 23:37:13 UTC (rev 5564)
@@ -26,6 +26,7 @@
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.handlers.HandlerUtil;
+import org.xwiki.xeclipse.XWikiConnectionManager;
import org.xwiki.xeclipse.model.IXWikiConnection;
import org.xwiki.xeclipse.model.XWikiConnectionException;
import org.xwiki.xeclipse.utils.XWikiEclipseUtil;
@@ -44,11 +45,23 @@
IXWikiConnection xwikiConnection = (IXWikiConnection)
selectedObject;
try {
- InputDialog inputDialog = new
InputDialog(HandlerUtil.getActiveShell(event), "Password", "password", null,
null);
- inputDialog.open();
- String password = inputDialog.getValue();
+
+ String password =
+
XWikiConnectionManager.getDefault().getPasswordForConnection(
+ xwikiConnection.getId());
+ if (password == null) {
+ InputDialog inputDialog =
+ new InputDialog(HandlerUtil.getActiveShell(event),
+ "Password",
+ String.format("Password for [EMAIL PROTECTED]:",
xwikiConnection.getUserName(), xwikiConnection.getServerUrl()),
+ null,
+ null);
+ inputDialog.open();
+ password = inputDialog.getValue();
+ }
+
xwikiConnection.connect(password);
- } catch (XWikiConnectionException e) {
+ } catch (XWikiConnectionException e) {
e.printStackTrace();
}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
2007-10-29 22:28:56 UTC (rev 5563)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/AbstractXWikiConnection.java
2007-10-29 23:37:13 UTC (rev 5564)
@@ -1,5 +1,7 @@
package org.xwiki.xeclipse.model.impl;
+import java.io.File;
+import java.io.IOException;
import java.io.Serializable;
import java.util.UUID;
@@ -11,7 +13,7 @@
import org.xwiki.xeclipse.model.XWikiConnectionException;
/**
- * This is the base class for different type of XWiki connections
+ * This is the base class for different type of XWiki connections
*/
public abstract class AbstractXWikiConnection implements IXWikiConnection,
Serializable
{
@@ -22,7 +24,7 @@
private String userName;
protected transient boolean isDisposed;
-
+
private transient ListenerList connectionListenerList;
/**
@@ -30,8 +32,9 @@
*
* @param serverUrl The url where the XML RPC endpoint is located.
* @param userName The user name to be used when connecting to the remote
server.
+ * @throws XWikiConnectionException
*/
- public AbstractXWikiConnection(String serverUrl, String userName)
+ public AbstractXWikiConnection(String serverUrl, String userName) throws
XWikiConnectionException
{
this.serverUrl = serverUrl;
this.userName = userName;
@@ -43,7 +46,7 @@
/**
* Initialize transient fields.
*/
- private void init()
+ protected void init() throws XWikiConnectionException
{
isDisposed = false;
connectionListenerList = new ListenerList();
@@ -66,7 +69,7 @@
{
return userName;
}
-
+
protected void assertNotDisposed()
{
if (isDisposed) {
@@ -75,7 +78,7 @@
}
abstract void savePage(Page page) throws XWikiConnectionException;
-
+
abstract boolean isPageDirty(String pageId);
abstract boolean isPageConflict(String pageId);
@@ -83,9 +86,9 @@
abstract Page getRawPage(String pageId) throws XWikiConnectionException;
abstract Space getRawSpace(String key);
-
- // /////////////////////////// Event listeners management
/////////////////////////////
+ // /////////////////////////// Event listeners management
/////////////////////////////
+
public void addConnectionEstablishedListener(IXWikiConnectionListener
listener)
{
connectionListenerList.add(listener);
@@ -112,6 +115,5 @@
final IXWikiConnectionListener listener =
(IXWikiConnectionListener) listeners[i];
listener.connectionClosed(this);
}
- }
-
+ }
}
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
2007-10-29 22:28:56 UTC (rev 5563)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiCachedConnection.java
2007-10-29 23:37:13 UTC (rev 5564)
@@ -1,20 +1,17 @@
package org.xwiki.xeclipse.model.impl;
import java.io.File;
+import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
-import java.util.UUID;
import org.codehaus.swizzle.confluence.Page;
import org.codehaus.swizzle.confluence.PageSummary;
import org.codehaus.swizzle.confluence.Space;
import org.codehaus.swizzle.confluence.SpaceSummary;
-import org.eclipse.core.runtime.ListenerList;
-import org.xwiki.xeclipse.model.IXWikiConnection;
-import org.xwiki.xeclipse.model.IXWikiConnectionListener;
import org.xwiki.xeclipse.model.IXWikiPage;
import org.xwiki.xeclipse.model.IXWikiSpace;
import org.xwiki.xeclipse.model.XWikiConnectionException;
@@ -50,8 +47,10 @@
*
* @throws XWikiConnectionException
*/
- private void init() throws XWikiConnectionException
+ protected void init() throws XWikiConnectionException
{
+ super.init();
+
try {
cacheDAO = new DiskCacheDAO(new File(cacheDir, getId()));
} catch (Exception e) {
@@ -422,7 +421,23 @@
return cacheDAO.isInConflict(pageId);
}
+
+ private synchronized void writeObject(java.io.ObjectOutputStream s) throws
IOException
+ {
+ s.defaultWriteObject();
+ }
+ private synchronized void readObject(java.io.ObjectInputStream s) throws
IOException,
+ ClassNotFoundException
+ {
+ s.defaultReadObject();
+ try {
+ init();
+ } catch (XWikiConnectionException e) {
+ e.printStackTrace();
+ }
+ }
+
/**
* USED ONLY FOR UNIT TESTING
*
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
2007-10-29 22:28:56 UTC (rev 5563)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/model/impl/XWikiPlainConnection.java
2007-10-29 23:37:13 UTC (rev 5564)
@@ -1,5 +1,6 @@
package org.xwiki.xeclipse.model.impl;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -19,9 +20,7 @@
private static final long serialVersionUID = -8019449922717442495L;
private transient IXWikiDAO remoteDAO;
-
- private transient ListenerList connectionListenerList;
-
+
/**
* Constructor.
*
@@ -33,20 +32,7 @@
throws XWikiConnectionException
{
super(serverUrl, username);
-
- init();
}
-
- /**
- * Initialization of transient fields.
- *
- * @throws XWikiConnectionException
- */
- private void init() throws XWikiConnectionException
- {
- connectionListenerList = new ListenerList();
- }
-
/**
* [EMAIL PROTECTED]
@@ -253,6 +239,17 @@
return false;
}
+
+ private synchronized void writeObject(java.io.ObjectOutputStream s) throws
IOException
+ {
+ s.defaultWriteObject();
+ }
+
+ private synchronized void readObject(java.io.ObjectInputStream s) throws
IOException,
+ ClassNotFoundException
+ {
+ s.defaultReadObject();
+ }
/**
* USED ONLY FOR UNIT TESTING
Modified:
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
===================================================================
---
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
2007-10-29 22:28:56 UTC (rev 5563)
+++
xwiki-extensions/xwiki-eclipse/trunk/plugins/org.xwiki.eclipse/src/main/java/org/xwiki/xeclipse/wizards/NewConnectionWizard.java
2007-10-29 23:37:13 UTC (rev 5564)
@@ -80,7 +80,7 @@
try {
IXWikiConnection connection =
XWikiConnectionFactory.createCachedConnection(newConnectionWizardState.getServerUrl(),
newConnectionWizardState.getUserName(), new
File(XWikiEclipsePlugin.getDefault().getStateLocation().toFile(), "cache"));
- XWikiConnectionManager.getDefault().addConnection(connection);
+ XWikiConnectionManager.getDefault().addConnection(connection,
newConnectionWizardState.getPassword());
} catch (Exception e) {
e.printStackTrace();
return false;
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications