From c426f5e9edbb86c66e2a45fc873cc391f299d38c Mon Sep 17 00:00:00 2001 From: Hendy Irawan Date: Fri, 10 May 2013 14:07:30 +0700 Subject: [PATCH] Fixing http://community.jaspersoft.com/mongodb-connector/issues/2946 --- .../mongodb/connection/MongoDbConnection.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/jaspersoft/mongodb/connection/MongoDbConnection.java b/src/com/jaspersoft/mongodb/connection/MongoDbConnection.java index 3b854c4..6bfa777 100644 --- a/src/com/jaspersoft/mongodb/connection/MongoDbConnection.java +++ b/src/com/jaspersoft/mongodb/connection/MongoDbConnection.java @@ -30,6 +30,8 @@ import java.sql.Savepoint; import java.sql.Statement; import java.sql.Struct; +import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Properties; import java.util.concurrent.Executor; @@ -62,8 +64,14 @@ public class MongoDbConnection implements Connection { private DB mongoDatabase; - private final Logger logger = LoggerFactory.getLogger(MongoDbConnection.class); + private static final Logger logger = LoggerFactory.getLogger(MongoDbConnection.class); + protected static final List AUTH_ERROR_CODES = Arrays.asList(new Integer[] { + 16550, // not authorized for query on foo.system.namespaces + 10057, // unauthorized db:admin ns:admin.system.users lock type:1 client:127.0.0.1 + 15845 // unauthorized + }); + public MongoDbConnection(String mongoURI, String username, String password) throws JRException { create(this.mongoURI = mongoURI); @@ -97,7 +105,7 @@ private void setDatabase() throws JRException { } catch (Exception e) { String message = e.getMessage(); if (e instanceof MongoException) { - if (message != null && message.startsWith("unauthorized db")) { + if (AUTH_ERROR_CODES.contains(((MongoException) e).getCode())) { performaAuthentication = true; } else { logger.error("Cannot set database", e);