You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/11/02 00:19:08 UTC
svn commit: r1767592 [1/2] - in /qpid/java/trunk:
bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/
broker-core/src/main/java/org/apache/qpid/server/
broker-core/src/main/java/org/apache/qpid/server/configuration/
broker-core/src/main/jav...
Author: rgodfrey
Date: Wed Nov 2 00:19:08 2016
New Revision: 1767592
URL: http://svn.apache.org/viewvc?rev=1767592&view=rev
Log:
QPID-7486 : Refactor broker startup code
Added:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncher.java
- copied, changed from r1767591, qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Broker.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncherListener.java (with props)
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/SystemLauncherTest.java
- copied, changed from r1767591, qpid/java/trunk/broker/src/test/java/org/apache/qpid/server/BrokerTest.java
qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LogbackLoggingSystemLauncherListener.java (with props)
Removed:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/BrokerOptionsTest.java
qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Broker.java
qpid/java/trunk/broker/src/test/java/org/apache/qpid/server/BrokerTest.java
Modified:
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfig.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfig.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactory.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactoryTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerRecovererTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
qpid/java/trunk/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbySystemConfig.java
qpid/java/trunk/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerMemoryLoggerTest.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Main.java
qpid/java/trunk/broker/src/test/java/org/apache/qpid/server/MainTest.java
qpid/java/trunk/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/AbstractBrokerHolder.java
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AccessControlProviderRestTest.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java
Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfig.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfig.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfig.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfig.java Wed Nov 2 00:19:08 2016
@@ -30,7 +30,7 @@ import org.apache.qpid.server.store.pref
public interface BDBSystemConfig<X extends BDBSystemConfig<X>> extends SystemConfig<X>, FileBasedSettings,
SizeMonitoringSettings, PreferenceStoreProvider
{
- @ManagedAttribute(mandatory = true)
+ @ManagedAttribute(defaultValue = "${qpid.work_dir}${file.separator}config")
String getStorePath();
@ManagedAttribute(mandatory = true, defaultValue = "0")
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncher.java (from r1767591, qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Broker.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncher.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncher.java&p1=qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Broker.java&r1=1767591&r2=1767592&rev=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Broker.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncher.java Wed Nov 2 00:19:08 2016
@@ -20,67 +20,59 @@
*/
package org.apache.qpid.server;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.security.Principal;
import java.security.PrivilegedExceptionAction;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
+import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javax.security.auth.Subject;
-import ch.qos.logback.classic.Level;
import com.google.common.util.concurrent.ListenableFuture;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import org.apache.qpid.configuration.CommonProperties;
import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.configuration.updater.TaskExecutorImpl;
import org.apache.qpid.server.logging.EventLogger;
+import org.apache.qpid.server.logging.LogMessage;
import org.apache.qpid.server.logging.LoggingMessageLogger;
import org.apache.qpid.server.logging.MessageLogger;
import org.apache.qpid.server.logging.SystemOutMessageLogger;
-import org.apache.qpid.server.logging.logback.QpidLoggerTurboFilter;
-import org.apache.qpid.server.logging.logback.StartupAppender;
+import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.SystemConfig;
import org.apache.qpid.server.plugin.PluggableFactoryLoader;
import org.apache.qpid.server.plugin.SystemConfigFactory;
import org.apache.qpid.server.security.auth.TaskPrincipal;
-import org.apache.qpid.server.util.Action;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-public class Broker
+public class SystemLauncher
{
- private static final Logger LOGGER = LoggerFactory.getLogger(Broker.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(SystemLauncher.class);
+ public static final SystemLauncherListener.DefaultSystemLauncherListener DEFAULT_SYSTEM_LAUNCHER_LISTENER =
+ new SystemLauncherListener.DefaultSystemLauncherListener();
private EventLogger _eventLogger;
private final TaskExecutor _taskExecutor = new TaskExecutorImpl();
private volatile SystemConfig _systemConfig;
- private final Action<Integer> _shutdownAction;
+ private SystemLauncherListener _listener;
+
private final Principal _systemPrincipal = new SystemPrincipal();
private final Subject _brokerTaskSubject;
- public Broker()
- {
- this(null);
- }
-
- public Broker(Action<Integer> shutdownAction)
+ public SystemLauncher(SystemLauncherListener listener)
{
- _shutdownAction = shutdownAction;
+ _listener = listener;
_brokerTaskSubject = new Subject(true,
new HashSet<>(Arrays.asList(_systemPrincipal, new TaskPrincipal("Broker"))),
Collections.emptySet(),
@@ -88,6 +80,18 @@ public class Broker
}
+ public SystemLauncher(SystemLauncherListener... listeners)
+ {
+ this(new SystemLauncherListener.ChainedSystemLauncherListener(listeners));
+ }
+
+
+
+ public SystemLauncher()
+ {
+ this(DEFAULT_SYSTEM_LAUNCHER_LISTENER);
+ }
+
public Principal getSystemPrincipal()
{
return _systemPrincipal;
@@ -112,6 +116,13 @@ public class Broker
catch (TimeoutException | InterruptedException | ExecutionException e)
{
LOGGER.warn("Attempting to cleanly shutdown took too long, exiting immediately");
+ _listener.exceptionOnShutdown(e);
+
+ }
+ catch(RuntimeException e)
+ {
+ _listener.exceptionOnShutdown(e);
+ throw e;
}
finally
{
@@ -123,54 +134,38 @@ public class Broker
{
_taskExecutor.stop();
- if (_shutdownAction != null)
- {
- _shutdownAction.performAction(exitStatusCode);
- }
+ _listener.onShutdown(exitStatusCode);
_systemConfig = null;
}
- public void startup() throws Exception
- {
- startup(new BrokerOptions());
- }
- public void startup(final BrokerOptions options) throws Exception
+ public void startup(final Map<String,Object> systemConfigAttributes) throws Exception
{
- _eventLogger = new EventLogger(new SystemOutMessageLogger());
+ final SystemOutMessageLogger systemOutMessageLogger = new SystemOutMessageLogger();
+
+ _eventLogger = new EventLogger(systemOutMessageLogger);
Subject.doAs(_brokerTaskSubject, new PrivilegedExceptionAction<Object>()
{
@Override
public Object run() throws Exception
{
- ch.qos.logback.classic.Logger logger =
- (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
- if (!logger.iteratorForAppenders().hasNext())
- {
- logger.setLevel(Level.ALL);
- logger.setAdditive(true);
- }
-
- StartupAppender startupAppender = new StartupAppender();
- startupAppender.setContext(logger.getLoggerContext());
- startupAppender.start();
- logger.addAppender(startupAppender);
+ _listener.beforeStartup();
try
{
- startupImpl(options);
+ startupImpl(systemConfigAttributes);
}
catch (RuntimeException e)
{
+ systemOutMessageLogger.message(new SystemStartupMessage(e));
LOGGER.error("Exception during startup", e);
- startupAppender.logToConsole();
+ _listener.errorOnStartup(e);
closeSystemConfigAndCleanUp();
}
finally
{
- logger.detachAppender(startupAppender);
- startupAppender.stop();
+ _listener.afterStartup();
}
return null;
}
@@ -178,11 +173,11 @@ public class Broker
}
- private void startupImpl(final BrokerOptions options) throws Exception
+ private void startupImpl(Map<String,Object> systemConfigAttributes) throws Exception
{
- populateSystemPropertiesFromDefaults(options.getInitialSystemProperties());
+ BrokerProperties.populateSystemPropertiesFromDefaults((String) systemConfigAttributes.get(SystemConfig.INITIAL_SYSTEM_PROPERTIES_LOCATION));
- String storeType = options.getConfigurationStoreType();
+ String storeType = (String) systemConfigAttributes.get(SystemConfig.TYPE);
// Create the RootLogger to be used during broker operation
boolean statusUpdatesEnabled = Boolean.parseBoolean(System.getProperty(BrokerProperties.PROPERTY_STATUS_UPDATES, "true"));
@@ -203,41 +198,32 @@ public class Broker
_systemConfig = configFactory.newInstance(_taskExecutor,
_eventLogger,
_systemPrincipal,
- options.convertToSystemConfigAttributes());
-
- _systemConfig.setOnContainerResolveTask(new Runnable() {
-
- @Override
- public void run()
- {
-
- ch.qos.logback.classic.Logger rootLogger =
- (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+ systemConfigAttributes);
- StartupAppender startupAppender = (StartupAppender) rootLogger.getAppender(StartupAppender.class.getName());
- if (startupAppender != null)
+ _systemConfig.setOnContainerResolveTask(
+ new Runnable()
{
- rootLogger.detachAppender(startupAppender);
- startupAppender.stop();
- }
-
- }
- });
- _systemConfig.setOnContainerCloseTask(new Runnable()
- {
-
- @Override
- public void run()
- {
+ @Override
+ public void run()
+ {
+ _listener.onContainerResolve(_systemConfig);
+ }
+ });
- QpidLoggerTurboFilter.uninstallFromRootContext();
+ _systemConfig.setOnContainerCloseTask(
+ new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ _listener.onContainerClose(_systemConfig);
- }
- });
+ }
+ });
_systemConfig.open();
- if (_systemConfig.getChild(org.apache.qpid.server.model.Broker.class).getState() == State.ERRORED)
+ if (_systemConfig.getChild(Broker.class).getState() == State.ERRORED)
{
throw new RuntimeException("Closing broker as it cannot operate due to errors");
}
@@ -265,46 +251,40 @@ public class Broker
}
}
- public static void populateSystemPropertiesFromDefaults(final String initialProperties) throws IOException
+ private static final class SystemPrincipal implements Principal
{
- URL initialPropertiesLocation;
- if(initialProperties == null)
- {
- initialPropertiesLocation = Broker.class.getClassLoader().getResource("system.properties");
- }
- else
+ private SystemPrincipal()
{
- initialPropertiesLocation = (new File(initialProperties)).toURI().toURL();
}
- Properties props = new Properties(CommonProperties.asProperties());
- if(initialPropertiesLocation != null)
+ @Override
+ public String getName()
{
-
- try(InputStream inStream = initialPropertiesLocation.openStream())
- {
- props.load(inStream);
- }
+ return "SYSTEM";
}
+ }
+
+ private static class SystemStartupMessage implements LogMessage
+ {
+ private final RuntimeException _exception;
- Set<String> propertyNames = new HashSet<>(props.stringPropertyNames());
- propertyNames.removeAll(System.getProperties().stringPropertyNames());
- for (String propName : propertyNames)
+ public SystemStartupMessage(final RuntimeException exception)
{
- System.setProperty(propName, props.getProperty(propName));
+ _exception = exception;
}
- }
- private static final class SystemPrincipal implements Principal
- {
- private SystemPrincipal()
+ @Override
+ public String getLogHierarchy()
{
+ return "system";
}
@Override
- public String getName()
+ public String toString()
{
- return "SYSTEM";
+ StringWriter writer = new StringWriter();
+ _exception.printStackTrace(new PrintWriter(writer));
+ return "Exception during startup: \n" + writer.toString();
}
}
}
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncherListener.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncherListener.java?rev=1767592&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncherListener.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncherListener.java Wed Nov 2 00:19:08 2016
@@ -0,0 +1,153 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server;
+
+import org.apache.qpid.server.model.SystemConfig;
+
+public interface SystemLauncherListener
+{
+ void beforeStartup();
+ void errorOnStartup(RuntimeException e);
+ void afterStartup();
+ void onContainerResolve(SystemConfig<?> systemConfig);
+ void onContainerClose(SystemConfig<?> systemConfig);
+ void onShutdown(int exitCode);
+
+ void exceptionOnShutdown(Exception e);
+
+ class DefaultSystemLauncherListener implements SystemLauncherListener
+ {
+ @Override
+ public void beforeStartup()
+ {
+
+ }
+
+ @Override
+ public void errorOnStartup(final RuntimeException e)
+ {
+
+ }
+
+ @Override
+ public void afterStartup()
+ {
+
+ }
+
+ @Override
+ public void onContainerResolve(final SystemConfig<?> systemConfig)
+ {
+
+ }
+
+ @Override
+ public void onContainerClose(final SystemConfig<?> systemConfig)
+ {
+
+ }
+
+ @Override
+ public void onShutdown(final int exitCode)
+ {
+
+ }
+
+ @Override
+ public void exceptionOnShutdown(final Exception e)
+ {
+ }
+ }
+
+
+ class ChainedSystemLauncherListener implements SystemLauncherListener
+ {
+ private final SystemLauncherListener[] _listeners;
+
+ public ChainedSystemLauncherListener(SystemLauncherListener... chain)
+ {
+ _listeners = chain;
+ }
+
+ @Override
+ public void beforeStartup()
+ {
+ for (SystemLauncherListener listener : _listeners)
+ {
+ listener.beforeStartup();
+ }
+ }
+
+ @Override
+ public void errorOnStartup(final RuntimeException e)
+ {
+ for (SystemLauncherListener listener : _listeners)
+ {
+ listener.errorOnStartup(e);
+ }
+ }
+
+ @Override
+ public void afterStartup()
+ {
+ for (SystemLauncherListener listener : _listeners)
+ {
+ listener.afterStartup();
+ }
+ }
+
+ @Override
+ public void onContainerResolve(final SystemConfig<?> systemConfig)
+ {
+ for (SystemLauncherListener listener : _listeners)
+ {
+ listener.onContainerResolve(systemConfig);
+ }
+ }
+
+ @Override
+ public void onContainerClose(final SystemConfig<?> systemConfig)
+ {
+ for (SystemLauncherListener listener : _listeners)
+ {
+ listener.onContainerClose(systemConfig);
+ }
+ }
+
+ @Override
+ public void onShutdown(final int exitCode)
+ {
+ for(SystemLauncherListener listener : _listeners)
+ {
+ listener.onShutdown(exitCode);
+ }
+ }
+
+ @Override
+ public void exceptionOnShutdown(final Exception e)
+ {
+ for(SystemLauncherListener listener : _listeners)
+ {
+ listener.exceptionOnShutdown(e);
+ }
+ }
+ }
+}
Propchange: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/SystemLauncherListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java Wed Nov 2 00:19:08 2016
@@ -20,7 +20,17 @@
*/
package org.apache.qpid.server.configuration;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashSet;
import java.util.Locale;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.qpid.configuration.CommonProperties;
+import org.apache.qpid.server.SystemLauncher;
/**
* Declares broker system property names
@@ -43,6 +53,21 @@ public class BrokerProperties
public static final String PROPERTY_QPID_WORK = "QPID_WORK";
public static final String POSIX_FILE_PERMISSIONS = "qpid.default_posix_file_permissions";
public static final String PROPERTY_STARTUP_FAILOVER_CONSOLE_LOG_LEVEL = "qpid.startup_failover_console_log_level";
+ /**
+ * Configuration property name for the absolute path to use for the broker work directory.
+ *
+ * If not otherwise set, the value for this configuration property defaults to the location
+ * set in the "QPID_WORK" system property if that was set, or the 'work' sub-directory of
+ * the JVM working directory ("user.dir" property) for the Java process if it was not.
+ */
+ public static final String QPID_WORK_DIR = "qpid.work_dir";
+ /**
+ * Configuration property name for the absolute path to use for the broker home directory.
+ *
+ * If not otherwise set, the value for this configuration property defaults to the location
+ * set in the "QPID_HOME" system property if that was set, or remains unset if it was not.
+ */
+ public static final String QPID_HOME_DIR = "qpid.home_dir";
private BrokerProperties()
{
@@ -66,4 +91,34 @@ public class BrokerProperties
}
return locale;
}
+
+ public static void populateSystemPropertiesFromDefaults(final String initialProperties) throws IOException
+ {
+ URL initialPropertiesLocation;
+ if(initialProperties == null)
+ {
+ initialPropertiesLocation = SystemLauncher.class.getClassLoader().getResource("system.properties");
+ }
+ else
+ {
+ initialPropertiesLocation = (new File(initialProperties)).toURI().toURL();
+ }
+
+ Properties props = new Properties(CommonProperties.asProperties());
+ if(initialPropertiesLocation != null)
+ {
+
+ try(InputStream inStream = initialPropertiesLocation.openStream())
+ {
+ props.load(inStream);
+ }
+ }
+
+ Set<String> propertyNames = new HashSet<>(props.stringPropertyNames());
+ propertyNames.removeAll(System.getProperties().stringPropertyNames());
+ for (String propName : propertyNames)
+ {
+ System.setProperty(propName, props.getProperty(propName));
+ }
+ }
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Wed Nov 2 00:19:08 2016
@@ -3233,6 +3233,16 @@ public abstract class AbstractConfigured
}
}
+ static String interpolate(Model model, String value)
+ {
+ return Strings.expand(value, false,
+ JSON_SUBSTITUTION_RESOLVER,
+ Strings.JAVA_SYS_PROPS_RESOLVER,
+ Strings.ENV_VARS_RESOLVER,
+ model.getTypeRegistry().getDefaultContextResolver());
+ }
+
+
private static OwnAttributeResolver getOwnAttributeResolver(final ConfiguredObject<?> object)
{
return object instanceof AbstractConfiguredObject
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java Wed Nov 2 00:19:08 2016
@@ -99,6 +99,9 @@ public abstract class AbstractSystemConf
private String _initialConfigurationLocation;
@ManagedAttributeField
+ private String _initialSystemPropertiesLocation;
+
+ @ManagedAttributeField
private boolean _startupLoggedToSystemOut;
@ManagedAttributeField
@@ -436,6 +439,12 @@ public abstract class AbstractSystemConf
}
@Override
+ public String getInitialSystemPropertiesLocation()
+ {
+ return _initialSystemPropertiesLocation;
+ }
+
+ @Override
public boolean isStartupLoggedToSystemOut()
{
return _startupLoggedToSystemOut;
@@ -495,6 +504,21 @@ public abstract class AbstractSystemConf
_onContainerCloseTask = onContainerCloseTask;
}
+ public static String getDefaultValue(String attrName)
+ {
+ Model model = SystemConfigBootstrapModel.getInstance();
+ ConfiguredObjectTypeRegistry typeRegistry = model.getTypeRegistry();
+ final ConfiguredObjectAttribute<?, ?> attr = typeRegistry.getAttributeTypes(SystemConfig.class).get(attrName);
+ if(attr instanceof ConfiguredSettableAttribute)
+ {
+ return interpolate(model, ((ConfiguredSettableAttribute)attr).defaultValue());
+ }
+ else
+ {
+ return null;
+ }
+ }
+
private class ShutdownService implements Runnable
{
public void run()
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java Wed Nov 2 00:19:08 2016
@@ -51,7 +51,6 @@ import org.slf4j.LoggerFactory;
import org.apache.qpid.bytebuffer.QpidByteBuffer;
import org.apache.qpid.configuration.CommonProperties;
-import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.BrokerPrincipal;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
@@ -157,7 +156,7 @@ public class BrokerImpl extends Abstract
authManagerAttrs.put(NAME,"MANAGEMENT_MODE_AUTHENTICATION");
authManagerAttrs.put(ID, UUID.randomUUID());
SimpleAuthenticationManager authManager = new SimpleAuthenticationManager(authManagerAttrs, this);
- authManager.addUser(BrokerOptions.MANAGEMENT_MODE_USER_NAME, _parent.getManagementModePassword());
+ authManager.addUser(SystemConfig.MANAGEMENT_MODE_USER_NAME, _parent.getManagementModePassword());
_managementModeAuthenticationProvider = authManager;
_accessControl = AccessControl.ALWAYS_ALLOWED;
}
@@ -418,7 +417,7 @@ public class BrokerImpl extends Abstract
if (isManagementMode())
{
- _eventLogger.message(BrokerMessages.MANAGEMENT_MODE(BrokerOptions.MANAGEMENT_MODE_USER_NAME,
+ _eventLogger.message(BrokerMessages.MANAGEMENT_MODE(SystemConfig.MANAGEMENT_MODE_USER_NAME,
_parent.getManagementModePassword()));
}
setState(State.ACTIVE);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfig.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfig.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfig.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfig.java Wed Nov 2 00:19:08 2016
@@ -24,6 +24,6 @@ import org.apache.qpid.server.store.File
public interface JsonSystemConfig<X extends JsonSystemConfig<X>> extends SystemConfig<X>, FileBasedSettings
{
- @ManagedAttribute( mandatory = true )
+ @ManagedAttribute( defaultValue = "${qpid.work_dir}${file.separator}config.json")
public String getStorePath();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java Wed Nov 2 00:19:08 2016
@@ -29,20 +29,32 @@ import org.apache.qpid.server.store.pref
@ManagedObject (creatable = false)
public interface SystemConfig<X extends SystemConfig<X>> extends ConfiguredObject<X>, ModelRoot, PreferencesRoot
{
+
String MANAGEMENT_MODE = "managementMode";
String MANAGEMENT_MODE_QUIESCE_VIRTUAL_HOSTS = "managementModeQuiesceVirtualHosts";
String MANAGEMENT_MODE_HTTP_PORT_OVERRIDE = "managementModeHttpPortOverride";
String MANAGEMENT_MODE_PASSWORD = "managementModePassword";
String INITIAL_CONFIGURATION_LOCATION = "initialConfigurationLocation";
+ String INITIAL_SYSTEM_PROPERTIES_LOCATION = "initialSystemPropertiesLocation";
String STARTUP_LOGGED_TO_SYSTEM_OUT = "startupLoggedToSystemOut";
+
+ @ManagedContextDefault(name=BrokerProperties.PROPERTY_QPID_WORK)
+ String DEFAULT_QPID_WORK = "${user.dir}${file.separator}work";
+
+ @ManagedContextDefault(name=BrokerProperties.QPID_WORK_DIR)
+ String DEFAULT_QPID_WORK_DIR = "${QPID_WORK}";
+
@ManagedContextDefault(name="qpid.broker.defaultPreferenceStoreAttributes")
String DEFAULT_PREFERENCE_STORE_ATTRIBUTES = "{\"type\": \"JSON\", \"attributes\":{\"path\": \"${json:qpid.work_dir}${json:file.separator}preferences.json\"}}";
@ManagedContextDefault(name = BrokerProperties.POSIX_FILE_PERMISSIONS)
String DEFAULT_POSIX_FILE_PERMISSIONS = "rw-r-----";
+
+ String MANAGEMENT_MODE_USER_NAME = "mm_admin";
+
@ManagedAttribute(immutable = true, defaultValue = Broker.BROKER_TYPE)
String getDefaultContainerType();
@@ -58,9 +70,17 @@ public interface SystemConfig<X extends
@ManagedAttribute(secure = true)
String getManagementModePassword();
- @ManagedAttribute
+ String DEFAULT_INITIAL_CONFIG_NAME = "initial-config.json";
+
+ @ManagedContextDefault(name="qpid.initialConfigurationLocation")
+ String DEFAULT_INITIAL_CONFIG_LOCATION = SystemConfig.class.getClassLoader().getResource(DEFAULT_INITIAL_CONFIG_NAME).toExternalForm();
+
+ @ManagedAttribute(defaultValue = "${qpid.initialConfigurationLocation}")
String getInitialConfigurationLocation();
+ @ManagedAttribute
+ String getInitialSystemPropertiesLocation();
+
@ManagedAttribute(defaultValue = "true")
boolean isStartupLoggedToSystemOut();
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactory.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactory.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactory.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactory.java Wed Nov 2 00:19:08 2016
@@ -55,7 +55,7 @@ import javax.crypto.spec.SecretKeySpec;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.qpid.server.BrokerOptions;
+import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.plugin.ConditionallyAvailable;
@@ -115,7 +115,7 @@ public class AESKeyFileEncrypterFactory
else
{
- fileLocation = object.getContextValue(String.class, BrokerOptions.QPID_WORK_DIR)
+ fileLocation = object.getContextValue(String.class, BrokerProperties.QPID_WORK_DIR)
+ File.separator + DEFAULT_KEYS_SUBDIR_NAME + File.separator
+ object.getCategoryClass().getSimpleName() + "_"
+ object.getName() + ".key";
Copied: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/SystemLauncherTest.java (from r1767591, qpid/java/trunk/broker/src/test/java/org/apache/qpid/server/BrokerTest.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/SystemLauncherTest.java?p2=qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/SystemLauncherTest.java&p1=qpid/java/trunk/broker/src/test/java/org/apache/qpid/server/BrokerTest.java&r1=1767591&r2=1767592&rev=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker/src/test/java/org/apache/qpid/server/BrokerTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/SystemLauncherTest.java Wed Nov 2 00:19:08 2016
@@ -27,17 +27,18 @@ import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.qpid.server.logging.messages.BrokerMessages;
import org.apache.qpid.server.model.BrokerModel;
import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.JsonSystemConfigImpl;
+import org.apache.qpid.server.model.SystemConfig;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.test.utils.TestFileUtils;
import org.apache.qpid.util.FileUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.MDC;
-
-public class BrokerTest extends QpidTestCase
+public class SystemLauncherTest extends QpidTestCase
{
private static final String INITIAL_SYSTEM_PROPERTY = "test";
private static final String INITIAL_SYSTEM_PROPERTY_VALUE = "testValue";
@@ -45,7 +46,7 @@ public class BrokerTest extends QpidTest
private File _initialSystemProperties;
private File _initialConfiguration;
private File _brokerWork;
- private Broker _broker;
+ private SystemLauncher _systemLauncher;
@Override
public void setUp() throws Exception
@@ -75,9 +76,9 @@ public class BrokerTest extends QpidTest
}
finally
{
- if (_broker != null)
+ if (_systemLauncher != null)
{
- _broker.shutdown();
+ _systemLauncher.shutdown();
}
System.clearProperty(INITIAL_SYSTEM_PROPERTY);
FileUtils.delete(_brokerWork, true);
@@ -88,12 +89,13 @@ public class BrokerTest extends QpidTest
public void testInitialSystemPropertiesAreSetOnBrokerStartup() throws Exception
{
- BrokerOptions options = new BrokerOptions();
- options.setInitialSystemProperties(_initialSystemProperties.getAbsolutePath());
- options.setStartupLoggedToSystemOut(true);
- options.setInitialConfigurationLocation(_initialConfiguration.getAbsolutePath());
- _broker = new Broker();
- _broker.startup(options);
+ Map<String,Object> attributes = new HashMap<>();
+ attributes.put(SystemConfig.INITIAL_SYSTEM_PROPERTIES_LOCATION, _initialSystemProperties.getAbsolutePath());
+ attributes.put(SystemConfig.INITIAL_CONFIGURATION_LOCATION, _initialConfiguration.getAbsolutePath());
+ attributes.put(SystemConfig.TYPE, JsonSystemConfigImpl.SYSTEM_CONFIG_TYPE);
+ attributes.put(SystemConfig.STARTUP_LOGGED_TO_SYSTEM_OUT, Boolean.TRUE);
+ _systemLauncher = new SystemLauncher();
+ _systemLauncher.startup(attributes);
// test JVM system property should be set from initial system config file
assertEquals("Unexpected JVM system property", INITIAL_SYSTEM_PROPERTY_VALUE, System.getProperty(INITIAL_SYSTEM_PROPERTY));
@@ -104,54 +106,46 @@ public class BrokerTest extends QpidTest
public void testConsoleLogsOnSuccessfulStartup() throws Exception
{
- String startupConsoleAppenderLogPrefix = getTestName() + "__$$ ";
- byte[] outputBytes = startBrokerAndCollectSystemOutput(startupConsoleAppenderLogPrefix);
- String outputString = new String(outputBytes);
- assertFalse("Detected unexpected startup console appender prefix", outputString.contains(startupConsoleAppenderLogPrefix));
+ byte[] outputBytes = startBrokerAndCollectSystemOutput();
+ String output = new String(outputBytes);
+ assertFalse("Detected unexpected Exception: " + output, output.contains("Exception"));
+ assertTrue("Output does not contain Broker Ready Message", output.contains(BrokerMessages.READY().toString()));
}
public void testConsoleLogsOnUnsuccessfulStartup() throws Exception
{
Map<String,Object> initialConfig = new HashMap<>();
- initialConfig.put(ConfiguredObject.NAME, "test");
- initialConfig.put(org.apache.qpid.server.model.Broker.MODEL_VERSION, new Integer(Integer.MAX_VALUE).toString());
ObjectMapper mapper = new ObjectMapper();
String config = mapper.writeValueAsString(initialConfig);
TestFileUtils.saveTextContentInFile(config, _initialConfiguration);
- String startupConsoleAppenderLogPrefix = getTestName() + "__$$ ";
- byte[] outputBytes = startBrokerAndCollectSystemOutput(startupConsoleAppenderLogPrefix);
- assertTrue("Startup console appender prefix is not found", new String(outputBytes).contains(startupConsoleAppenderLogPrefix));
+ byte[] outputBytes = startBrokerAndCollectSystemOutput();
+ String output = new String(outputBytes);
+ assertTrue("No Exception detected in output: " + output, output.contains("Exception"));
+ assertFalse("Output contains Broker Ready Message", output.contains(BrokerMessages.READY().toString()));
}
- private byte[] startBrokerAndCollectSystemOutput(String startupConsoleAppenderLogPrefix) throws Exception
+ private byte[] startBrokerAndCollectSystemOutput() throws Exception
{
try(ByteArrayOutputStream out = new ByteArrayOutputStream())
{
PrintStream originalOutput = System.out;
- String originalPrefix = MDC.get("qpid.log.prefix");
- MDC.put("qpid.log.prefix", startupConsoleAppenderLogPrefix);
try
{
System.setOut(new PrintStream(out));
- BrokerOptions options = new BrokerOptions();
- options.setInitialConfigurationLocation(_initialConfiguration.getAbsolutePath());
- _broker = new Broker();
- _broker.startup(options);
+
+ Map<String,Object> attributes = new HashMap<>();
+ attributes.put(SystemConfig.INITIAL_CONFIGURATION_LOCATION, _initialConfiguration.getAbsolutePath());
+ attributes.put(SystemConfig.TYPE, JsonSystemConfigImpl.SYSTEM_CONFIG_TYPE);
+
+ _systemLauncher = new SystemLauncher();
+ _systemLauncher.startup(attributes);
}
finally
{
System.setOut(originalOutput);
- if (originalPrefix == null)
- {
- MDC.remove("qpid.log.prefix");
- }
- else
- {
- MDC.put("qpid.log.prefix", originalPrefix);
- }
}
return out.toByteArray();
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java Wed Nov 2 00:19:08 2016
@@ -42,7 +42,6 @@ import org.mockito.ArgumentCaptor;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
@@ -66,7 +65,7 @@ import org.apache.qpid.test.utils.QpidTe
public class ManagementModeStoreHandlerTest extends QpidTestCase
{
private ManagementModeStoreHandler _handler;
- private BrokerOptions _options;
+ private Map<String,Object> _systemConfigAttributes;
private DurableConfigurationStore _store;
private ConfiguredObjectRecord _root;
private ConfiguredObjectRecord _portEntry;
@@ -84,7 +83,7 @@ public class ManagementModeStoreHandlerT
_taskExecutor.start();
_systemConfig = new JsonSystemConfigImpl(_taskExecutor, mock(EventLogger.class),
- null, new BrokerOptions().convertToSystemConfigAttributes());
+ null, new HashMap<String, Object>());
ConfiguredObjectRecord systemContextRecord = _systemConfig.asObjectRecord();
@@ -113,7 +112,7 @@ public class ManagementModeStoreHandlerT
}
}
).when(_store).openConfigurationStore(recovererArgumentCaptor.capture());
- _options = new BrokerOptions();
+ _systemConfigAttributes = new HashMap<>();
_handler = new ManagementModeStoreHandler(_store, _systemConfig);;
@@ -123,8 +122,10 @@ public class ManagementModeStoreHandlerT
private ManagementModeStoreHandler createManagementModeStoreHandler()
{
_systemConfig.close();
- Map<String, Object> attributes = new HashMap<>(_options.convertToSystemConfigAttributes());
+ Map<String, Object> attributes = new HashMap<>(_systemConfigAttributes);
attributes.put(ConfiguredObject.DESIRED_STATE, State.QUIESCED);
+ attributes.remove(ConfiguredObject.TYPE);
+
_systemConfig = new AbstractSystemConfig(_taskExecutor,
mock(EventLogger.class),
mock(Principal.class), attributes)
@@ -236,7 +237,7 @@ public class ManagementModeStoreHandlerT
public void testGetRootEntryWithHttpPortOverriden()
{
- _options.setManagementModeHttpPortOverride(9090);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,9090);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
Collection<ConfiguredObjectRecord> records = openAndGetRecords();
@@ -250,7 +251,7 @@ public class ManagementModeStoreHandlerT
public void testGetRootEntryWithManagementPortsOverriden()
{
- _options.setManagementModeHttpPortOverride(1000);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,1000);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
Collection<ConfiguredObjectRecord> records = openAndGetRecords();
@@ -283,7 +284,7 @@ public class ManagementModeStoreHandlerT
public void testGetEntryByCLIHttpPortId()
{
- _options.setManagementModeHttpPortOverride(9090);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,9090);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
@@ -299,7 +300,7 @@ public class ManagementModeStoreHandlerT
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(Port.PROTOCOLS, Collections.singleton(Protocol.HTTP));
when(_portEntry.getAttributes()).thenReturn(attributes);
- _options.setManagementModeHttpPortOverride(9090);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,9090);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
@@ -345,7 +346,7 @@ public class ManagementModeStoreHandlerT
State expectedState = mmQuiesceVhosts ? State.QUIESCED : null;
if(mmQuiesceVhosts)
{
- _options.setManagementModeQuiesceVirtualHosts(mmQuiesceVhosts);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_QUIESCE_VIRTUAL_HOSTS, mmQuiesceVhosts);
}
_handler = createManagementModeStoreHandler();
@@ -375,7 +376,7 @@ public class ManagementModeStoreHandlerT
public void testSavePort()
{
- _options.setManagementModeHttpPortOverride(1000);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,1000);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
Collection<ConfiguredObjectRecord> records = openAndGetRecords();
@@ -391,7 +392,7 @@ public class ManagementModeStoreHandlerT
public void testSaveRoot()
{
- _options.setManagementModeHttpPortOverride(1000);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,1000);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
Collection<ConfiguredObjectRecord> records = openAndGetRecords();
@@ -407,7 +408,7 @@ public class ManagementModeStoreHandlerT
public void testSaveCLIHttpPort()
{
- _options.setManagementModeHttpPortOverride(1000);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,1000);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
Collection<ConfiguredObjectRecord> records = openAndGetRecords();
@@ -432,7 +433,7 @@ public class ManagementModeStoreHandlerT
public void testRemove()
{
- _options.setManagementModeHttpPortOverride(1000);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,1000);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
Collection<ConfiguredObjectRecord> records = openAndGetRecords();
@@ -469,7 +470,7 @@ public class ManagementModeStoreHandlerT
public void testRemoveCLIPort()
{
- _options.setManagementModeHttpPortOverride(1000);
+ _systemConfigAttributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE,1000);
_handler = createManagementModeStoreHandler();
_handler.init(_systemConfig);
Collection<ConfiguredObjectRecord> records = openAndGetRecords();
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactoryTest.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactoryTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/encryption/AESKeyFileEncrypterFactoryTest.java Wed Nov 2 00:19:08 2016
@@ -49,7 +49,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import org.apache.qpid.server.BrokerOptions;
+import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.test.utils.QpidTestCase;
@@ -67,7 +67,7 @@ public class AESKeyFileEncrypterFactoryT
_tmpDir = Files.createTempDirectory(getTestName());
when(_broker.getContextKeys(eq(false))).thenReturn(Collections.<String>emptySet());
- when(_broker.getContextValue(eq(String.class), eq(BrokerOptions.QPID_WORK_DIR))).thenReturn(_tmpDir.toString());
+ when(_broker.getContextValue(eq(String.class), eq(BrokerProperties.QPID_WORK_DIR))).thenReturn(_tmpDir.toString());
when(_broker.getCategoryClass()).thenReturn(Broker.class);
when(_broker.getName()).thenReturn(getName());
final ArgumentCaptor<Map> attributesCaptor = ArgumentCaptor.forClass(Map.class);
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerRecovererTest.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerRecovererTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerRecovererTest.java Wed Nov 2 00:19:08 2016
@@ -29,7 +29,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.logging.EventLogger;
@@ -63,7 +62,7 @@ public class BrokerRecovererTest extends
_taskExecutor.start();
_systemConfig = new JsonSystemConfigImpl(_taskExecutor,
mock(EventLogger.class),
- null, new BrokerOptions().convertToSystemConfigAttributes())
+ null, new HashMap<String,Object>())
{
{
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java Wed Nov 2 00:19:08 2016
@@ -30,7 +30,6 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
-import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.model.BrokerModel;
@@ -78,7 +77,7 @@ public class BrokerStoreUpgraderAndRecov
_taskExecutor.start();
_systemConfig = new JsonSystemConfigImpl(_taskExecutor,
mock(EventLogger.class),
- null, new BrokerOptions().convertToSystemConfigAttributes());
+ null, new HashMap<String,Object>());
}
public void testUpgradeVirtualHostWithJDBCStoreAndBoneCPPool()
Modified: qpid/java/trunk/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbySystemConfig.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbySystemConfig.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbySystemConfig.java (original)
+++ qpid/java/trunk/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbySystemConfig.java Wed Nov 2 00:19:08 2016
@@ -29,7 +29,7 @@ import org.apache.qpid.server.store.pref
public interface DerbySystemConfig<X extends DerbySystemConfig<X>> extends SystemConfig<X>, FileBasedSettings,
SizeMonitoringSettings
{
- @ManagedAttribute(mandatory = true)
+ @ManagedAttribute(defaultValue = "${qpid.work_dir}${file.separator}config.json")
String getStorePath();
@ManagedAttribute(mandatory = true, defaultValue = "0")
Added: qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LogbackLoggingSystemLauncherListener.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LogbackLoggingSystemLauncherListener.java?rev=1767592&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LogbackLoggingSystemLauncherListener.java (added)
+++ qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LogbackLoggingSystemLauncherListener.java Wed Nov 2 00:19:08 2016
@@ -0,0 +1,95 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.logging.logback;
+
+import ch.qos.logback.classic.Level;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.server.SystemLauncherListener;
+import org.apache.qpid.server.model.SystemConfig;
+
+public class LogbackLoggingSystemLauncherListener implements SystemLauncherListener
+{
+ private StartupAppender _startupAppender;
+ private ch.qos.logback.classic.Logger _logger;
+
+ @Override
+ public void beforeStartup()
+ {
+ _logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+ if (!_logger.iteratorForAppenders().hasNext())
+ {
+ _logger.setLevel(Level.ALL);
+ _logger.setAdditive(true);
+ }
+
+ _startupAppender = new StartupAppender();
+ _startupAppender.setContext(_logger.getLoggerContext());
+ _startupAppender.start();
+ _logger.addAppender(_startupAppender);
+
+ }
+
+ @Override
+ public void errorOnStartup(final RuntimeException e)
+ {
+ _startupAppender.logToConsole();
+ }
+
+ @Override
+ public void afterStartup()
+ {
+ _logger.detachAppender(_startupAppender);
+ _startupAppender.stop();
+ }
+
+ @Override
+ public void onContainerResolve(SystemConfig<?> systemConfig)
+ {
+ ch.qos.logback.classic.Logger rootLogger =
+ (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+
+ StartupAppender startupAppender = (StartupAppender) rootLogger.getAppender(StartupAppender.class.getName());
+ if (startupAppender != null)
+ {
+ rootLogger.detachAppender(startupAppender);
+ startupAppender.stop();
+ }
+ }
+
+ @Override
+ public void onContainerClose(final SystemConfig<?> systemConfig)
+ {
+ QpidLoggerTurboFilter.uninstallFromRootContext();
+ }
+
+
+ @Override
+ public void onShutdown(final int exitCode)
+ {
+ }
+
+ @Override
+ public void exceptionOnShutdown(final Exception e)
+ {
+ }
+}
Propchange: qpid/java/trunk/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LogbackLoggingSystemLauncherListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: qpid/java/trunk/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerMemoryLoggerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerMemoryLoggerTest.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerMemoryLoggerTest.java (original)
+++ qpid/java/trunk/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerMemoryLoggerTest.java Wed Nov 2 00:19:08 2016
@@ -29,12 +29,13 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-import org.apache.qpid.server.BrokerOptions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.logging.EventLogger;
-import org.apache.qpid.server.logging.logback.BrokerMemoryLogger;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerLogger;
import org.apache.qpid.server.model.BrokerModel;
@@ -44,8 +45,6 @@ import org.apache.qpid.server.model.Syst
import org.apache.qpid.server.store.ConfiguredObjectRecord;
import org.apache.qpid.server.store.GenericRecoverer;
import org.apache.qpid.test.utils.QpidTestCase;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class BrokerMemoryLoggerTest extends QpidTestCase
{
@@ -62,7 +61,7 @@ public class BrokerMemoryLoggerTest exte
_taskExecutor.start();
_systemConfig = new JsonSystemConfigImpl(_taskExecutor,
mock(EventLogger.class),
- null, new BrokerOptions().convertToSystemConfigAttributes())
+ null, new HashMap<String,Object>())
{
{
updateModel(BrokerModel.getInstance());
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java Wed Nov 2 00:19:08 2016
@@ -32,6 +32,9 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ConfiguredObjectAttribute;
import org.apache.qpid.server.model.Model;
@@ -39,6 +42,7 @@ import org.apache.qpid.server.model.Name
public class ConfiguredObjectToMapConverter
{
+ private static final Logger LOGGER = LoggerFactory.getLogger(ConfiguredObjectToMapConverter.class);
/** Name of the key used for the statistics map */
public static final String STATISTICS_MAP_KEY = "statistics";
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java Wed Nov 2 00:19:08 2016
@@ -1141,9 +1141,9 @@ public class RestServlet extends Abstrac
{
LOGGER.warn("... caused by " + t.getClass().getSimpleName() + " : " + t.getMessage());
}
- if (LOGGER.isTraceEnabled())
+ if (LOGGER.isDebugEnabled())
{
- LOGGER.trace(e.getClass().getSimpleName() + " processing request", e);
+ LOGGER.debug(e.getClass().getSimpleName() + " processing request", e);
}
responseCode = SC_UNPROCESSABLE_ENTITY;
}
Modified: qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Main.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Main.java?rev=1767592&r1=1767591&r2=1767592&view=diff
==============================================================================
--- qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Main.java (original)
+++ qpid/java/trunk/broker/src/main/java/org/apache/qpid/server/Main.java Wed Nov 2 00:19:08 2016
@@ -25,6 +25,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
@@ -35,15 +38,19 @@ import org.apache.commons.cli.OptionBuil
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
-import org.apache.qpid.configuration.CommonProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.qpid.configuration.CommonProperties;
+import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.logging.logback.LogbackLoggingSystemLauncherListener;
+import org.apache.qpid.server.model.AbstractSystemConfig;
+import org.apache.qpid.server.model.JsonSystemConfigImpl;
import org.apache.qpid.server.model.Protocol;
+import org.apache.qpid.server.model.SystemConfig;
import org.apache.qpid.server.plugin.ProtocolEngineCreator;
import org.apache.qpid.server.plugin.QpidServiceLoader;
-import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.StringUtil;
import org.apache.qpid.util.FileUtils;
@@ -72,7 +79,7 @@ public class Main
.withLongOpt("overwrite-store").create("os");
private static final Option OPTION_CREATE_INITIAL_CONFIG = OptionBuilder.withArgName("path").hasOptionalArg().withDescription("create a copy of the initial config file, either to an" +
- " optionally specified file path, or as " + BrokerOptions.DEFAULT_INITIAL_CONFIG_NAME + " in the current directory")
+ " optionally specified file path, or as " + SystemConfig.DEFAULT_INITIAL_CONFIG_NAME + " in the current directory")
.withLongOpt("create-initial-config").create("cic");
private static final Option OPTION_CONFIGURATION_PROPERTY = OptionBuilder.withArgName("name=value").hasArg()
@@ -86,7 +93,7 @@ public class Main
private static final Option OPTION_MM_HTTP_PORT = OptionBuilder.withArgName("port").hasArg()
.withDescription("override http management port in management mode").withLongOpt("management-mode-http-port").create("mmhttp");
private static final Option OPTION_MM_PASSWORD = OptionBuilder.withArgName("password").hasArg()
- .withDescription("Set the password for the management mode user " + BrokerOptions.MANAGEMENT_MODE_USER_NAME).withLongOpt("management-mode-password").create("mmpass");
+ .withDescription("Set the password for the management mode user " + SystemConfig.MANAGEMENT_MODE_USER_NAME).withLongOpt("management-mode-password").create("mmpass");
private static final Option OPTION_INITIAL_SYSTEM_PROPERTIES = OptionBuilder.withArgName("path").hasArg()
.withDescription("set the location of initial properties file to set otherwise unset system properties").withLongOpt("system-properties-file").create("props");
@@ -156,19 +163,15 @@ public class Main
protected void execute() throws Exception
{
- String initialProperties = _commandLine.getOptionValue(OPTION_INITIAL_SYSTEM_PROPERTIES.getOpt());
- Broker.populateSystemPropertiesFromDefaults(initialProperties);
+ Map<String,Object> attributes = new HashMap<>();
- BrokerOptions options = new BrokerOptions();
- if (initialProperties != null)
- {
- options.setInitialSystemProperties(initialProperties);
- }
+ String initialProperties = _commandLine.getOptionValue(OPTION_INITIAL_SYSTEM_PROPERTIES.getOpt());
+ BrokerProperties.populateSystemPropertiesFromDefaults(initialProperties);
String initialConfigLocation = _commandLine.getOptionValue(OPTION_INITIAL_CONFIGURATION_PATH.getOpt());
- if (initialConfigLocation != null)
+ if(initialConfigLocation != null)
{
- options.setInitialConfigurationLocation(initialConfigLocation);
+ attributes.put(SystemConfig.INITIAL_CONFIGURATION_LOCATION, initialConfigLocation);
}
//process the remaining options
@@ -179,115 +182,159 @@ public class Main
}
else if (_commandLine.hasOption(OPTION_CREATE_INITIAL_CONFIG.getOpt()))
{
- File destinationFile = null;
-
- String destinationOption = _commandLine.getOptionValue(OPTION_CREATE_INITIAL_CONFIG.getOpt());
- if (destinationOption != null)
- {
- destinationFile = new File(destinationOption);
- }
- else
- {
- destinationFile = new File(System.getProperty("user.dir"), BrokerOptions.DEFAULT_INITIAL_CONFIG_NAME);
- }
-
- copyInitialConfigFile(options, destinationFile);
-
- System.out.println("Initial config written to: " + destinationFile.getAbsolutePath());
+ createInitialConficCopy(initialConfigLocation);
}
else if (_commandLine.hasOption(OPTION_VERSION.getOpt()))
{
- final StringBuilder protocol = new StringBuilder("AMQP version(s) [major.minor]: ");
- boolean first = true;
- Set<Protocol> protocols = new TreeSet<>();
- for(ProtocolEngineCreator installedEngine : (new QpidServiceLoader()).instancesOf(ProtocolEngineCreator.class))
- {
- protocols.add(installedEngine.getVersion());
- }
- for(Protocol supportedProtocol : protocols)
- {
- if (first)
- {
- first = false;
- }
- else
- {
- protocol.append(", ");
- }
-
- protocol.append(supportedProtocol.getProtocolVersion());
- }
-
- System.out.println(CommonProperties.getVersionString() + " (" + protocol + ")");
+ printVersion();
}
else
{
String[] configPropPairs = _commandLine.getOptionValues(OPTION_CONFIGURATION_PROPERTY.getOpt());
- if(configPropPairs != null && configPropPairs.length > 0)
- {
- for(String s : configPropPairs)
- {
- int firstEquals = s.indexOf("=");
- if(firstEquals == -1)
- {
- throw new IllegalArgumentException("Configuration property argument is not of the format name=value: " + s);
- }
- String name = s.substring(0, firstEquals);
- String value = s.substring(firstEquals + 1);
- if(name.equals(""))
- {
- throw new IllegalArgumentException("Configuration property argument is not of the format name=value: " + s);
- }
-
- options.setConfigProperty(name, value);
- }
+ Map<String, String> context = calculateConfigContext(configPropPairs);
+ if(!context.isEmpty())
+ {
+ attributes.put(SystemConfig.CONTEXT, context);
}
String configurationStore = _commandLine.getOptionValue(OPTION_CONFIGURATION_STORE_PATH.getOpt());
- if (configurationStore != null)
+ if(configurationStore != null)
{
- options.setConfigurationStoreLocation(configurationStore);
+ attributes.put("storePath", configurationStore);
}
-
String configurationStoreType = _commandLine.getOptionValue(OPTION_CONFIGURATION_STORE_TYPE.getOpt());
- if (configurationStoreType != null)
- {
- options.setConfigurationStoreType(configurationStoreType);
- }
-
- boolean overwriteConfigurationStore = _commandLine.hasOption(OPTION_OVERWRITE_CONFIGURATION_STORE.getOpt());
- options.setOverwriteConfigurationStore(overwriteConfigurationStore);
+ attributes.put(SystemConfig.TYPE, configurationStoreType == null ? JsonSystemConfigImpl.SYSTEM_CONFIG_TYPE : configurationStoreType);
boolean managementMode = _commandLine.hasOption(OPTION_MANAGEMENT_MODE.getOpt());
if (managementMode)
{
- options.setManagementMode(true);
+ attributes.put(SystemConfig.MANAGEMENT_MODE, true);
String httpPort = _commandLine.getOptionValue(OPTION_MM_HTTP_PORT.getOpt());
- if (httpPort != null)
+ if(httpPort != null)
{
- options.setManagementModeHttpPortOverride(Integer.parseInt(httpPort));
+ attributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE, httpPort);
}
boolean quiesceVhosts = _commandLine.hasOption(OPTION_MM_QUIESCE_VHOST.getOpt());
- options.setManagementModeQuiesceVirtualHosts(quiesceVhosts);
+ attributes.put(SystemConfig.MANAGEMENT_MODE_QUIESCE_VIRTUAL_HOSTS, quiesceVhosts);
String password = _commandLine.getOptionValue(OPTION_MM_PASSWORD.getOpt());
if (password == null)
{
password = new StringUtil().randomAlphaNumericString(MANAGEMENT_MODE_PASSWORD_LENGTH);
}
- options.setManagementModePassword(password);
+ attributes.put(SystemConfig.MANAGEMENT_MODE_PASSWORD, password);
}
setExceptionHandler();
- startBroker(options);
+ startBroker(attributes);
+ }
+ }
+
+ private Map<String, String> calculateConfigContext(final String[] configPropPairs)
+ {
+ Map<String,String> context = new HashMap<>();
+
+ if(configPropPairs != null && configPropPairs.length > 0)
+ {
+ for(String s : configPropPairs)
+ {
+ int firstEquals = s.indexOf("=");
+ if(firstEquals == -1)
+ {
+ throw new IllegalArgumentException("Configuration property argument is not of the format name=value: " + s);
+ }
+ String name = s.substring(0, firstEquals);
+ String value = s.substring(firstEquals + 1);
+
+ if(name.equals(""))
+ {
+ throw new IllegalArgumentException("Configuration property argument is not of the format name=value: " + s);
+ }
+
+ context.put(name, value);
+ }
+ }
+ if(!context.containsKey(BrokerProperties.QPID_HOME_DIR))
+ {
+ Properties systemProperties = System.getProperties();
+ final Map<String, String> environment = System.getenv();
+ if(systemProperties.contains(BrokerProperties.QPID_HOME_DIR))
+ {
+ context.put(BrokerProperties.QPID_HOME_DIR, systemProperties.getProperty(BrokerProperties.QPID_HOME_DIR));
+ }
+ else if(environment.containsKey(BrokerProperties.QPID_HOME_DIR))
+ {
+ context.put(BrokerProperties.QPID_HOME_DIR, environment.get(BrokerProperties.QPID_HOME_DIR));
+ }
+ else if(context.containsKey(BrokerProperties.PROPERTY_QPID_HOME))
+ {
+ context.put(BrokerProperties.QPID_HOME_DIR, context.get(BrokerProperties.PROPERTY_QPID_HOME));
+ }
+ else if(systemProperties.contains(BrokerProperties.PROPERTY_QPID_HOME))
+ {
+ context.put(BrokerProperties.QPID_HOME_DIR, environment.get(BrokerProperties.PROPERTY_QPID_HOME));
+ }
+ else if(environment.containsKey(BrokerProperties.PROPERTY_QPID_HOME))
+ {
+ context.put(BrokerProperties.QPID_HOME_DIR, environment.get(BrokerProperties.PROPERTY_QPID_HOME));
+ }
+ }
+ return context;
+ }
+
+ private void printVersion()
+ {
+ final StringBuilder protocol = new StringBuilder("AMQP version(s) [major.minor]: ");
+ boolean first = true;
+ Set<Protocol> protocols = new TreeSet<>();
+ for(ProtocolEngineCreator installedEngine : (new QpidServiceLoader()).instancesOf(ProtocolEngineCreator.class))
+ {
+ protocols.add(installedEngine.getVersion());
+ }
+ for(Protocol supportedProtocol : protocols)
+ {
+ if (first)
+ {
+ first = false;
+ }
+ else
+ {
+ protocol.append(", ");
+ }
+
+ protocol.append(supportedProtocol.getProtocolVersion());
}
+
+ System.out.println(CommonProperties.getVersionString() + " (" + protocol + ")");
}
- private void copyInitialConfigFile(final BrokerOptions options, final File destinationFile)
+ private void createInitialConficCopy(String initialConfigLocation)
+ {
+ File destinationFile = null;
+
+ String destinationOption = _commandLine.getOptionValue(OPTION_CREATE_INITIAL_CONFIG.getOpt());
+ if (destinationOption != null)
+ {
+ destinationFile = new File(destinationOption);
+ }
+ else
+ {
+ destinationFile = new File(System.getProperty("user.dir"), SystemConfig.DEFAULT_INITIAL_CONFIG_NAME);
+ }
+
+ if(initialConfigLocation == null)
+ {
+ initialConfigLocation = AbstractSystemConfig.getDefaultValue(SystemConfig.INITIAL_CONFIGURATION_LOCATION);
+ }
+ copyInitialConfigFile(initialConfigLocation, destinationFile);
+
+ System.out.println("Initial config written to: " + destinationFile.getAbsolutePath());
+ }
+
+ private void copyInitialConfigFile(final String initialConfigLocation, final File destinationFile)
{
- String initialConfigLocation = options.getInitialConfigurationLocation();
URL url = null;
try
{
@@ -342,22 +389,10 @@ public class Main
{
handler = (Thread.UncaughtExceptionHandler) Class.forName(handlerClass).newInstance();
}
- catch (ClassNotFoundException e)
- {
-
- }
- catch (InstantiationException e)
- {
-
- }
- catch (IllegalAccessException e)
+ catch (ClassNotFoundException | InstantiationException | IllegalAccessException | ClassCastException e)
{
}
- catch (ClassCastException e)
- {
-
- }
}
if(handler == null)
@@ -400,20 +435,22 @@ public class Main
}
}
- protected void startBroker(final BrokerOptions options) throws Exception
+ protected void startBroker(Map<String,Object> attributes) throws Exception
{
- Broker broker = new Broker(new Action<Integer>()
- {
- @Override
- public void performAction(final Integer exitStatusCode)
- {
- if (exitStatusCode != 0)
- {
- shutdown(exitStatusCode);
- }
- }
- });
- broker.startup(options);
+ SystemLauncher systemLauncher = new SystemLauncher(new LogbackLoggingSystemLauncherListener(),
+ new SystemLauncherListener.DefaultSystemLauncherListener()
+ {
+ @Override
+ public void onShutdown(final int exitCode)
+ {
+ if (exitCode != 0)
+ {
+ shutdown(exitCode);
+ }
+ }
+ });
+
+ systemLauncher.startup(attributes);
}
protected void shutdown(final int status)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org