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 2014/08/18 02:32:45 UTC
svn commit: r1618531 - in /qpid/trunk/qpid/java:
broker-codegen/src/main/java/org/apache/qpid/server/model/
broker-core/src/main/java/org/apache/qpid/server/
broker-core/src/main/java/org/apache/qpid/server/model/
broker-core/src/main/java/org/apache/q...
Author: rgodfrey
Date: Mon Aug 18 00:32:44 2014
New Revision: 1618531
URL: http://svn.apache.org/r1618531
Log:
QPID-6011 : [Java Broker] provide a mechanism for disabling plugins and implementation types
Added:
qpid/trunk/qpid/java/broker-core/src/main/resources/system.properties
Modified:
qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectRegistrationGenerator.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MessageConverterRegistry.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageMetaDataTypeRegistry.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PluginClassProviderAction.java
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
Modified: qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectRegistrationGenerator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectRegistrationGenerator.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectRegistrationGenerator.java (original)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectRegistrationGenerator.java Mon Aug 18 00:32:44 2014
@@ -26,16 +26,21 @@ import java.io.PrintWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.SourceVersion;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
import javax.tools.Diagnostic;
import javax.tools.JavaFileObject;
@@ -49,6 +54,9 @@ public class ConfiguredObjectRegistratio
private Map<String, Set<String>> _managedObjectClasses = new HashMap<>();
+ private Map<String, String> _typeMap = new HashMap<>();
+ private Map<String, String> _categoryMap = new HashMap<>();
+
@Override
public SourceVersion getSupportedSourceVersion()
{
@@ -78,14 +86,31 @@ public class ConfiguredObjectRegistratio
{
PackageElement packageElement = elementUtils.getPackageOf(e);
String packageName = packageElement.getQualifiedName().toString();
-
+ String className = e.getSimpleName().toString();
+ for(AnnotationMirror a : e.getAnnotationMirrors())
+ {
+ if(a.getAnnotationType().asElement().equals(annotationElement))
+ {
+ for(Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : a.getElementValues().entrySet())
+ {
+ if(entry.getKey().getSimpleName().toString().equals("type"))
+ {
+ _typeMap.put(packageName + "." + className, (String) entry.getValue().getValue());
+ processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "looking for " + packageName + "." + className);
+ _categoryMap.put(packageName + "." + className, getCategory((TypeElement)e));
+ break;
+ }
+ }
+ break;
+ }
+ }
Set<String> classNames = _managedObjectClasses.get(packageName);
if (classNames == null)
{
classNames = new HashSet<>();
_managedObjectClasses.put(packageName, classNames);
}
- classNames.add(e.getSimpleName().toString());
+ classNames.add(className);
}
}
for (Map.Entry<String, Set<String>> entry : _managedObjectClasses.entrySet())
@@ -93,6 +118,8 @@ public class ConfiguredObjectRegistratio
generateRegistrationFile(entry.getKey(), entry.getValue());
}
_managedObjectClasses.clear();
+ _typeMap.clear();
+ _categoryMap.clear();
}
catch (Exception e)
{
@@ -102,6 +129,63 @@ public class ConfiguredObjectRegistratio
return false;
}
+ private String getCategory(final TypeElement e)
+ {
+ Elements elementUtils = processingEnv.getElementUtils();
+ TypeElement annotationElement = elementUtils.getTypeElement(MANAGED_OBJECT_CANONICAL_NAME);
+ String category = null;
+ List<? extends AnnotationMirror> annotationMirrors = e.getAnnotationMirrors();
+ if(annotationMirrors != null)
+ {
+ for (AnnotationMirror a : annotationMirrors)
+ {
+ if (a.getAnnotationType().asElement().equals(annotationElement))
+ {
+ category = e.getSimpleName().toString().toLowerCase();
+
+ for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : a.getElementValues()
+ .entrySet())
+ {
+ if (entry.getKey().getSimpleName().toString().equals("category"))
+ {
+ if (!Boolean.TRUE.equals(entry.getValue().getValue()))
+ {
+ category = null;
+ }
+
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ if (category == null)
+ {
+ for (TypeMirror interfaceMirror : e.getInterfaces())
+ {
+ category = getCategory((TypeElement) processingEnv.getTypeUtils().asElement(interfaceMirror));
+ if (category != null)
+ {
+ break;
+ }
+ }
+ }
+
+ if (category == null && e.getSuperclass() != null)
+ {
+ TypeElement parent = (TypeElement) processingEnv.getTypeUtils().asElement(e.getSuperclass());
+ if(parent != null)
+ {
+ category = getCategory(parent);
+ }
+ }
+
+ return category;
+
+ }
+
private void generateRegistrationFile(final String packageName, final Set<String> classNames)
{
final String className = "ConfiguredObjectRegistrationImpl";
@@ -144,7 +228,21 @@ public class ConfiguredObjectRegistratio
pw.println(" Set<Class<? extends ConfiguredObject>> implementations = new HashSet<>();");
for(String implementationName : classNames)
{
- pw.println(" implementations.add("+implementationName+".class);");
+ String qualifiedImplementationName = packageName + "." + implementationName;
+ if(_typeMap.get(qualifiedImplementationName) != null && _categoryMap.get(qualifiedImplementationName) != null)
+ {
+ pw.println(" if(!Boolean.getBoolean(\"qpid.type.disabled:"
+ +_categoryMap.get(qualifiedImplementationName)
+ +"."+_typeMap.get(qualifiedImplementationName)+"\"))");
+ pw.println(" {");
+ pw.println(" implementations.add("+implementationName+".class);");
+ pw.println(" }");
+
+ }
+ else
+ {
+ pw.println(" implementations.add(" + implementationName + ".class);");
+ }
}
pw.println(" _implementations = Collections.unmodifiableSet(implementations);");
pw.println(" }");
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java Mon Aug 18 00:32:44 2014
@@ -54,6 +54,7 @@ public class BrokerOptions
public static final String DEFAULT_LOG_CONFIG_FILE = "etc/log4j.xml";
public static final String DEFAULT_INITIAL_CONFIG_LOCATION =
BrokerOptions.class.getClassLoader().getResource(DEFAULT_INITIAL_CONFIG_NAME).toExternalForm();
+
public static final String MANAGEMENT_MODE_USER_NAME = "mm_admin";
private static final int MANAGEMENT_MODE_PASSWORD_LENGTH = 10;
@@ -76,6 +77,7 @@ public class BrokerOptions
private boolean _skipLoggingConfiguration;
private boolean _overwriteConfigurationStore;
private Map<String, String> _configProperties = new HashMap<String,String>();
+ private String _initialSystemProperties;
public Map<String, Object> convertToSystemAttributes()
{
@@ -369,4 +371,5 @@ public class BrokerOptions
return _configProperties.get(QPID_HOME_DIR);
}
+
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java Mon Aug 18 00:32:44 2014
@@ -105,7 +105,7 @@ public final class BrokerModel extends M
addRelationship(Session.class, Publisher.class);
_objectFactory = new ConfiguredObjectFactoryImpl(this);
- _typeRegistry = new ConfiguredObjectTypeRegistry((new QpidServiceLoader<ConfiguredObjectRegistration>()).instancesOf(ConfiguredObjectRegistration.class), getSupportedCategories());
+ _typeRegistry = new ConfiguredObjectTypeRegistry((new QpidServiceLoader()).instancesOf(ConfiguredObjectRegistration.class), getSupportedCategories());
}
public final ConfiguredObjectTypeRegistry getTypeRegistry()
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java Mon Aug 18 00:32:44 2014
@@ -44,8 +44,8 @@ public class ConfiguredObjectFactoryImpl
public ConfiguredObjectFactoryImpl(Model model)
{
_model = model;
- QpidServiceLoader<ConfiguredObjectTypeFactory> serviceLoader =
- new QpidServiceLoader<ConfiguredObjectTypeFactory>();
+ QpidServiceLoader serviceLoader =
+ new QpidServiceLoader();
Iterable<ConfiguredObjectTypeFactory> allFactories =
serviceLoader.instancesOf(ConfiguredObjectTypeFactory.class);
for (ConfiguredObjectTypeFactory factory : allFactories)
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java Mon Aug 18 00:32:44 2014
@@ -151,8 +151,7 @@ public class AmqpPortImpl extends Abstra
TransportProvider transportProvider = null;
final HashSet<Transport> transportSet = new HashSet<Transport>(transports);
- for (TransportProviderFactory tpf : (new QpidServiceLoader<TransportProviderFactory>()).instancesOf(
- TransportProviderFactory.class))
+ for (TransportProviderFactory tpf : (new QpidServiceLoader()).instancesOf(TransportProviderFactory.class))
{
if (tpf.getSupportedTransports().contains(transports))
{
@@ -284,7 +283,7 @@ public class AmqpPortImpl extends Abstra
public static Set<Protocol> getInstalledProtocols()
{
Set<Protocol> protocols = new HashSet<>();
- for(ProtocolEngineCreator installedEngine : (new QpidServiceLoader<ProtocolEngineCreator>()).instancesOf(ProtocolEngineCreator.class))
+ for(ProtocolEngineCreator installedEngine : (new QpidServiceLoader()).instancesOf(ProtocolEngineCreator.class))
{
protocols.add(installedEngine.getVersion());
}
@@ -343,7 +342,7 @@ public class AmqpPortImpl extends Abstra
{
Set<Set<Transport>> combinations = new HashSet<>();
- for(TransportProviderFactory providerFactory : (new QpidServiceLoader<TransportProviderFactory>()).instancesOf(TransportProviderFactory.class))
+ for(TransportProviderFactory providerFactory : (new QpidServiceLoader()).instancesOf(TransportProviderFactory.class))
{
combinations.addAll(providerFactory.getSupportedTransports());
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java Mon Aug 18 00:32:44 2014
@@ -21,14 +21,9 @@
package org.apache.qpid.server.plugin;
import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.store.jdbc.ConnectionProvider;
public interface JDBCConnectionProviderFactory extends Pluggable
@@ -48,7 +43,7 @@ public interface JDBCConnectionProviderF
public static JDBCConnectionProviderFactory get(String type)
{
- QpidServiceLoader<JDBCConnectionProviderFactory> qpidServiceLoader = new QpidServiceLoader<JDBCConnectionProviderFactory>();
+ QpidServiceLoader qpidServiceLoader = new QpidServiceLoader();
Iterable<JDBCConnectionProviderFactory> factories = qpidServiceLoader.atLeastOneInstanceOf(JDBCConnectionProviderFactory.class);
for(JDBCConnectionProviderFactory factory : factories)
{
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java Mon Aug 18 00:32:44 2014
@@ -33,7 +33,7 @@ public class PluggableFactoryLoader<T ex
public PluggableFactoryLoader(Class<T> factoryClass)
{
Map<String, T> fm = new HashMap<String, T>();
- QpidServiceLoader<T> qpidServiceLoader = new QpidServiceLoader<T>();
+ QpidServiceLoader qpidServiceLoader = new QpidServiceLoader();
Iterable<T> factories = qpidServiceLoader.atLeastOneInstanceOf(factoryClass);
for (T factory : factories)
{
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/QpidServiceLoader.java Mon Aug 18 00:32:44 2014
@@ -24,16 +24,17 @@ import java.util.List;
import java.util.ServiceLoader;
import org.apache.log4j.Logger;
+
import org.apache.qpid.server.util.ServerScopedRuntimeException;
/**
* Simple facade over a {@link ServiceLoader} to instantiate all configured implementations of an interface.
*/
-public class QpidServiceLoader<C extends Pluggable>
+public class QpidServiceLoader
{
private static final Logger _logger = Logger.getLogger(QpidServiceLoader.class);
- public Iterable<C> instancesOf(Class<C> clazz)
+ public <C extends Pluggable> Iterable<C> instancesOf(Class<C> clazz)
{
return instancesOf(clazz, false);
}
@@ -41,12 +42,12 @@ public class QpidServiceLoader<C extends
/**
* @throws RuntimeException if at least one implementation is not found.
*/
- public Iterable<C> atLeastOneInstanceOf(Class<C> clazz)
+ public <C extends Pluggable> Iterable<C> atLeastOneInstanceOf(Class<C> clazz)
{
return instancesOf(clazz, true);
}
- private Iterable<C> instancesOf(Class<C> clazz, boolean atLeastOne)
+ private <C extends Pluggable> Iterable<C> instancesOf(Class<C> clazz, boolean atLeastOne)
{
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Iterator<C> serviceLoaderIterator = ServiceLoader.load(clazz, classLoader).iterator();
@@ -55,7 +56,11 @@ public class QpidServiceLoader<C extends
List<C> serviceImplementations = new ArrayList<C>();
while(serviceLoaderIterator.hasNext())
{
- serviceImplementations.add(serviceLoaderIterator.next());
+ C next = serviceLoaderIterator.next();
+ if(!isDisabled(next))
+ {
+ serviceImplementations.add(next);
+ }
}
if(atLeastOne && serviceImplementations.isEmpty())
@@ -70,4 +75,16 @@ public class QpidServiceLoader<C extends
return serviceImplementations;
}
+
+ private <C extends Pluggable> boolean isDisabled(final C next)
+ {
+ return Boolean.getBoolean("qpid.plugin.disabled:"+next.getClass().getName())
+ || (next instanceof ConfiguredObjectTypeFactory && isDisabledConfiguredType((ConfiguredObjectTypeFactory<?>) next));
+ }
+
+ private boolean isDisabledConfiguredType(final ConfiguredObjectTypeFactory<?> typeFactory)
+ {
+ return Boolean.getBoolean("qpid.type.disabled:" + typeFactory.getCategoryClass().getSimpleName().toLowerCase()
+ + "." + typeFactory.getType());
+ }
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MessageConverterRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MessageConverterRegistry.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MessageConverterRegistry.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MessageConverterRegistry.java Mon Aug 18 00:32:44 2014
@@ -35,7 +35,7 @@ public class MessageConverterRegistry
static
{
- for(MessageConverter<? extends ServerMessage, ? extends ServerMessage> converter : (new QpidServiceLoader<MessageConverter>()).instancesOf(MessageConverter.class))
+ for(MessageConverter<? extends ServerMessage, ? extends ServerMessage> converter : (new QpidServiceLoader()).instancesOf(MessageConverter.class))
{
Map<Class<? extends ServerMessage>, MessageConverter> map = _converters.get(converter.getInputClass());
if(map == null)
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java Mon Aug 18 00:32:44 2014
@@ -72,7 +72,7 @@ public class MultiVersionProtocolEngineF
_supported = supportedVersions;
_defaultSupportedReply = defaultSupportedReply;
final List<ProtocolEngineCreator> creators = new ArrayList<ProtocolEngineCreator>();
- for(ProtocolEngineCreator c : new QpidServiceLoader<ProtocolEngineCreator>().instancesOf(ProtocolEngineCreator.class))
+ for(ProtocolEngineCreator c : new QpidServiceLoader().instancesOf(ProtocolEngineCreator.class))
{
creators.add(c);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageMetaDataTypeRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageMetaDataTypeRegistry.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageMetaDataTypeRegistry.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageMetaDataTypeRegistry.java Mon Aug 18 00:32:44 2014
@@ -32,7 +32,7 @@ public class MessageMetaDataTypeRegistry
int maxOrdinal = -1;
Iterable<MessageMetaDataType> messageMetaDataTypes =
- new QpidServiceLoader<MessageMetaDataType>().atLeastOneInstanceOf(MessageMetaDataType.class);
+ new QpidServiceLoader().atLeastOneInstanceOf(MessageMetaDataType.class);
for(MessageMetaDataType type : messageMetaDataTypes)
{
@@ -42,7 +42,7 @@ public class MessageMetaDataTypeRegistry
}
}
values = new MessageMetaDataType[maxOrdinal+1];
- for(MessageMetaDataType type : new QpidServiceLoader<MessageMetaDataType>().instancesOf(MessageMetaDataType.class))
+ for(MessageMetaDataType type : new QpidServiceLoader().instancesOf(MessageMetaDataType.class))
{
if(values[type.ordinal()] != null)
{
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Mon Aug 18 00:32:44 2014
@@ -272,7 +272,7 @@ public abstract class AbstractVirtualHos
private void registerSystemNodes()
{
- QpidServiceLoader<SystemNodeCreator> qpidServiceLoader = new QpidServiceLoader<SystemNodeCreator>();
+ QpidServiceLoader qpidServiceLoader = new QpidServiceLoader();
Iterable<SystemNodeCreator> factories = qpidServiceLoader.instancesOf(SystemNodeCreator.class);
for(SystemNodeCreator creator : factories)
{
Added: qpid/trunk/qpid/java/broker-core/src/main/resources/system.properties
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/resources/system.properties?rev=1618531&view=auto
==============================================================================
(empty)
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PluginClassProviderAction.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PluginClassProviderAction.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PluginClassProviderAction.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/PluginClassProviderAction.java Mon Aug 18 00:32:44 2014
@@ -19,12 +19,11 @@ package org.apache.qpid.server.managemen
*
*/
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.plugin.Pluggable;
import org.apache.qpid.server.plugin.QpidServiceLoader;
@@ -43,7 +42,7 @@ public class PluginClassProviderAction i
try
{
String className = (String) request.get("plugin");
- QpidServiceLoader<Pluggable> serviceLoader = new QpidServiceLoader<Pluggable>();
+ QpidServiceLoader serviceLoader = new QpidServiceLoader();
final Class<Pluggable> clazz = (Class<Pluggable>) Class.forName("org.apache.qpid.server.plugin."+className);
List<String> values = new ArrayList<String>();
for(Pluggable instance : serviceLoader.instancesOf(clazz))
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java Mon Aug 18 00:32:44 2014
@@ -90,7 +90,7 @@ public class JMXManagementPluginImpl
_changeListener = new ChangeListener();
_pluginMBeanProvider = new PluginMBeansProvider();
_mBeanProviders = new HashSet<MBeanProvider>();
- QpidServiceLoader<MBeanProvider> qpidServiceLoader = new QpidServiceLoader<MBeanProvider>();
+ QpidServiceLoader qpidServiceLoader = new QpidServiceLoader();
for (MBeanProvider provider : qpidServiceLoader.instancesOf(MBeanProvider.class))
{
_mBeanProviders.add(provider);
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java?rev=1618531&r1=1618530&r2=1618531&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java Mon Aug 18 00:32:44 2014
@@ -25,6 +25,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
@@ -94,6 +97,9 @@ public class Main
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");
+ 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");
+
private static final Options OPTIONS = new Options();
static
@@ -114,6 +120,7 @@ public class Main
OPTIONS.addOption(OPTION_MM_HTTP_PORT);
OPTIONS.addOption(OPTION_MM_PASSWORD);
OPTIONS.addOption(OPTION_CONFIGURATION_PROPERTY);
+ OPTIONS.addOption(OPTION_INITIAL_SYSTEM_PROPERTIES);
}
protected CommandLine _commandLine;
@@ -168,7 +175,11 @@ public class Main
protected void execute() throws Exception
{
+ String initialProperties = _commandLine.getOptionValue(OPTION_INITIAL_SYSTEM_PROPERTIES.getOpt());
+ populateSystemPropertiesFromDefaults(initialProperties);
+
BrokerOptions options = new BrokerOptions();
+
String initialConfigLocation = _commandLine.getOptionValue(OPTION_INITIAL_CONFIGURATION_PATH.getOpt());
if (initialConfigLocation != null)
{
@@ -304,6 +315,28 @@ public class Main
}
}
+ private void populateSystemPropertiesFromDefaults(final String initialProperties) throws IOException
+ {
+ URL initialPropertiesLocation;
+ if(initialProperties == null)
+ {
+ initialPropertiesLocation = getClass().getClassLoader().getResource("system.properties");
+ }
+ else
+ {
+ initialPropertiesLocation = (new File(initialProperties)).toURI().toURL();
+ }
+
+ Properties props = new Properties();
+ props.load(initialPropertiesLocation.openStream());
+ Set<String> propertyNames = new HashSet<>(props.stringPropertyNames());
+ propertyNames.removeAll(System.getProperties().stringPropertyNames());
+ for(String propName : propertyNames)
+ {
+ System.setProperty(propName, props.getProperty(propName));
+ }
+ }
+
private void copyInitialConfigFile(final BrokerOptions options, final File destinationFile)
{
String initialConfigLocation = options.getInitialConfigurationLocation();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org