diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..7b6c0f3
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ab8b557
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/build
+/dist
diff --git a/.project b/.project
new file mode 100644
index 0000000..bad2b1a
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ UMongoi
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/lib/mongo-java-driver-2.12.2.jar b/lib/mongo-java-driver-2.12.2.jar
deleted file mode 100644
index f15fbc9..0000000
Binary files a/lib/mongo-java-driver-2.12.2.jar and /dev/null differ
diff --git a/lib/mongo-java-driver-2.13.0.jar b/lib/mongo-java-driver-2.13.0.jar
new file mode 100644
index 0000000..6555bbd
Binary files /dev/null and b/lib/mongo-java-driver-2.13.0.jar differ
diff --git a/manifest.mf b/manifest.mf
index ab199b4..fa7b61b 100644
--- a/manifest.mf
+++ b/manifest.mf
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Bundle-Name: UMongo
-Bundle-Version: 1.6.2
+Bundle-Version: 1.6.3
Bundle-Vendor: EdgyTech, LLC
Bundle-ContactAddress: http://www.edgytech.com/umongo
Bundle-SymbolicName: com.edgytech.umongo
diff --git a/nbproject/project.properties b/nbproject/project.properties
index 7fd254f..4890d5d 100644
--- a/nbproject/project.properties
+++ b/nbproject/project.properties
@@ -27,15 +27,16 @@ dist.jar=${dist.dir}/umongo.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
+file.reference.SwingFast.jar=lib/SwingFast.jar
file.reference.gson-2.2.4.jar=lib/gson-2.2.4.jar
-file.reference.mongo-java-driver-2.12.2.jar=lib/mongo-java-driver-2.12.2.jar
+file.reference.mongo-java-driver-2.13.0.jar=lib/mongo-java-driver-2.13.0.jar
file.reference.trunk-resource=resource
file.reference.trunk-src=src
includes=**
jar.compress=true
javac.classpath=\
- ${reference.SwingFast.jar}:\
- ${file.reference.mongo-java-driver-2.12.2.jar}:\
+ ${file.reference.SwingFast.jar}:\
+ ${file.reference.mongo-java-driver-2.13.0.jar}:\
${file.reference.gson-2.2.4.jar}
# Space-separated list of extra javac options
javac.compilerargs=
@@ -67,8 +68,6 @@ manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
-project.SwingFast=../SwingFast/trunk
-reference.SwingFast.jar=${project.SwingFast}/dist/SwingFast.jar
resource.dir=${file.reference.trunk-resource}
run.classpath=\
${javac.classpath}:\
diff --git a/src/com/edgytech/umongo/DbPanel.java b/src/com/edgytech/umongo/DbPanel.java
index d848120..e474ec2 100644
--- a/src/com/edgytech/umongo/DbPanel.java
+++ b/src/com/edgytech/umongo/DbPanel.java
@@ -76,7 +76,6 @@ enum Item {
evalNoLock,
dbHash,
readWriteOptions,
- authenticate,
authUser,
authPassword,
manageUsers,
@@ -367,47 +366,6 @@ public void readWriteOptions(ButtonBase button) {
refresh();
}
- public void authenticate(final ButtonBase button) {
- final DbNode dbNode = getDbNode();
- final DB db = dbNode.getDb();
- final String user = getStringFieldValue(Item.authUser);
- final String pass = getStringFieldValue(Item.authPassword);
- new DbJob() {
-
- @Override
- public Object doRun() {
- db.authenticateCommand(user, pass.toCharArray());
- return null;
- }
-
- @Override
- public String getNS() {
- return db.getName();
- }
-
- @Override
- public String getShortName() {
- return "Auth";
- }
-
- @Override
- public void wrapUp(Object res) {
- super.wrapUp(res);
- if (dbNode.getDb().getName().equals("admin")) {
- // now we can list dbs, refresh whole mongo
- dbNode.getMongoNode().structureComponent();
- } else {
- dbNode.structureComponent();
- }
- }
-
- @Override
- public ButtonBase getButton() {
- return button;
- }
- }.addJob();
- }
-
void refreshUserList() {
ListArea list = (ListArea) getBoundUnit(Item.userList);
final DB db = getDbNode().getDb();
diff --git a/src/com/edgytech/umongo/MainMenu.java b/src/com/edgytech/umongo/MainMenu.java
index 047825c..e04bbea 100644
--- a/src/com/edgytech/umongo/MainMenu.java
+++ b/src/com/edgytech/umongo/MainMenu.java
@@ -23,6 +23,7 @@
import com.edgytech.umongo.MainMenu.Item;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
+import com.mongodb.MongoCredential;
import com.mongodb.MongoURI;
import java.io.BufferedReader;
import java.io.InputStreamReader;
@@ -179,36 +180,39 @@ public void connect() {
addrs.add(new ServerAddress(tmp[0]));
}
}
- if ("Direct".equals(dialog.getStringFieldValue(ConnectDialog.Item.connectionMode)))
- mongo = new MongoClient(addrs.get(0), dialog.getMongoClientOptions());
- else
- mongo = new MongoClient(addrs, dialog.getMongoClientOptions());
-
+
String sdbs = dialog.getStringFieldValue(ConnectDialog.Item.databases);
if (!sdbs.trim().isEmpty()) {
for (String db : sdbs.split(",")) {
dbs.add(db.trim());
}
}
+
+ List lCreds = new ArrayList();
+ String user = dialog.getStringFieldValue(ConnectDialog.Item.user).trim();
+ String password = dialog.getStringFieldValue(ConnectDialog.Item.password);
+ if (!user.isEmpty()) {
+ // authenticate against all dbs
+ if (!dbs.isEmpty()) {
+ for (String db : dbs) {
+ lCreds.add(MongoCredential.createCredential(user, db, password.toCharArray()));
+ }
+ } else {
+ lCreds.add(MongoCredential.createCredential(user, "admin", password.toCharArray()));
+ }
+ }
+
+ if ("Direct".equals(dialog.getStringFieldValue(ConnectDialog.Item.connectionMode)))
+ mongo = new MongoClient(addrs.get(0), lCreds, dialog.getMongoClientOptions());
+ else
+ mongo = new MongoClient(addrs, lCreds, dialog.getMongoClientOptions());
+
}
if (dbs.size() == 0) {
dbs = null;
}
- String user = dialog.getStringFieldValue(ConnectDialog.Item.user).trim();
- String password = dialog.getStringFieldValue(ConnectDialog.Item.password);
- if (!user.isEmpty()) {
- // authenticate against all dbs
- if (dbs != null) {
- for (String db : dbs) {
- mongo.getDB(db).authenticate(user, password.toCharArray());
- }
- } else {
- mongo.getDB("admin").authenticate(user, password.toCharArray());
- }
- }
-
final MongoClient fmongo = mongo;
final List fdbs = dbs;
// doing in background can mean concurrent modification, but dialog is modal so unlikely
diff --git a/src/com/edgytech/umongo/MongoPanel.java b/src/com/edgytech/umongo/MongoPanel.java
index 779e9f8..424ee0c 100644
--- a/src/com/edgytech/umongo/MongoPanel.java
+++ b/src/com/edgytech/umongo/MongoPanel.java
@@ -56,7 +56,6 @@ enum Item {
close,
createDB,
createDbName,
- authenticate,
authUser,
authPassword,
maxObjectSize,
@@ -185,45 +184,6 @@ public void wrapUp(Object res) {
}.addJob();
}
- public void authenticate(final ButtonBase button) {
- final MongoClient mongo = getMongoNode().getMongoClient();
- final String user = getStringFieldValue(Item.authUser);
- final String passwd = getStringFieldValue(Item.authPassword);
-
- new DbJob() {
- @Override
- public Object doRun() throws IOException {
- mongo.getDB("admin").authenticateCommand(user, passwd.toCharArray());
- return null;
- }
-
- @Override
- public String getNS() {
- return "Mongo";
- }
-
- @Override
- public String getShortName() {
- return "Auth";
- }
-
- @Override
- public void wrapUp(Object res) {
- super.wrapUp(res);
- if (res == null) {
- // need to refresh tree
- refresh();
- }
- }
-
- @Override
- public ButtonBase getButton() {
- return button;
- }
- }.addJob();
-
- }
-
public void serverStatus(ButtonBase button) {
new DbJobCmd(getMongoNode().getMongoClient().getDB("admin"), "serverStatus").addJob();
}
diff --git a/src/com/edgytech/umongo/PasswordPromptDialog.java b/src/com/edgytech/umongo/PasswordPromptDialog.java
new file mode 100644
index 0000000..516ebdb
--- /dev/null
+++ b/src/com/edgytech/umongo/PasswordPromptDialog.java
@@ -0,0 +1,22 @@
+package com.edgytech.umongo;
+
+import com.edgytech.swingfast.FormDialog;
+
+public class PasswordPromptDialog extends FormDialog {
+
+ public enum Item {
+ resource, password;
+ }
+
+ public PasswordPromptDialog() {
+ setEnumBinding(Item.values(), null);
+ }
+
+ public void setResource(String resource) {
+ setStringFieldValue(Item.resource, resource);
+ }
+
+ public String getPassword() {
+ return getStringFieldValue(Item.password);
+ }
+}
diff --git a/src/com/edgytech/umongo/TextView.java b/src/com/edgytech/umongo/TextView.java
index 21db17e..928e913 100644
--- a/src/com/edgytech/umongo/TextView.java
+++ b/src/com/edgytech/umongo/TextView.java
@@ -67,12 +67,6 @@ public TextView(String id, String label, DbJob job) {
/**
* create a doc view with static document
- *
- * @param id
- * @param label
- * @param job
- * @param root
- * @param doc
*/
public TextView(String id, String label, DbJob job, String text) {
this(id, label, job);