Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-04-12 05:11:09 +0000
committerslewis2005-04-12 05:11:09 +0000
commit820d024091652c6e8be77c54b2413b50fd353aee (patch)
treee547735d6b9968efbd20f12f4df26f69aa520b1f
parent1c1c8218073cb72d49ffc71739e26892a311a379 (diff)
downloadorg.eclipse.ecf-820d024091652c6e8be77c54b2413b50fd353aee.tar.gz
org.eclipse.ecf-820d024091652c6e8be77c54b2413b50fd353aee.tar.xz
org.eclipse.ecf-820d024091652c6e8be77c54b2413b50fd353aee.zip
Fixed bug in group handling. Added IAccountManager interface to org.eclipse.ecf.presence.IPresenceContainer interface. Created/added IPresenceSender and moved sendPresenceUpdate method to IPresenceSender interface (rather than IMessageSender). Provided implementation of all three interfaces in org.eclipse.ecf.provider.xmpp provider
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java26
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java26
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java2
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java4
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java19
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AuthorizeRequest.java35
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java27
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java46
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java65
10 files changed, 214 insertions, 38 deletions
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java
index efff0e7b2..c35b82b42 100644
--- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java
+++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java
@@ -18,6 +18,7 @@ import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
+
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -36,13 +37,15 @@ import org.eclipse.ecf.example.collab.share.EclipseCollabSharedObject;
import org.eclipse.ecf.example.collab.share.SharedObjectEventListener;
import org.eclipse.ecf.example.collab.share.TreeItem;
import org.eclipse.ecf.example.collab.share.User;
+import org.eclipse.ecf.presence.IAccountManager;
import org.eclipse.ecf.presence.IMessageListener;
import org.eclipse.ecf.presence.IMessageSender;
import org.eclipse.ecf.presence.IPresence;
import org.eclipse.ecf.presence.IPresenceContainer;
import org.eclipse.ecf.presence.IPresenceListener;
-import org.eclipse.ecf.presence.ISubscribeListener;
+import org.eclipse.ecf.presence.IPresenceSender;
import org.eclipse.ecf.presence.IRosterEntry;
+import org.eclipse.ecf.presence.ISubscribeListener;
import org.eclipse.ecf.presence.impl.Presence;
import org.eclipse.ecf.ui.views.ITextInputHandler;
import org.eclipse.ecf.ui.views.RosterView;
@@ -311,11 +314,15 @@ public class Client {
protected RosterView rosterView = null;
protected IMessageSender messageSender = null;
-
+ protected IPresenceSender presenceSender = null;
+ protected IAccountManager accountManager = null;
+
protected void setupPresenceContainer(final ISharedObjectContainer container, IPresenceContainer pc, final ID localUser, final String nick) {
messageSender = pc.getMessageSender();
-
+ presenceSender = pc.getPresenceSender();
+ accountManager = pc.getAccountManager();
+
Display.getDefault().syncExec(new Runnable() {
public void run() {
try {
@@ -370,6 +377,15 @@ public class Client {
rosterView.setGroup(joinedContainer);
}
});
+ // XXX TESTING OF ACCOUNT CREATION
+ /*
+ try {
+ accountManager.createAccount("foo1","foo1",null);
+ } catch (ECFException e) {
+ e.printStackTrace();
+ }
+ */
+
}
public void handleRosterEntry(final IRosterEntry entry) {
@@ -405,8 +421,8 @@ public class Client {
public void handleSubscribeRequest(ID fromID, IPresence presence) {
System.out.println("subscribe request from "+fromID);
- if (messageSender != null) {
- messageSender.sendPresenceUpdate(localUser,fromID,new Presence(IPresence.Type.SUBSCRIBED));
+ if (presenceSender != null) {
+ presenceSender.sendPresenceUpdate(localUser,fromID,new Presence(IPresence.Type.SUBSCRIBED));
}
}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java
new file mode 100644
index 000000000..d04cc92b2
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java
@@ -0,0 +1,26 @@
+/****************************************************************************
+* Copyright (c) 2004 Composent, Inc. and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Composent, Inc. - initial API and implementation
+*****************************************************************************/
+package org.eclipse.ecf.presence;
+
+import java.util.Map;
+
+import org.eclipse.ecf.core.util.ECFException;
+
+public interface IAccountManager {
+
+ public void changePassword(String newpassword) throws ECFException;
+ public void createAccount(String username, String password, Map attributes) throws ECFException;
+ public void deleteAccount() throws ECFException;
+ public String getAccountInstructions();
+ public String[] getAccountAttributeNames();
+ public Object getAccountAttribute(String name);
+ public boolean supportsCreation();
+}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java
index 9ab209395..f03d39583 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java
@@ -16,6 +16,4 @@ import org.eclipse.ecf.presence.IMessageListener.Type;
public interface IMessageSender {
public void sendMessage(ID fromID, ID toID, Type type, String subject, String message);
- public void sendPresenceUpdate(ID fromID, ID toID, IPresence presence);
-
}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java
index f1f47be6a..65d71ca54 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java
@@ -22,7 +22,9 @@ public interface IPresenceContainer {
public void addSharedObjectMessageListener(ISharedObjectMessageListener listener);
public IMessageSender getMessageSender();
-
+ public IPresenceSender getPresenceSender();
+ public IAccountManager getAccountManager();
+
public ISharedObjectContainer makeSharedObjectContainer(Class [] types, Object [] args) throws SharedObjectContainerInstantiationException;
}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java
new file mode 100644
index 000000000..baa3c97ac
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java
@@ -0,0 +1,19 @@
+/****************************************************************************
+* Copyright (c) 2004 Composent, Inc. and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Composent, Inc. - initial API and implementation
+*****************************************************************************/
+package org.eclipse.ecf.presence;
+
+import org.eclipse.ecf.core.identity.ID;
+
+public interface IPresenceSender {
+
+ public void sendPresenceUpdate(ID fromID, ID toID, IPresence presence);
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF
index 20fde5fc2..3e2d9ee21 100644
--- a/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF
@@ -14,6 +14,6 @@ Require-Bundle: org.eclipse.ecf,
Eclipse-AutoStart: true
Provide-Package: org.eclipse.ecf.ui,
org.eclipse.ecf.ui.views
-Export-Package: org.eclipse.ecf.ui.views
+Export-Package: org.eclipse.ecf.ui.views, org.eclipse.ecf.ui.dialogs
DynamicImport-Package: org.eclipse.ecf.presence, org.eclipse.ecf.presence.impl
diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AuthorizeRequest.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AuthorizeRequest.java
index 138f36d86..93003632d 100644
--- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AuthorizeRequest.java
+++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AuthorizeRequest.java
@@ -14,6 +14,9 @@ import org.eclipse.swt.widgets.Shell;
public class AuthorizeRequest extends Dialog {
+ private String targetName = "target";
+ private String requesterName = "requester";
+
private Label target_username;
private Label requester_userid;
private static final int REFUSE_ID = IDialogConstants.CLIENT_ID + 3;
@@ -23,6 +26,12 @@ public class AuthorizeRequest extends Dialog {
public AuthorizeRequest(Shell parentShell) {
super(parentShell);
}
+
+ public AuthorizeRequest(Shell parentShell, String fromName, String toName) {
+ super(parentShell);
+ this.requesterName = fromName;
+ this.targetName = toName;
+ }
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
@@ -33,34 +42,38 @@ public class AuthorizeRequest extends Dialog {
gridLayout.numColumns = 4;
composite.setLayout(gridLayout);
final GridData gridData_1 = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_VERTICAL);
- gridData_1.heightHint = 22;
+ gridData_1.heightHint = 52;
gridData_1.verticalSpan = 2;
composite.setLayoutData(gridData_1);
requester_userid = new Label(composite, SWT.NONE);
- final GridData gridData_2 = new GridData();
+ final GridData gridData_2 = new GridData(GridData.GRAB_VERTICAL);
requester_userid.setLayoutData(gridData_2);
- requester_userid.setText("slewis@cerf.composent.com");
+ requester_userid.setText(requesterName);
final Label label_4 = new Label(composite, SWT.NONE);
label_4.setText(" would like to add ");
target_username = new Label(composite, SWT.NONE);
target_username.setLayoutData(new GridData());
- target_username.setText("slewis@composent.com");
+ target_username.setText(targetName);
final Label label_5 = new Label(composite, SWT.NONE);
label_5.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
label_5.setText(" to their buddy list");
final Composite composite_1 = new Composite(container, SWT.NONE);
- composite_1.setLayout(new FillLayout(SWT.VERTICAL));
+ composite_1.setLayout(new GridLayout());
final GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.heightHint = 82;
+ gridData.heightHint = 73;
composite_1.setLayoutData(gridData);
final Label label = new Label(composite_1, SWT.WRAP);
- label.setText("\nYou can choose to authorize and also add them to your own buddy list, authorize them without adding them to your buddy list, or refuse to authorize");
+ final GridData gridData_4 = new GridData();
+ gridData_4.heightHint = 56;
+ gridData_4.widthHint = 462;
+ label.setLayoutData(gridData_4);
+ label.setText("You may choose to authorize and add them to your own buddy list, authorize without adding them to your buddy list, or refuse to authorize");
final Label label_3 = new Label(container, SWT.SEPARATOR | SWT.HORIZONTAL);
final GridData gridData_3 = new GridData(GridData.FILL_HORIZONTAL);
@@ -81,11 +94,13 @@ public class AuthorizeRequest extends Dialog {
}
protected Point getInitialSize() {
- return new Point(507, 196);
+ return new Point(486, 223);
}
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
- newShell.setText("ECF Authorization Request");
+ newShell.setText("ECF Authorization request from "+requesterName);
+ }
+ protected void buttonPressed(int button) {
+ System.out.println("button "+button+" pressed");
}
-
}
diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java
index cc2f7768b..c9e9eb33c 100644
--- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java
+++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java
@@ -278,21 +278,15 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
return newBuddy;
}
- public TreeParent findGroup(TreeParent parent, IRosterEntry entry) {
+ public TreeGroup findGroup(TreeParent parent, String name) {
TreeObject [] objs = parent.getChildren();
- Iterator groups = entry.getGroups();
- for( ; groups.hasNext(); ) {
- IRosterGroup grp = (IRosterGroup) groups.next();
- String groupName = grp.getName();
- if (objs != null) {
- for(int i = 0; i < objs.length; i++) {
- if (objs[i].getName().equals(groupName)) {
- return (TreeParent) objs[i];
- }
+ if (objs != null) {
+ for(int i = 0; i < objs.length; i++) {
+ if (objs[i].getName().equals(name)) {
+ return (TreeGroup) objs[i];
}
}
}
-
return null;
}
@@ -336,9 +330,14 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
if (groups.hasNext()) {
// There's a group associated with entry...so add with group name
String groupName = ((IRosterGroup) groups.next()).getName();
- TreeGroup newgrp = new TreeGroup(groupName);
- newgrp.addChild(newBuddy);
- parent.addChild(newgrp);
+ TreeGroup oldgrp = findGroup(parent,groupName);
+ if (oldgrp != null) {
+ oldgrp.addChild(newBuddy);
+ } else {
+ TreeGroup newgrp = new TreeGroup(groupName);
+ newgrp.addChild(newBuddy);
+ parent.addChild(newgrp);
+ }
} else {
parent.addChild(newBuddy);
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java
index e0976daa7..b41a6fef7 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java
@@ -11,6 +11,7 @@ package org.eclipse.ecf.provider.xmpp.container;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
+import java.util.Map;
import org.eclipse.ecf.core.ISharedObjectContainer;
import org.eclipse.ecf.core.SharedObjectAddException;
@@ -24,12 +25,15 @@ import org.eclipse.ecf.core.events.SharedObjectContainerJoinedEvent;
import org.eclipse.ecf.core.events.SharedObjectContainerLeaveGroupEvent;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.util.ECFException;
import org.eclipse.ecf.core.util.IQueueEnqueue;
+import org.eclipse.ecf.presence.IAccountManager;
import org.eclipse.ecf.presence.IMessageListener;
import org.eclipse.ecf.presence.IMessageSender;
import org.eclipse.ecf.presence.IPresence;
import org.eclipse.ecf.presence.IPresenceContainer;
import org.eclipse.ecf.presence.IPresenceListener;
+import org.eclipse.ecf.presence.IPresenceSender;
import org.eclipse.ecf.presence.ISharedObjectMessageListener;
import org.eclipse.ecf.presence.ISubscribeListener;
import org.eclipse.ecf.presence.IMessageListener.Type;
@@ -329,6 +333,10 @@ public class XMPPClientSOContainer extends ClientSOContainer {
}
+ };
+ }
+ public IPresenceSender getPresenceSender() {
+ return new IPresenceSender() {
public void sendPresenceUpdate(ID fromID, ID toID, IPresence presence) {
try {
Presence newPresence = makePresenceFromIPresence(presence);
@@ -337,10 +345,42 @@ public class XMPPClientSOContainer extends ClientSOContainer {
dumpStack("Exception in sendPresenceUpdate to "+toID+" with presence "+presence,e);
}
}
-
- };
- }
+
+ };
+ }
+
+ public IAccountManager getAccountManager() {
+ return new IAccountManager() {
+
+ public void changePassword(String newpassword) throws ECFException {
+ sharedObject.changePassword(newpassword);
+ }
+
+ public void createAccount(String username, String password, Map attributes) throws ECFException {
+ sharedObject.createAccount(username,password,attributes);
+ }
+ public void deleteAccount() throws ECFException {
+ sharedObject.deleteAccount();
+ }
+
+ public String getAccountInstructions() {
+ return sharedObject.getAccountInstructions();
+ }
+
+ public String[] getAccountAttributeNames() {
+ return sharedObject.getAccountAttributeNames();
+ }
+
+ public Object getAccountAttribute(String name) {
+ return sharedObject.getAccountAttribute(name);
+ }
+
+ public boolean supportsCreation() {
+ return sharedObject.supportsCreation();
+ }
+ };
+ }
public ISharedObjectContainer makeSharedObjectContainer(Class[] types, Object[] args) throws SharedObjectContainerInstantiationException {
return null;
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java
index 3334f76fa..8e41d9c27 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java
@@ -8,7 +8,10 @@
******************************************************************************/
package org.eclipse.ecf.provider.xmpp.container;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import java.util.Vector;
import org.eclipse.ecf.core.ISharedObject;
import org.eclipse.ecf.core.ISharedObjectConfig;
@@ -21,7 +24,9 @@ import org.eclipse.ecf.core.events.ISharedObjectDeactivatedEvent;
import org.eclipse.ecf.core.events.ISharedObjectMessageEvent;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.util.ECFException;
import org.eclipse.ecf.core.util.Event;
+import org.eclipse.ecf.presence.IAccountManager;
import org.eclipse.ecf.presence.IMessageListener;
import org.eclipse.ecf.presence.IPresence;
import org.eclipse.ecf.presence.IPresenceListener;
@@ -34,10 +39,12 @@ import org.eclipse.ecf.provider.xmpp.events.IQEvent;
import org.eclipse.ecf.provider.xmpp.events.MessageEvent;
import org.eclipse.ecf.provider.xmpp.events.PresenceEvent;
import org.eclipse.ecf.provider.xmpp.identity.XMPPID;
+import org.jivesoftware.smack.AccountManager;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.RosterGroup;
import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;
@@ -49,11 +56,12 @@ import org.jivesoftware.smack.packet.Presence.Type;
* @author slewis
*
*/
-public class XMPPPresenceSharedObject implements ISharedObject {
+public class XMPPPresenceSharedObject implements ISharedObject, IAccountManager {
public static Trace trace = Trace.create("xmpppresencesharedobject");
ISharedObjectConfig config = null;
XMPPConnection connection = null;
+ AccountManager accountManager = null;
Vector messageListeners = new Vector();
Vector presenceListeners = new Vector();
Vector sharedObjectMessageListeners = new Vector();
@@ -113,6 +121,7 @@ public class XMPPPresenceSharedObject implements ISharedObject {
*/
public void dispose(ID containerID) {
config = null;
+ accountManager = null;
}
protected void dumpStack(String msg, Throwable e) {
@@ -517,6 +526,58 @@ public class XMPPPresenceSharedObject implements ISharedObject {
protected void setConnection(XMPPConnection connection) {
this.connection = connection;
- }
+ if (connection != null) {
+ accountManager = new AccountManager(connection);
+ }
+ }
+ public void changePassword(String newpassword) throws ECFException {
+ if (accountManager == null) throw new ECFException("not connected");
+ try {
+ accountManager.changePassword(newpassword);
+ } catch (XMPPException e) {
+ dumpStack("server exception changing password",e);
+ throw new ECFException("server exception changing password",e);
+ }
+ }
+ public void createAccount(String username, String password, Map attributes) throws ECFException {
+ if (accountManager == null) throw new ECFException("not connected");
+ try {
+ accountManager.createAccount(username,password,attributes);
+ } catch (XMPPException e) {
+ dumpStack("server exception creating account for "+username,e);
+ throw new ECFException("server exception creating account for "+username,e);
+ }
+ }
+ public void deleteAccount() throws ECFException {
+ if (accountManager == null) throw new ECFException("not connected");
+ try {
+ accountManager.deleteAccount();
+ } catch (XMPPException e) {
+ dumpStack("server exception deleting account",e);
+ throw new ECFException("server exception deleting account",e);
+ }
+ }
+ public String getAccountInstructions() {
+ if (accountManager == null) return null;
+ return accountManager.getAccountInstructions();
+ }
+ public String[] getAccountAttributeNames() {
+ if (accountManager == null) return null;
+ Iterator i = accountManager.getAccountAttributes();
+ List l = new ArrayList();
+ for(; i.hasNext(); ) {
+ l.add(i.next());
+ }
+ return (String []) l.toArray(new String[] {});
+ }
+ public Object getAccountAttribute(String name) {
+ if (accountManager == null) return null;
+ return accountManager.getAccountAttribute(name);
+ }
+
+ public boolean supportsCreation() {
+ if (accountManager == null) return false;
+ return accountManager.supportsAccountCreation();
+ }
}

Back to the top