QPID-8017: [Broker-J] [BDB] Add context variable that allows the JUL logging 
level of JUL loggers to be overridden.


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/835efa54
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/835efa54
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/835efa54

Branch: refs/heads/master
Commit: 835efa54b82d9780d4f59a2363919d302b68a10d
Parents: 8312b9f
Author: Keith Wall <[email protected]>
Authored: Thu Jan 11 13:55:04 2018 +0000
Committer: Keith Wall <[email protected]>
Committed: Thu Jan 11 14:54:27 2018 +0000

----------------------------------------------------------------------
 .../store/berkeleydb/BDBPreferenceStore.java    | 14 ++++-
 .../qpid/server/store/berkeleydb/BDBUtils.java  | 21 ++++++-
 .../store/berkeleydb/EnvironmentFacade.java     |  1 +
 .../StandardEnvironmentConfiguration.java       |  6 +-
 .../berkeleydb/StandardEnvironmentFacade.java   |  5 +-
 .../StandardEnvironmentFacadeFactory.java       | 11 +++-
 .../berkeleydb/logging/Slf4jLoggingHandler.java | 61 +++++++++++++++++++-
 .../ReplicatedEnvironmentFacade.java            | 25 +++++---
 .../ReplicatedEnvironmentFacadeFactory.java     | 13 ++++-
 .../StandardEnvironmentFacadeTest.java          | 22 +++++--
 .../ReplicatedEnvironmentFacadeTest.java        | 52 +++++++++++++----
 .../v1_0/store/bdb/BDBLinkStoreTest.java        | 14 +++++
 12 files changed, 203 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java
index aa00932..ce4790c 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java
@@ -20,6 +20,7 @@
 package org.apache.qpid.server.store.berkeleydb;
 
 import java.io.File;
+import java.lang.reflect.Type;
 import java.util.Collection;
 import java.util.Map;
 
@@ -76,9 +77,18 @@ public class BDBPreferenceStore extends 
AbstractBDBPreferenceStore
                     }
 
                     @Override
-                    public int getFacadeParameter(final String parameterName, 
final int defaultValue)
+                    public <T> T getFacadeParameter(final Class<T> 
paremeterClass, final String parameterName, final T defaultValue)
                     {
-                        return BDBUtils.getContextValue(parent, Integer.class, 
parameterName, defaultValue);
+                        return BDBUtils.getContextValue(parent, 
paremeterClass, parameterName, defaultValue);
+                    }
+
+                    @Override
+                    public <T> T getFacadeParameter(final Class<T> 
paremeterClass,
+                                                    final Type type,
+                                                    final String parameterName,
+                                                    final T defaultValue)
+                    {
+                        return BDBUtils.getContextValue(parent, 
paremeterClass, type, parameterName, defaultValue);
                     }
                 });
             }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java
index 98fc2b3..4b87636 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java
@@ -19,6 +19,7 @@
 
 package org.apache.qpid.server.store.berkeleydb;
 
+import java.lang.reflect.Type;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -26,7 +27,6 @@ import java.util.regex.Pattern;
 
 import com.sleepycat.je.CacheMode;
 import com.sleepycat.je.CheckpointConfig;
-import com.sleepycat.je.Cursor;
 import com.sleepycat.je.DatabaseConfig;
 import com.sleepycat.je.Environment;
 import com.sleepycat.je.EnvironmentConfig;
@@ -35,7 +35,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.store.StoreException;
 import org.apache.qpid.server.virtualhost.berkeleydb.BDBVirtualHost;
 
 public class BDBUtils
@@ -160,7 +159,7 @@ public class BDBUtils
     }
 
     public static <T> T getContextValue(final ConfiguredObject<?> parent,
-                                        Class<T> paremeterClass,
+                                        final Class<T> paremeterClass,
                                         final String parameterName,
                                         final T defaultValue)
     {
@@ -173,4 +172,20 @@ public class BDBUtils
             return defaultValue;
         }
     }
+
+    public static <T> T getContextValue(final ConfiguredObject<?> parent,
+                                        final Class<T> paremeterClass,
+                                        final Type type,
+                                        final String parameterName,
+                                        final T defaultValue)
+    {
+        if (parent.getContextKeys(false).contains(parameterName))
+        {
+            return parent.getContextValue(paremeterClass, type, parameterName);
+        }
+        else
+        {
+            return defaultValue;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java
index 7a54b8b..fcf6d78 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java
@@ -54,6 +54,7 @@ public interface EnvironmentFacade
     CacheMode CACHE_MODE_DEFAULT = CacheMode.EVICT_LN;
     String LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME = 
"qpid.bdb.je.cleaner_protected_files_limit";
     int DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT = 10;
+    String JUL_LOGGER_LEVEL_OVERRIDE = "qpid.bdb.je.jul_logger_level_override";
 
 
     void upgradeIfNecessary(ConfiguredObject<?> parent);

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java
index 38fe055..c906d41 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java
@@ -19,6 +19,7 @@
 
 package org.apache.qpid.server.store.berkeleydb;
 
+import java.lang.reflect.Type;
 import java.util.Map;
 
 import com.sleepycat.je.CacheMode;
@@ -30,5 +31,8 @@ public interface StandardEnvironmentConfiguration
     CacheMode getCacheMode();
     Map<String, String> getParameters();
 
-    int getFacadeParameter(String parameterName, int defaultValue);
+    <T> T getFacadeParameter(final Class<T> paremeterClass, String 
parameterName, T defaultValue);
+
+    <T> T getFacadeParameter(Class<T> paremeterClass, Type type, String 
parameterName, T defaultValue);
+
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
index 460d656..271c54c 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
@@ -108,10 +108,7 @@ public class StandardEnvironmentFacade implements 
EnvironmentFacade
         envConfig.setAllowCreate(true);
         envConfig.setTransactional(true);
         envConfig.setCacheMode(configuration.getCacheMode());
-        int logHandlerCleanerProtectedFilesLimit = 
configuration.getFacadeParameter(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME,
-                                                                               
     DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT);
-        envConfig.setLoggingHandler(new Slf4jLoggingHandler("[" + 
configuration.getName() + "]",
-                                                            
logHandlerCleanerProtectedFilesLimit));
+        envConfig.setLoggingHandler(new Slf4jLoggingHandler(configuration));
 
         LOGGER.debug("Cache mode {}", envConfig.getCacheMode());
 

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
index 9d8eab9..08aabe2 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.server.store.berkeleydb;
 
+import java.lang.reflect.Type;
 import java.util.Map;
 
 import com.sleepycat.je.CacheMode;
@@ -73,9 +74,15 @@ public class StandardEnvironmentFacadeFactory implements 
EnvironmentFacadeFactor
             }
 
             @Override
-            public int getFacadeParameter(final String parameterName, final 
int defaultValue)
+            public <T> T getFacadeParameter(final Class<T> clazz, final String 
parameterName, final T defaultValue)
             {
-                return BDBUtils.getContextValue(parent, Integer.class, 
parameterName, defaultValue);
+                return BDBUtils.getContextValue(parent, clazz, parameterName, 
defaultValue);
+            }
+
+            @Override
+            public <T> T getFacadeParameter(final Class<T> paremeterClass, 
final Type type, final String parameterName, final T defaultValue)
+            {
+                return BDBUtils.getContextValue(parent, paremeterClass, type, 
parameterName, defaultValue);
             }
         };
 

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java
index 4848346..e05dd7d 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java
@@ -20,9 +20,16 @@
  */
 package org.apache.qpid.server.store.berkeleydb.logging;
 
+import static 
org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT;
+import static 
org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.JUL_LOGGER_LEVEL_OVERRIDE;
+import static 
org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME;
+import static 
org.apache.qpid.server.util.ParameterizedTypes.MAP_OF_STRING_STRING;
+
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.logging.ErrorManager;
@@ -37,25 +44,72 @@ import com.sleepycat.je.cleaner.Cleaner;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import 
org.apache.qpid.server.store.berkeleydb.StandardEnvironmentConfiguration;
+
 
 public class Slf4jLoggingHandler extends Handler
 {
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(Slf4jLoggingHandler.class);
+
     private static Pattern NOT_DELETED_DUE_TO_PROTECTION = 
Pattern.compile("Cleaner has ([0-9]+) files not deleted because they are 
protected.*");
 
     private final ConcurrentMap<String,Logger> _loggers = new 
ConcurrentHashMap<>();
     private final int _logHandlerCleanerProtectedFilesLimit;
+    private final String _prefix;
+    private final Set<java.util.logging.Logger> _overridedenLoggers = new 
HashSet<>();
 
-    public Slf4jLoggingHandler(final String prefix, final int 
logHandlerCleanerProtectedFilesLimit)
+    public Slf4jLoggingHandler(final StandardEnvironmentConfiguration 
configuration)
     {
+        _prefix = configuration.getName();
         setFormatter(new Formatter()
         {
             @Override
             public String format(final LogRecord record)
             {
-                return prefix + " " + formatMessage(record);
+                return _prefix + " " + formatMessage(record);
+            }
+        });
+
+        _logHandlerCleanerProtectedFilesLimit = 
configuration.getFacadeParameter(Integer.class,
+                                                                               
  LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME,
+                                                                               
  DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT);
+
+        final Map<String, String> levelOverrides = 
configuration.getFacadeParameter(Map.class,
+                                                                               
     MAP_OF_STRING_STRING,
+                                                                               
     JUL_LOGGER_LEVEL_OVERRIDE,
+                                                                               
     Collections.emptyMap());
+        applyJulLoggerLevelOverrides(levelOverrides);
+    }
+
+    private void applyJulLoggerLevelOverrides(final Map<String, String> 
julLoggerLevelOverrides)
+    {
+        julLoggerLevelOverrides.forEach((julLoggerName, julDesiredLevelString) 
-> {
+            Level julDesiredLevel;
+            try
+            {
+                julDesiredLevel = Level.parse(julDesiredLevelString);
+            }
+            catch (IllegalArgumentException e)
+            {
+                julDesiredLevel = null;
+                LOGGER.warn("Unrecognised JUL level name '{}' in JUL override 
for logger name '{}'",
+                            julDesiredLevelString, julLoggerName);
+            }
+
+            if (julDesiredLevel != null)
+            {
+                java.util.logging.Logger julLogger = 
java.util.logging.Logger.getLogger(julLoggerName);
+                if (julLogger.getLevel() == null || 
!julLogger.isLoggable(julDesiredLevel))
+                {
+                    _overridedenLoggers.add(julLogger);  // Retain reference 
in case logger is not yet held by the class
+                    julLogger.setLevel(julDesiredLevel);
+
+                    LOGGER.warn("JUL logger {} overridden to level {}",
+                                julLogger.getName(),
+                                julLogger.getLevel());
+                }
             }
         });
-        _logHandlerCleanerProtectedFilesLimit = 
logHandlerCleanerProtectedFilesLimit;
     }
 
     private interface MappedLevel
@@ -267,6 +321,7 @@ public class Slf4jLoggingHandler extends Handler
     @Override
     public void close() throws SecurityException
     {
+        _overridedenLoggers.clear();
 
     }
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
index 24d2382..c5fe0d9 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
@@ -253,13 +253,22 @@ public class ReplicatedEnvironmentFacade implements 
EnvironmentFacade, StateChan
 
         _configuration = configuration;
 
-        _masterTransferTimeout = 
configuration.getFacadeParameter(MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME, 
DEFAULT_MASTER_TRANSFER_TIMEOUT);
-        _dbPingSocketTimeout = 
configuration.getFacadeParameter(DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME, 
DEFAULT_DB_PING_SOCKET_TIMEOUT);
-        _remoteNodeMonitorInterval = 
configuration.getFacadeParameter(REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME, 
DEFAULT_REMOTE_NODE_MONITOR_INTERVAL);
-        _remoteNodeMonitorTimeout = 
configuration.getFacadeParameter(REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME, 
DEFAULT_REMOTE_NODE_MONITOR_TIMEOUT);
-        _environmentRestartRetryLimit = 
configuration.getFacadeParameter(ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME, 
DEFAULT_ENVIRONMENT_RESTART_RETRY_LIMIT);
-        _executorShutdownTimeout = 
configuration.getFacadeParameter(EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME, 
DEFAULT_EXECUTOR_SHUTDOWN_TIMEOUT);
-        _logHandlerCleanerProtectedFilesLimit = 
_configuration.getFacadeParameter(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME,
+        _masterTransferTimeout = 
configuration.getFacadeParameter(Integer.class,
+                                                                  
MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME,
+                                                                  
DEFAULT_MASTER_TRANSFER_TIMEOUT);
+        _dbPingSocketTimeout = configuration.getFacadeParameter(Integer.class,
+                                                                
DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME, DEFAULT_DB_PING_SOCKET_TIMEOUT);
+        _remoteNodeMonitorInterval = 
configuration.getFacadeParameter(Integer.class,
+                                                                      
REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME, 
DEFAULT_REMOTE_NODE_MONITOR_INTERVAL);
+        _remoteNodeMonitorTimeout = 
configuration.getFacadeParameter(Integer.class,
+                                                                     
REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME,
+                                                                     
DEFAULT_REMOTE_NODE_MONITOR_TIMEOUT);
+        _environmentRestartRetryLimit = 
configuration.getFacadeParameter(Integer.class,
+                                                                         
ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME, 
DEFAULT_ENVIRONMENT_RESTART_RETRY_LIMIT);
+        _executorShutdownTimeout = 
configuration.getFacadeParameter(Integer.class,
+                                                                    
EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME, DEFAULT_EXECUTOR_SHUTDOWN_TIMEOUT);
+        _logHandlerCleanerProtectedFilesLimit = 
_configuration.getFacadeParameter(Integer.class,
+                                                                               
   LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME,
                                                                                
   DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT);
 
         _defaultDurability = new 
Durability(LOCAL_TRANSACTION_SYNCHRONIZATION_POLICY, 
REMOTE_TRANSACTION_SYNCHRONIZATION_POLICY, 
REPLICA_REPLICA_ACKNOWLEDGMENT_POLICY);
@@ -1485,7 +1494,7 @@ public class ReplicatedEnvironmentFacade implements 
EnvironmentFacade, StateChan
         envConfig.setCacheMode(_configuration.getCacheMode());
 
 
-        envConfig.setLoggingHandler(new Slf4jLoggingHandler("[" + 
_configuration.getName() + "]", _logHandlerCleanerProtectedFilesLimit));
+        envConfig.setLoggingHandler(new Slf4jLoggingHandler(_configuration));
 
         LOGGER.info("Cache mode {}", envConfig.getCacheMode());
 

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
index 1e7c607..d6f6ea4 100644
--- 
a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
+++ 
b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.server.store.berkeleydb.replication;
 
+import java.lang.reflect.Type;
 import java.util.Map;
 
 import com.sleepycat.je.CacheMode;
@@ -112,11 +113,19 @@ public class ReplicatedEnvironmentFacadeFactory 
implements EnvironmentFacadeFact
             }
 
             @Override
-            public int getFacadeParameter(final String parameterName, final 
int defaultValue)
+            public <T> T getFacadeParameter(final Class<T> paremeterClass, 
final String parameterName, final T defaultValue)
             {
-                return BDBUtils.getContextValue(parent, Integer.class, 
parameterName, defaultValue);
+                return BDBUtils.getContextValue(parent, paremeterClass, 
parameterName, defaultValue);
             }
 
+            @Override
+            public <T> T getFacadeParameter(final Class<T> paremeterClass,
+                                            final Type type,
+                                            final String parameterName,
+                                            final T defaultValue)
+            {
+                return BDBUtils.getContextValue(parent, paremeterClass, type, 
parameterName, defaultValue);
+            }
         };
         return new ReplicatedEnvironmentFacade(configuration);
     }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
 
b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
index 82fa59e..0bf6f73 100644
--- 
a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
+++ 
b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
@@ -20,6 +20,11 @@
  */
 package org.apache.qpid.server.store.berkeleydb;
 
+import static 
org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.JUL_LOGGER_LEVEL_OVERRIDE;
+import static 
org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -27,14 +32,13 @@ import java.io.File;
 import java.util.Collections;
 import java.util.Map;
 
-import com.sleepycat.je.Transaction;
-
-import org.apache.qpid.test.utils.QpidTestCase;
-import org.apache.qpid.server.util.FileUtils;
-
 import com.sleepycat.je.Database;
 import com.sleepycat.je.DatabaseConfig;
 import com.sleepycat.je.EnvironmentConfig;
+import com.sleepycat.je.Transaction;
+
+import org.apache.qpid.server.util.FileUtils;
+import org.apache.qpid.test.utils.QpidTestCase;
 
 public class StandardEnvironmentFacadeTest extends QpidTestCase
 {
@@ -147,6 +151,14 @@ public class StandardEnvironmentFacadeTest extends 
QpidTestCase
         when(sec.getName()).thenReturn(getTestName());
         when(sec.getParameters()).thenReturn(map);
         when(sec.getStorePath()).thenReturn(_storePath.getAbsolutePath());
+        when(sec.getFacadeParameter(eq(Integer.class),
+                                    
eq(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME),
+                                    anyInt())).thenReturn(0);
+        when(sec.getFacadeParameter(eq(Map.class),
+                                    any(),
+                                    eq(JUL_LOGGER_LEVEL_OVERRIDE),
+                                    any())).thenReturn(Collections.emptyMap());
+
 
         return new StandardEnvironmentFacade(sec);
     }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
 
b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
index 1c1c294..c822dd0 100644
--- 
a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
+++ 
b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
@@ -20,6 +20,18 @@
  */
 package org.apache.qpid.server.store.berkeleydb.replication;
 
+import static 
org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.JUL_LOGGER_LEVEL_OVERRIDE;
+import static 
org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.PERMITTED_NODE_LIST;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.ReplicationNodeImpl;
+import static 
org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.getRemoteNodeState;
+import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
@@ -28,6 +40,7 @@ import static org.mockito.Mockito.when;
 import java.io.File;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -109,7 +122,7 @@ public class ReplicatedEnvironmentFacadeTest extends 
QpidTestCase
                                                   });
         _storePath = TestFileUtils.createTestDirectory("bdb", true);
 
-        
setTestSystemProperty(ReplicatedEnvironmentFacade.DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME,
 "100");
+        setTestSystemProperty(DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME, "100");
     }
 
     @Override
@@ -778,13 +791,13 @@ public class ReplicatedEnvironmentFacadeTest extends 
QpidTestCase
         permittedNodes.add("localhost:" + _portHelper.getNextAvailable());
         firstNode.setPermittedNodes(permittedNodes);
 
-        ReplicatedEnvironmentFacade.ReplicationNodeImpl replicationNode = new 
ReplicatedEnvironmentFacade.ReplicationNodeImpl(TEST_NODE_NAME, 
TEST_NODE_HOST_PORT);
-        NodeState nodeState = 
ReplicatedEnvironmentFacade.getRemoteNodeState(TEST_GROUP_NAME, 
replicationNode, 5000);
+        ReplicationNodeImpl replicationNode = new 
ReplicationNodeImpl(TEST_NODE_NAME, TEST_NODE_HOST_PORT);
+        NodeState nodeState = getRemoteNodeState(TEST_GROUP_NAME, 
replicationNode, 5000);
 
         ObjectMapper objectMapper = new ObjectMapper();
 
         Map<String, Object> settings = 
objectMapper.readValue(nodeState.getAppState(), Map.class);
-        Collection<String> appStatePermittedNodes =  
(Collection<String>)settings.get(ReplicatedEnvironmentFacade.PERMITTED_NODE_LIST);
+        Collection<String> appStatePermittedNodes =  
(Collection<String>)settings.get(PERMITTED_NODE_LIST);
         assertEquals("Unexpected permitted nodes", permittedNodes, new 
HashSet<String>(appStatePermittedNodes));
     }
 
@@ -1169,14 +1182,29 @@ public class ReplicatedEnvironmentFacadeTest extends 
QpidTestCase
         when(node.getHelperHostPort()).thenReturn(TEST_NODE_HELPER_HOST_PORT);
         when(node.getHelperNodeName()).thenReturn(TEST_NODE_NAME);
 
-        
when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME),
 anyInt())).thenReturn(60000);
-        
when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME),
 anyInt())).thenReturn(10000);
-        
when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME),
 anyInt())).thenReturn(1000);
-        
when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME),
 anyInt())).thenReturn(1000);
-        
when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME),
 anyInt())).thenReturn(3);
-        
when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME),
 anyInt())).thenReturn(10000);
-
-        Map<String, String> repConfig = new HashMap<String, String>();
+        when(node.getFacadeParameter(eq(Integer.class),
+                                     eq(MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME),
+                                     anyInt())).thenReturn(60000);
+        when(node.getFacadeParameter(eq(Integer.class), 
eq(DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME), anyInt())).thenReturn(
+                10000);
+        when(node.getFacadeParameter(eq(Integer.class),
+                                     
eq(REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME),
+                                     anyInt())).thenReturn(1000);
+        when(node.getFacadeParameter(eq(Integer.class),
+                                     
eq(REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME),
+                                     anyInt())).thenReturn(1000);
+        when(node.getFacadeParameter(eq(Integer.class),
+                                     
eq(ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME),
+                                     anyInt())).thenReturn(3);
+        when(node.getFacadeParameter(eq(Integer.class),
+                                     
eq(EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME),
+                                     anyInt())).thenReturn(10000);
+        when(node.getFacadeParameter(eq(Integer.class),
+                                     
eq(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME),
+                                     anyInt())).thenReturn(0);
+        when(node.getFacadeParameter(eq(Map.class), any(), 
eq(JUL_LOGGER_LEVEL_OVERRIDE), any())).thenReturn(Collections.emptyMap());
+
+        Map<String, String> repConfig = new HashMap<>();
         repConfig.put(ReplicationConfig.REPLICA_ACK_TIMEOUT, "2 s");
         repConfig.put(ReplicationConfig.INSUFFICIENT_REPLICAS_TIMEOUT, "2 s");
         when(node.getReplicationParameters()).thenReturn(repConfig);

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java
----------------------------------------------------------------------
diff --git 
a/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java
 
b/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java
index 1ff2dfd..b795d55 100644
--- 
a/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java
+++ 
b/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java
@@ -21,11 +21,17 @@
 package org.apache.qpid.server.protocol.v1_0.store.bdb;
 
 
+import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.io.File;
 import java.util.Collections;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import com.google.common.io.Files;
 import com.sleepycat.je.CacheMode;
@@ -33,6 +39,7 @@ import com.sleepycat.je.CacheMode;
 import org.apache.qpid.server.protocol.v1_0.store.LinkStore;
 import org.apache.qpid.server.protocol.v1_0.store.LinkStoreTestCase;
 import org.apache.qpid.server.store.berkeleydb.BDBEnvironmentContainer;
+import org.apache.qpid.server.store.berkeleydb.EnvironmentFacade;
 import 
org.apache.qpid.server.store.berkeleydb.StandardEnvironmentConfiguration;
 import org.apache.qpid.server.store.berkeleydb.StandardEnvironmentFacade;
 import org.apache.qpid.server.util.FileUtils;
@@ -51,6 +58,13 @@ public class BDBLinkStoreTest extends LinkStoreTestCase
         
when(configuration.getStorePath()).thenReturn(_storeFolder.getAbsolutePath());
         when(configuration.getCacheMode()).thenReturn(CacheMode.DEFAULT);
         when(configuration.getParameters()).thenReturn(Collections.emptyMap());
+        when(configuration.getFacadeParameter(eq(Integer.class),
+                                              
eq(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME),
+                                              anyInt())).thenReturn(0);
+        when(configuration.getFacadeParameter(eq(Map.class),
+                                              any(),
+                                              eq(JUL_LOGGER_LEVEL_OVERRIDE),
+                                              
any())).thenReturn(Collections.emptyMap());
        _facade = new StandardEnvironmentFacade(configuration);
 
         BDBEnvironmentContainer environmentContainer = 
mock(BDBEnvironmentContainer.class);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to