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);