Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfigImpl.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfigImpl.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfigImpl.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfigImpl.java Tue Jan 27 15:00:13 2015 @@ -20,7 +20,8 @@ */ package org.apache.qpid.server.store.berkeleydb; -import org.apache.qpid.server.BrokerOptions; +import java.util.Map; + import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; @@ -49,10 +50,10 @@ public class BDBSystemConfigImpl extends public BDBSystemConfigImpl(final TaskExecutor taskExecutor, final EventLogger eventLogger, final LogRecorder logRecorder, - final BrokerOptions brokerOptions, + final Map<String,Object> attributes, final BrokerShutdownProvider brokerShutdownProvider) { - super(taskExecutor, eventLogger, logRecorder, brokerOptions, brokerShutdownProvider); + super(taskExecutor, eventLogger, logRecorder, attributes, brokerShutdownProvider); } @Override
Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/CoalescingCommiter.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/CoalescingCommiter.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/CoalescingCommiter.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/CoalescingCommiter.java Tue Jan 27 15:00:13 2015 @@ -50,14 +50,17 @@ public class CoalescingCommiter implemen public void stop() { _commitThread.close(); - try + if (Thread.currentThread() != _commitThread) { - _commitThread.join(); - } - catch (InterruptedException ie) - { - Thread.currentThread().interrupt(); - throw new RuntimeException("Commit thread has not shutdown", ie); + try + { + _commitThread.join(); + } + catch (InterruptedException ie) + { + Thread.currentThread().interrupt(); + throw new RuntimeException("Commit thread has not shutdown", ie); + } } } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java Tue Jan 27 15:00:13 2015 @@ -392,6 +392,13 @@ public class ReplicatedEnvironmentFacade } } + if (dbe instanceof UnknownMasterException) + { + // when Master transits into Unknown state ( for example, due to mastership transfer) + // we need to abort any ongoing je operation without halting the Broker or VHN/VH + return new ConnectionScopedRuntimeException(String.format("Environment '%s' cannot finish JE operation because master is unknown", getNodeName()), dbe); + } + boolean restart = (noMajority || dbe instanceof RestartRequiredException); if (restart) { Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java Tue Jan 27 15:00:13 2015 @@ -19,456 +19,17 @@ package org.apache.qpid.server.virtualhost.berkeleydb; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.ScheduledFuture; - -import org.apache.qpid.server.connection.IConnectionRegistry; import org.apache.qpid.server.exchange.ExchangeImpl; -import org.apache.qpid.server.logging.EventLogger; -import org.apache.qpid.server.message.MessageDestination; -import org.apache.qpid.server.message.MessageSource; -import org.apache.qpid.server.model.AbstractConfiguredObject; -import org.apache.qpid.server.model.BrokerModel; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Connection; -import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.ManagedAttributeField; -import org.apache.qpid.server.model.ManagedObject; -import org.apache.qpid.server.model.ManagedObjectFactoryConstructor; -import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.VirtualHost; -import org.apache.qpid.server.model.VirtualHostAlias; -import org.apache.qpid.server.model.VirtualHostNode; -import org.apache.qpid.server.protocol.LinkRegistry; import org.apache.qpid.server.queue.AMQQueue; -import org.apache.qpid.server.stats.StatisticsCounter; -import org.apache.qpid.server.store.DurableConfigurationStore; -import org.apache.qpid.server.store.MessageStore; -import org.apache.qpid.server.txn.DtxRegistry; -import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException; -import org.apache.qpid.server.virtualhost.HouseKeepingTask; -import org.apache.qpid.server.virtualhost.RequiredExchangeException; +import org.apache.qpid.server.virtualhost.NonStandardVirtualHost; import org.apache.qpid.server.virtualhost.VirtualHostImpl; /** Object that represents the VirtualHost whilst the VirtualHostNode is in the replica role. The real virtualhost will be elsewhere in the group. */ -@ManagedObject( category = false, type = "BDB_HA_REPLICA", register = false ) -public class BDBHAReplicaVirtualHost extends AbstractConfiguredObject<BDBHAReplicaVirtualHost> - implements VirtualHostImpl<BDBHAReplicaVirtualHost, AMQQueue<?>, ExchangeImpl<?>>, - VirtualHost<BDBHAReplicaVirtualHost,AMQQueue<?>, ExchangeImpl<?>> +public interface BDBHAReplicaVirtualHost<X extends BDBHAReplicaVirtualHost<X>> + extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, + NonStandardVirtualHost<X,AMQQueue<?>,ExchangeImpl<?>> { - private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived; - - @ManagedAttributeField - private boolean _queue_deadLetterQueueEnabled; - - @ManagedAttributeField - private long _housekeepingCheckPeriod; - - @ManagedAttributeField - private long _storeTransactionIdleTimeoutClose; - - @ManagedAttributeField - private long _storeTransactionIdleTimeoutWarn; - - @ManagedAttributeField - private long _storeTransactionOpenTimeoutClose; - - @ManagedAttributeField - private long _storeTransactionOpenTimeoutWarn; - @ManagedAttributeField - private int _housekeepingThreadCount; - - @ManagedObjectFactoryConstructor - public BDBHAReplicaVirtualHost(final Map<String, Object> attributes, VirtualHostNode<?> virtualHostNode) - { - super(parentsMap(virtualHostNode), attributes); - - _messagesDelivered = new StatisticsCounter("messages-delivered-" + getName()); - _dataDelivered = new StatisticsCounter("bytes-delivered-" + getName()); - _messagesReceived = new StatisticsCounter("messages-received-" + getName()); - _dataReceived = new StatisticsCounter("bytes-received-" + getName()); - setState(State.UNAVAILABLE); - } - - @Override - protected void validateChange(final ConfiguredObject<?> proxyForValidation, final Set<String> changedAttributes) - { - super.validateChange(proxyForValidation, changedAttributes); - - throwUnsupportedForReplica(); - } - - @Override - public String getModelVersion() - { - return BrokerModel.MODEL_VERSION; - } - - @Override - protected <C extends ConfiguredObject> C addChild(final Class<C> childClass, - final Map<String, Object> attributes, - final ConfiguredObject... otherParents) - { - throwUnsupportedForReplica(); - return null; - } - - @Override - public ExchangeImpl createExchange(final Map<String, Object> attributes) - { - throwUnsupportedForReplica(); - return null; - } - - @Override - public void removeExchange(final ExchangeImpl<?> exchange, final boolean force) - throws ExchangeIsAlternateException, RequiredExchangeException - { - throwUnsupportedForReplica(); - } - - @Override - public MessageDestination getMessageDestination(final String name) - { - return null; - } - - @Override - public ExchangeImpl<?> getExchange(final String name) - { - return null; - } - - @Override - public AMQQueue<?> createQueue(final Map<String, Object> attributes) - { - throwUnsupportedForReplica(); - return null; - } - - @Override - public void executeTransaction(final TransactionalOperation op) - { - throwUnsupportedForReplica(); - } - - @Override - public Collection<String> getExchangeTypeNames() - { - return getObjectFactory().getSupportedTypes(Exchange.class); - } - - @Override - public Collection<String> getSupportedExchangeTypes() - { - return getObjectFactory().getSupportedTypes(Exchange.class); - } - - @Override - public Collection<String> getSupportedQueueTypes() - { - return getObjectFactory().getSupportedTypes(Queue.class); - } - - @Override - public boolean isQueue_deadLetterQueueEnabled() - { - return false; - } - - @Override - public long getHousekeepingCheckPeriod() - { - return 0; - } - - @Override - public long getStoreTransactionIdleTimeoutClose() - { - return 0; - } - - @Override - public long getStoreTransactionIdleTimeoutWarn() - { - return 0; - } - - @Override - public long getStoreTransactionOpenTimeoutClose() - { - return 0; - } - - @Override - public long getStoreTransactionOpenTimeoutWarn() - { - return 0; - } - - @Override - public int getHousekeepingThreadCount() - { - return 0; - } - - @Override - public long getQueueCount() - { - return 0; - } - - @Override - public long getExchangeCount() - { - return 0; - } - - @Override - public long getConnectionCount() - { - return 0; - } - - @Override - public long getBytesIn() - { - return 0; - } - - @Override - public long getBytesOut() - { - return 0; - } - - @Override - public long getMessagesIn() - { - return 0; - } - - @Override - public long getMessagesOut() - { - return 0; - } - - @Override - public Collection<VirtualHostAlias> getAliases() - { - return Collections.emptyList(); - } - - @Override - public Collection<Connection> getConnections() - { - return Collections.emptyList(); - } - - @Override - public IConnectionRegistry getConnectionRegistry() - { - return null; - } - - @Override - public AMQQueue<?> getQueue(final String name) - { - return null; - } - - @Override - public MessageSource getMessageSource(final String name) - { - return null; - } - - @Override - public AMQQueue<?> getQueue(final UUID id) - { - return null; - } - - @Override - public Collection<AMQQueue<?>> getQueues() - { - return Collections.emptyList(); - } - - @Override - public int removeQueue(final AMQQueue<?> queue) - { - throwUnsupportedForReplica(); - return 0; - } - - @Override - public Collection<ExchangeImpl<?>> getExchanges() - { - return Collections.emptyList(); - } - - @Override - public DurableConfigurationStore getDurableConfigurationStore() - { - return null; - } - - @Override - public ExchangeImpl<?> getExchange(final UUID id) - { - return null; - } - - @Override - public MessageDestination getDefaultDestination() - { - return null; - } - - @Override - public MessageStore getMessageStore() - { - return null; - } - - @Override - public void setTargetSize(final long targetSize) - { - - } - - @Override - public long getTotalQueueDepthBytes() - { - return 0l; - } - - @Override - public org.apache.qpid.server.security.SecurityManager getSecurityManager() - { - return null; - } - - @Override - public void scheduleHouseKeepingTask(final long period, final HouseKeepingTask task) - { - } - - @Override - public long getHouseKeepingTaskCount() - { - return 0; - } - - @Override - public long getHouseKeepingCompletedTaskCount() - { - return 0; - } - - @Override - public int getHouseKeepingPoolSize() - { - return 0; - } - - @Override - public void setHouseKeepingPoolSize(final int newSize) - { - } - - @Override - public int getHouseKeepingActiveCount() - { - return 0; - } - - @Override - public DtxRegistry getDtxRegistry() - { - return null; - } - - @Override - public LinkRegistry getLinkRegistry(final String remoteContainerId) - { - return null; - } - - @Override - public ScheduledFuture<?> scheduleTask(final long delay, final Runnable timeoutTask) - { - throwUnsupportedForReplica(); - return null; - } - - @Override - public boolean getDefaultDeadLetterQueueEnabled() - { - return false; - } - - @Override - public EventLogger getEventLogger() - { - return null; - } - - @Override - public void registerMessageReceived(final long messageSize, final long timestamp) - { - throwUnsupportedForReplica(); - } - - @Override - public void registerMessageDelivered(final long messageSize) - { - throwUnsupportedForReplica(); - } - - @Override - public StatisticsCounter getMessageDeliveryStatistics() - { - return _messagesDelivered; - } - - @Override - public StatisticsCounter getMessageReceiptStatistics() - { - return _messagesReceived; - } - - @Override - public StatisticsCounter getDataDeliveryStatistics() - { - return _dataDelivered; - } - - @Override - public StatisticsCounter getDataReceiptStatistics() - { - return _dataReceived; - } - - @Override - public void resetStatistics() - { - } - - private void throwUnsupportedForReplica() - { - throw new IllegalStateException("The virtual host state of " + getState() - + " does not permit this operation."); - } - } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java Tue Jan 27 15:00:13 2015 @@ -20,16 +20,18 @@ */ package org.apache.qpid.server.virtualhost.berkeleydb; -import java.util.List; - import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.model.DerivedAttribute; import org.apache.qpid.server.model.ManagedAttribute; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.store.SizeMonitoringSettings; +import org.apache.qpid.server.virtualhost.NonStandardVirtualHost; import org.apache.qpid.server.virtualhost.VirtualHostImpl; -public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, SizeMonitoringSettings +public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> + extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, + SizeMonitoringSettings, + NonStandardVirtualHost<X,AMQQueue<?>,ExchangeImpl<?>> { String REMOTE_TRANSACTION_SYNCHRONIZATION_POLICY = "remoteTransactionSynchronizationPolicy"; String LOCAL_TRANSACTION_SYNCHRONIZATION_POLICY = "localTransactionSynchronizationPolicy"; Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java Tue Jan 27 15:00:13 2015 @@ -21,15 +21,14 @@ package org.apache.qpid.server.virtualhostnode.berkeleydb; import java.io.File; -import java.io.IOException; import java.net.InetSocketAddress; import java.net.URI; import java.net.URISyntaxException; -import java.nio.file.Files; import java.security.PrivilegedAction; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -62,7 +61,6 @@ import org.apache.qpid.server.logging.me import org.apache.qpid.server.logging.messages.HighAvailabilityMessages; import org.apache.qpid.server.logging.subjects.BDBHAVirtualHostNodeLogSubject; import org.apache.qpid.server.logging.subjects.GroupLogSubject; -import org.apache.qpid.server.model.AbstractConfiguredObject; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; @@ -88,7 +86,8 @@ import org.apache.qpid.server.util.Serve import org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHostImpl; import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode; -@ManagedObject( category = false, type = BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE ) +@ManagedObject( category = false, type = BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, + validChildTypes = "org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeImpl#getSupportedChildTypes()" ) public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtualHostNodeImpl> implements BDBHAVirtualHostNode<BDBHAVirtualHostNodeImpl> { @@ -637,12 +636,6 @@ public class BDBHAVirtualHostNodeImpl ex createReplicaVirtualHost(); } - - private void onDetached() - { - closeVirtualHostIfExist(); - } - private void createReplicaVirtualHost() { try @@ -694,9 +687,10 @@ public class BDBHAVirtualHostNodeImpl ex onReplica(); break; case DETACHED: - onDetached(); + closeVirtualHostIfExist(); break; case UNKNOWN: + closeVirtualHostIfExist(); break; default: LOGGER.error("Unexpected state change: " + state); @@ -1205,4 +1199,8 @@ public class BDBHAVirtualHostNodeImpl ex abstract void perform(); } + public static Map<String, Collection<String>> getSupportedChildTypes() + { + return Collections.singletonMap(VirtualHost.class.getSimpleName(), (Collection<String>) Collections.singleton(BDBHAVirtualHostImpl.VIRTUAL_HOST_TYPE)); + } } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java Tue Jan 27 15:00:13 2015 @@ -20,6 +20,8 @@ */ package org.apache.qpid.server.virtualhostnode.berkeleydb; +import java.util.Collection; +import java.util.Collections; import java.util.Map; import org.apache.qpid.server.logging.messages.ConfigStoreMessages; @@ -32,7 +34,8 @@ import org.apache.qpid.server.store.Dura import org.apache.qpid.server.store.berkeleydb.BDBConfigurationStore; import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode; -@ManagedObject(type = BDBVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category = false) +@ManagedObject(type = BDBVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category = false, + validChildTypes = "org.apache.qpid.server.virtualhostnode.berkeleydb.BDBVirtualHostNodeImpl#getSupportedChildTypes()") public class BDBVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<BDBVirtualHostNodeImpl> implements BDBVirtualHostNode<BDBVirtualHostNodeImpl> { public static final String VIRTUAL_HOST_NODE_TYPE = "BDB"; @@ -70,4 +73,8 @@ public class BDBVirtualHostNodeImpl exte return getClass().getSimpleName() + " [id=" + getId() + ", name=" + getName() + ", storePath=" + getStorePath() + "]"; } + public static Map<String, Collection<String>> getSupportedChildTypes() + { + return Collections.singletonMap(VirtualHost.class.getSimpleName(), getSupportedVirtualHostTypes(true)); + } } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/existinggroup/add.js URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/existinggroup/add.js?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/existinggroup/add.js (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/existinggroup/add.js Tue Jan 27 15:00:13 2015 @@ -39,6 +39,9 @@ define(["dojo/_base/xhr", registry.byId("addVirtualHostNode.helperNodeName").set("regExpGen", util.nameOrContextVarRegexp); registry.byId("addVirtualHostNode.helperAddress").set("regExpGen", util.nodeAddressOrContextVarRegexp); registry.byId("addVirtualHostNode.address").set("regExpGen", util.nodeAddressOrContextVarRegexp); + + dom.byId("addVirtualHostNode.uploadFields").style.display = "none"; + } }; } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/add/newgroup/add.js Tue Jan 27 15:00:13 2015 @@ -70,6 +70,9 @@ define(["dojo/_base/xhr", this.addVirtualHostNodePermittedNodes = registry.byId("addVirtualHostNode.permittedNodes"); registry.byId("addVirtualHostNode.groupName").set("regExpGen", util.nameOrContextVarRegexp); + + dom.byId("addVirtualHostNode.uploadFields").style.display = "block"; + }, _updatePermittedNodesJson: function () { Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java Tue Jan 27 15:00:13 2015 @@ -803,7 +803,7 @@ public class ReplicatedEnvironmentFacade _replicaRolledback.countDown(); } }); - assertTrue("Node 1 did not go into desired state", + assertTrue("Node 1 did not go into desired state and remained in state " + node1.getNodeState(), node1StateChangeListener.awaitForStateChange(LISTENER_TIMEOUT, TimeUnit.SECONDS)); assertTrue("Node 1 did not experience rollback within timeout", _replicaRolledback.await(LISTENER_TIMEOUT, TimeUnit.SECONDS)); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/pom.xml URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/pom.xml?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/pom.xml (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/pom.xml Tue Jan 27 15:00:13 2015 @@ -80,6 +80,16 @@ </dependencies> <build> + + <resources> + <resource> + <directory>src/main/resources</directory> + </resource> + <resource> + <directory>${test.resource.directory}/test-profiles/test_resources</directory> + </resource> + </resources> + <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java Tue Jan 27 15:00:13 2015 @@ -31,6 +31,7 @@ import javax.jms.MessageConsumer; import javax.jms.Session; import org.apache.log4j.Logger; +import org.apache.qpid.server.configuration.BrokerProperties; import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBVirtualHostNode; import org.apache.qpid.test.utils.Piper; @@ -151,15 +152,15 @@ public class BDBBackupTest extends QpidB Process backupProcess = null; try { - String qpidHome = System.getProperty(QPID_HOME); + String qpidHome = QPID_HOME; ProcessBuilder pb = new ProcessBuilder(qpidHome + BACKUP_SCRIPT, "-todir", backupToDir.getAbsolutePath(), "-fromdir", backupFromDir.getAbsolutePath()); pb.redirectErrorStream(true); Map<String, String> env = pb.environment(); - env.put(QPID_HOME, qpidHome); + env.put(BrokerProperties.PROPERTY_QPID_HOME, qpidHome); LOGGER.debug("Backup command is " + pb.command()); backupProcess = pb.start(); - Piper piper = new Piper(backupProcess.getInputStream(), _testcaseOutputStream, null, BACKUP_COMPLETE_MESSAGE); + Piper piper = new Piper(backupProcess.getInputStream(), null, BACKUP_COMPLETE_MESSAGE, "BACKUP", ""); piper.start(); piper.await(2, TimeUnit.SECONDS); backupProcess.waitFor(); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java Tue Jan 27 15:00:13 2015 @@ -73,9 +73,9 @@ public class GroupCreator private static final String MANY_BROKER_URL_FORMAT = "amqp://guest:guest@/%s?brokerlist='%s'&failover='roundrobin?cyclecount='%d''"; private static final String BROKER_PORTION_FORMAT = "tcp://localhost:%d?connectdelay='%d',retries='%d'"; - private static final int FAILOVER_CYCLECOUNT = 20; + private static final int FAILOVER_CYCLECOUNT = 40; private static final int FAILOVER_RETRIES = 0; - private static final int FAILOVER_CONNECTDELAY = 500; + private static final int FAILOVER_CONNECTDELAY = 250; private static final String SINGLE_BROKER_URL_WITH_RETRY_FORMAT = "amqp://guest:guest@/%s?brokerlist='tcp://localhost:%d?connectdelay='%d',retries='%d''"; private static final String SINGLE_BROKER_URL_WITHOUT_RETRY_FORMAT = "amqp://guest:guest@/%s?brokerlist='tcp://localhost:%d'"; @@ -209,7 +209,7 @@ public class GroupCreator { try { - _testcase.startBroker(brokerPortNumber, brokerConfig); + _testcase.startBroker(brokerPortNumber, brokerConfig, null); return "OK"; } catch (Exception e) Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java Tue Jan 27 15:00:13 2015 @@ -45,6 +45,7 @@ import org.apache.qpid.server.model.Virt import org.apache.qpid.server.store.berkeleydb.jmx.ManagedBDBHAMessageStore; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; import org.apache.qpid.systest.rest.RestTestHelper; +import org.apache.qpid.test.utils.BrokerHolder; import org.apache.qpid.test.utils.JMXTestUtils; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.junit.Assert; @@ -72,7 +73,7 @@ public class JMXManagementTest extends Q @Override protected void setUp() throws Exception { - _brokerType = BrokerType.SPAWNED; + _brokerType = BrokerHolder.BrokerType.SPAWNED; setTestClientSystemProperty("log4j.configuration", getBrokerCommandLog4JFile().toURI().toString()); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java Tue Jan 27 15:00:13 2015 @@ -48,6 +48,7 @@ import org.apache.qpid.jms.ConnectionURL import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.State; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; +import org.apache.qpid.test.utils.BrokerHolder; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.test.utils.TestUtils; @@ -75,7 +76,7 @@ public class MultiNodeTest extends QpidB @Override protected void setUp() throws Exception { - _brokerType = BrokerType.SPAWNED; + _brokerType = BrokerHolder.BrokerType.SPAWNED; assertTrue(isJavaBroker()); assertTrue(isBrokerStorePersistent()); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java Tue Jan 27 15:00:13 2015 @@ -28,6 +28,7 @@ import javax.jms.JMSException; import org.apache.qpid.jms.ConnectionURL; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; +import org.apache.qpid.test.utils.BrokerHolder; import org.apache.qpid.test.utils.QpidBrokerTestCase; public class TwoNodeTest extends QpidBrokerTestCase @@ -47,7 +48,7 @@ public class TwoNodeTest extends QpidBro @Override protected void setUp() throws Exception { - _brokerType = BrokerType.SPAWNED; + _brokerType = BrokerHolder.BrokerType.SPAWNED; setTestClientSystemProperty("log4j.configuration", getBrokerCommandLog4JFile().toURI().toString()); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/SystemConfigFactoryGenerator.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/SystemConfigFactoryGenerator.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/SystemConfigFactoryGenerator.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/SystemConfigFactoryGenerator.java Tue Jan 27 15:00:13 2015 @@ -113,7 +113,8 @@ public class SystemConfigFactoryGenerato pw.println(";"); pw.println(); - pw.println("import org.apache.qpid.server.BrokerOptions;"); + pw.println("import java.util.Map;"); + pw.println(); pw.println("import org.apache.qpid.server.configuration.updater.TaskExecutor;"); pw.println("import org.apache.qpid.server.logging.EventLogger;"); pw.println("import org.apache.qpid.server.logging.LogRecorder;"); @@ -140,10 +141,10 @@ public class SystemConfigFactoryGenerato pw.println(" public "+objectSimpleName+" newInstance(final TaskExecutor taskExecutor,"); pw.println(" final EventLogger eventLogger,"); pw.println(" final LogRecorder logRecorder,"); - pw.println(" final BrokerOptions brokerOptions,"); + pw.println(" final Map<String,Object> attributes,"); pw.println(" final BrokerShutdownProvider brokerShutdownProvider)"); pw.println(" {"); - pw.println(" return new "+objectSimpleName+"(taskExecutor, eventLogger, logRecorder, brokerOptions, brokerShutdownProvider);"); + pw.println(" return new "+objectSimpleName+"(taskExecutor, eventLogger, logRecorder, attributes, brokerShutdownProvider);"); pw.println(" }"); pw.println("}"); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java Tue Jan 27 15:00:13 2015 @@ -33,10 +33,13 @@ import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; +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.Log4jMessageLogger; import org.apache.qpid.server.logging.LogRecorder; +import org.apache.qpid.server.logging.MessageLogger; import org.apache.qpid.server.logging.SystemOutMessageLogger; import org.apache.qpid.server.logging.log4j.LoggingManagementFacade; import org.apache.qpid.server.logging.messages.BrokerMessages; @@ -44,30 +47,31 @@ import org.apache.qpid.server.model.Brok 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.registry.ApplicationRegistry; -import org.apache.qpid.server.registry.IApplicationRegistry; import org.apache.qpid.server.security.SecurityManager; -import org.apache.qpid.server.store.DurableConfigurationStore; +import org.apache.qpid.server.util.Action; public class Broker implements BrokerShutdownProvider { private static final Logger LOGGER = Logger.getLogger(Broker.class); private volatile Thread _shutdownHookThread; - private volatile IApplicationRegistry _applicationRegistry; private EventLogger _eventLogger; private boolean _configuringOwnLogging = false; private final TaskExecutor _taskExecutor = new TaskExecutorImpl(); - private final boolean _exitJVMOnShutdownWithNonZeroExitCode; + + private SystemConfig _systemConfig; + + private final Action<Integer> _shutdownAction; + public Broker() { - this(false); + this(null); } - public Broker(boolean exitJVMOnShutdownWithNonZeroExitCode) + public Broker(Action<Integer> shutdownAction) { - this._exitJVMOnShutdownWithNonZeroExitCode = exitJVMOnShutdownWithNonZeroExitCode; + _shutdownAction = shutdownAction; } protected static class InitException extends RuntimeException @@ -96,9 +100,9 @@ public class Broker implements BrokerShu { try { - if (_applicationRegistry != null) + if(_systemConfig != null) { - _applicationRegistry.close(); + _systemConfig.close(); } _taskExecutor.stop(); @@ -110,9 +114,9 @@ public class Broker implements BrokerShu LogManager.shutdown(); } - if (_exitJVMOnShutdownWithNonZeroExitCode && exitStatusCode != 0) + if (_shutdownAction != null) { - System.exit(exitStatusCode); + _shutdownAction.performAction(exitStatusCode); } } } @@ -146,15 +150,29 @@ public class Broker implements BrokerShu String storeLocation = options.getConfigurationStoreLocation(); String storeType = options.getConfigurationStoreType(); - _eventLogger.message(BrokerMessages.CONFIG(storeLocation)); + if (options.isStartupLoggedToSystemOut()) + { + _eventLogger.message(BrokerMessages.CONFIG(storeLocation)); + } //Allow skipping the logging configuration for people who are //embedding the broker and want to configure it themselves. if(!options.isSkipLoggingConfiguration()) { - configureLogging(new File(options.getLogConfigFileLocation()), options.getLogWatchFrequency()); + configureLogging(new File(options.getLogConfigFileLocation()), options.getLogWatchFrequency(), options.isStartupLoggedToSystemOut()); } + // Create the RootLogger to be used during broker operation + boolean statusUpdatesEnabled = Boolean.parseBoolean(System.getProperty(BrokerProperties.PROPERTY_STATUS_UPDATES, "true")); + MessageLogger messageLogger = new Log4jMessageLogger(statusUpdatesEnabled); + _eventLogger.setMessageLogger(messageLogger); + // Additionally, report BRK-1006 and BRK-1007 into log4j appenders + if(!options.isSkipLoggingConfiguration()) + { + _eventLogger.message(BrokerMessages.LOG_CONFIG(new File(options.getLogConfigFileLocation()).getAbsolutePath())); + } + + _eventLogger.message(BrokerMessages.CONFIG(storeLocation)); PluggableFactoryLoader<SystemConfigFactory> configFactoryLoader = new PluggableFactoryLoader<>(SystemConfigFactory.class); SystemConfigFactory configFactory = configFactoryLoader.get(storeType); @@ -169,21 +187,17 @@ public class Broker implements BrokerShu LogRecorder logRecorder = new LogRecorder(); _taskExecutor.start(); - SystemConfig systemConfig = configFactory.newInstance(_taskExecutor, _eventLogger, logRecorder, options, this); - systemConfig.open(); - DurableConfigurationStore store = systemConfig.getConfigurationStore(); - - _applicationRegistry = new ApplicationRegistry(store, systemConfig); + _systemConfig = configFactory.newInstance(_taskExecutor, _eventLogger, logRecorder, options.convertToSystemConfigAttributes(), this); try { - _applicationRegistry.initialise(options); + _systemConfig.open(); } - catch(Exception e) + catch(RuntimeException e) { LOGGER.fatal("Exception during startup", e); try { - _applicationRegistry.close(); + _systemConfig.close(); } catch(Exception ce) { @@ -194,12 +208,15 @@ public class Broker implements BrokerShu } - private void configureLogging(File logConfigFile, int logWatchTime) throws InitException, IOException + private void configureLogging(File logConfigFile, int logWatchTime, boolean startupLoggedToSystemOutput) throws InitException, IOException { _configuringOwnLogging = true; if (logConfigFile.exists() && logConfigFile.canRead()) { - _eventLogger.message(BrokerMessages.LOG_CONFIG(logConfigFile.getAbsolutePath())); + if (startupLoggedToSystemOutput) + { + _eventLogger.message(BrokerMessages.LOG_CONFIG(logConfigFile.getAbsolutePath())); + } if (logWatchTime > 0) { @@ -297,15 +314,6 @@ public class Broker implements BrokerShu } } - public org.apache.qpid.server.model.Broker getBroker() - { - if (_applicationRegistry == null) - { - return null; - } - return _applicationRegistry.getBroker(); - } - private class ShutdownService implements Runnable { public void run() Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/BrokerOptions.java Tue Jan 27 15:00:13 2015 @@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentMa import org.apache.qpid.server.configuration.BrokerProperties; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.SystemConfig; import org.apache.qpid.server.util.StringUtil; public class BrokerOptions @@ -79,13 +80,23 @@ public class BrokerOptions private boolean _overwriteConfigurationStore; private Map<String, String> _configProperties = new HashMap<String,String>(); private String _initialSystemProperties; + private boolean _startupLoggedToSystemOut = true; - public Map<String, Object> convertToSystemAttributes() + public Map<String, Object> convertToSystemConfigAttributes() { Map<String,Object> attributes = new HashMap<String, Object>(); attributes.put("storePath", getConfigurationStoreLocation()); attributes.put(ConfiguredObject.CONTEXT, getConfigProperties()); + + attributes.put(SystemConfig.MANAGEMENT_MODE, _managementMode); + attributes.put(SystemConfig.MANAGEMENT_MODE_QUIESCE_VIRTUAL_HOSTS, _managementModeQuiesceVhosts); + attributes.put(SystemConfig.MANAGEMENT_MODE_RMI_PORT_OVERRIDE, _managementModeRmiPortOverride); + attributes.put(SystemConfig.MANAGEMENT_MODE_JMX_PORT_OVERRIDE, _managementModeJmxPortOverride); + attributes.put(SystemConfig.MANAGEMENT_MODE_HTTP_PORT_OVERRIDE, _managementModeHttpPortOverride); + attributes.put(SystemConfig.MANAGEMENT_MODE_PASSWORD, _managementModePassword); + attributes.put(SystemConfig.INITIAL_CONFIGURATION_LOCATION, getInitialConfigurationLocation()); + attributes.put(SystemConfig.STARTUP_LOGGED_TO_SYSTEM_OUT, isStartupLoggedToSystemOut()); return attributes; } @@ -372,4 +383,19 @@ public class BrokerOptions return _configProperties.get(QPID_HOME_DIR); } + /* + * Temporary method for test purposes + */ + public boolean isStartupLoggedToSystemOut() + { + return _startupLoggedToSystemOut; + } + + /* + * Temporary method for test purposes + */ + public void setStartupLoggedToSystemOut(boolean startupLoggedToSystemOut) + { + this._startupLoggedToSystemOut = startupLoggedToSystemOut; + } } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java Tue Jan 27 15:00:13 2015 @@ -30,7 +30,6 @@ import java.util.UUID; import org.apache.log4j.Logger; -import org.apache.qpid.server.BrokerOptions; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; @@ -40,6 +39,7 @@ import org.apache.qpid.server.model.Mode import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Protocol; import org.apache.qpid.server.model.State; +import org.apache.qpid.server.model.SystemConfig; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.adapter.BrokerAdapter; import org.apache.qpid.server.store.ConfiguredObjectRecord; @@ -62,14 +62,14 @@ public class ManagementModeStoreHandler private final DurableConfigurationStore _store; private Map<UUID, ConfiguredObjectRecord> _cliEntries; private Map<UUID, Object> _quiescedEntriesOriginalState; - private final BrokerOptions _options; + private final SystemConfig<?> _systemConfig; private ConfiguredObject<?> _parent; private HashMap<UUID, ConfiguredObjectRecord> _records; public ManagementModeStoreHandler(DurableConfigurationStore store, - BrokerOptions options) + SystemConfig<?> systemConfig) { - _options = options; + _systemConfig = systemConfig; _store = store; } @@ -82,16 +82,16 @@ public class ManagementModeStoreHandler _parent = parent; _store.openConfigurationStore(parent, overwrite, initialRecords); - _quiescedEntriesOriginalState = quiesceEntries(_options); + _quiescedEntriesOriginalState = quiesceEntries(_systemConfig); _records = new HashMap<UUID, ConfiguredObjectRecord>(); final ConfiguredObjectRecordHandler localRecoveryHandler = new ConfiguredObjectRecordHandler() { private int _version; - private boolean _quiesceRmiPort = _options.getManagementModeRmiPortOverride() > 0; - private boolean _quiesceJmxPort = _options.getManagementModeJmxPortOverride() > 0; - private boolean _quiesceHttpPort = _options.getManagementModeHttpPortOverride() > 0; + private boolean _quiesceRmiPort = _systemConfig.getManagementModeRmiPortOverride() > 0; + private boolean _quiesceJmxPort = _systemConfig.getManagementModeJmxPortOverride() > 0; + private boolean _quiesceHttpPort = _systemConfig.getManagementModeHttpPortOverride() > 0; @Override public void begin() @@ -104,7 +104,7 @@ public class ManagementModeStoreHandler String entryType = object.getType(); Map<String, Object> attributes = object.getAttributes(); boolean quiesce = false; - if (VIRTUAL_HOST_TYPE.equals(entryType) && _options.isManagementModeQuiesceVirtualHosts()) + if (VIRTUAL_HOST_TYPE.equals(entryType) && _systemConfig.isManagementModeQuiesceVirtualHosts()) { quiesce = true; } @@ -174,7 +174,7 @@ public class ManagementModeStoreHandler _store.visitConfiguredObjectRecords(localRecoveryHandler); - _cliEntries = createPortsFromCommandLineOptions(_options); + _cliEntries = createPortsFromCommandLineOptions(_systemConfig); for(ConfiguredObjectRecord entry : _cliEntries.values()) { @@ -293,7 +293,7 @@ public class ManagementModeStoreHandler } } - private Map<UUID, ConfiguredObjectRecord> createPortsFromCommandLineOptions(BrokerOptions options) + private Map<UUID, ConfiguredObjectRecord> createPortsFromCommandLineOptions(SystemConfig<?> options) { int managementModeRmiPortOverride = options.getManagementModeRmiPortOverride(); if (managementModeRmiPortOverride < 0) @@ -369,7 +369,7 @@ public class ManagementModeStoreHandler } - private Map<UUID, Object> quiesceEntries(final BrokerOptions options) + private Map<UUID, Object> quiesceEntries(final SystemConfig<?> options) { final Map<UUID, Object> quiescedEntries = new HashMap<UUID, Object>(); final int managementModeRmiPortOverride = options.getManagementModeRmiPortOverride(); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/EventLogger.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/EventLogger.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/EventLogger.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/EventLogger.java Tue Jan 27 15:00:13 2015 @@ -59,4 +59,9 @@ public class EventLogger { _messageLogger = messageLogger; } + + public MessageLogger getMessageLogger() + { + return _messageLogger; + } } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/BrokerMessages.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/BrokerMessages.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/BrokerMessages.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/BrokerMessages.java Tue Jan 27 15:00:13 2015 @@ -54,6 +54,7 @@ public class BrokerMessages public static final String FLOW_TO_DISK_ACTIVE_LOG_HIERARCHY = DEFAULT_LOG_HIERARCHY_PREFIX + "broker.flow_to_disk_active"; public static final String MAX_MEMORY_LOG_HIERARCHY = DEFAULT_LOG_HIERARCHY_PREFIX + "broker.max_memory"; public static final String PLATFORM_LOG_HIERARCHY = DEFAULT_LOG_HIERARCHY_PREFIX + "broker.platform"; + public static final String PROCESS_LOG_HIERARCHY = DEFAULT_LOG_HIERARCHY_PREFIX + "broker.process"; public static final String SHUTTING_DOWN_LOG_HIERARCHY = DEFAULT_LOG_HIERARCHY_PREFIX + "broker.shutting_down"; public static final String MANAGEMENT_MODE_LOG_HIERARCHY = DEFAULT_LOG_HIERARCHY_PREFIX + "broker.management_mode"; public static final String STARTUP_LOG_HIERARCHY = DEFAULT_LOG_HIERARCHY_PREFIX + "broker.startup"; @@ -73,6 +74,7 @@ public class BrokerMessages Logger.getLogger(FLOW_TO_DISK_ACTIVE_LOG_HIERARCHY); Logger.getLogger(MAX_MEMORY_LOG_HIERARCHY); Logger.getLogger(PLATFORM_LOG_HIERARCHY); + Logger.getLogger(PROCESS_LOG_HIERARCHY); Logger.getLogger(SHUTTING_DOWN_LOG_HIERARCHY); Logger.getLogger(MANAGEMENT_MODE_LOG_HIERARCHY); Logger.getLogger(STARTUP_LOG_HIERARCHY); @@ -396,6 +398,38 @@ public class BrokerMessages } }; } + + /** + * Log a Broker message of the Format: + * <pre>BRK-1017 : Process : PID : {0}</pre> + * Optional values are contained in [square brackets] and are numbered + * sequentially in the method call. + * + */ + public static LogMessage PROCESS(String param1) + { + String rawMessage = _messages.getString("PROCESS"); + + final Object[] messageArguments = {param1}; + // Create a new MessageFormat to ensure thread safety. + // Sharing a MessageFormat and using applyPattern is not thread safe + MessageFormat formatter = new MessageFormat(rawMessage, _currentLocale); + + final String message = formatter.format(messageArguments); + + return new LogMessage() + { + public String toString() + { + return message; + } + + public String getLogHierarchy() + { + return PROCESS_LOG_HIERARCHY; + } + }; + } /** * Log a Broker message of the Format: Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Broker_logmessages.properties URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Broker_logmessages.properties?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Broker_logmessages.properties (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Broker_logmessages.properties Tue Jan 27 15:00:13 2015 @@ -54,4 +54,7 @@ MANAGEMENT_MODE = BRK-1012 : Management FLOW_TO_DISK_ACTIVE = BRK-1014 : Message flow to disk active : Message memory use {0,number,#}KB exceeds threshold {1,number,#.##}KB FLOW_TO_DISK_INACTIVE = BRK-1015 : Message flow to disk inactive : Message memory use {0,number,#}KB within threshold {1,number,#.##}KB -FATAL_ERROR = BRK-1016 : Fatal error : {0} : See log file for more information \ No newline at end of file +FATAL_ERROR = BRK-1016 : Fatal error : {0} : See log file for more information + +# 0 - pid +PROCESS = BRK-1017 : Process : PID : {0} \ No newline at end of file Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Tue Jan 27 15:00:13 2015 @@ -556,9 +556,14 @@ public abstract class AbstractConfigured { } + protected boolean rethrowRuntimeExceptionsOnOpen() + { + return false; + } + protected final void handleExceptionOnOpen(RuntimeException e) { - if (e instanceof ServerScopedRuntimeException) + if (rethrowRuntimeExceptionsOnOpen() || e instanceof ServerScopedRuntimeException) { throw e; } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java Tue Jan 27 15:00:13 2015 @@ -31,16 +31,21 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.apache.qpid.server.BrokerOptions; +import org.apache.qpid.common.QpidProperties; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.configuration.store.ManagementModeStoreHandler; import org.apache.qpid.server.configuration.updater.TaskExecutor; +import org.apache.qpid.server.logging.CompositeStartupMessageLogger; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; +import org.apache.qpid.server.logging.MessageLogger; +import org.apache.qpid.server.logging.SystemOutMessageLogger; import org.apache.qpid.server.logging.messages.BrokerMessages; +import org.apache.qpid.server.store.BrokerStoreUpgraderAndRecoverer; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.ConfiguredObjectRecordConverter; import org.apache.qpid.server.store.DurableConfigurationStore; +import org.apache.qpid.util.SystemUtils; public abstract class AbstractSystemConfig<X extends SystemConfig<X>> extends AbstractConfiguredObject<X> implements SystemConfig<X> @@ -48,24 +53,47 @@ public abstract class AbstractSystemConf private static final UUID SYSTEM_ID = new UUID(0l, 0l); private final EventLogger _eventLogger; private final LogRecorder _logRecorder; - private final BrokerOptions _brokerOptions; private final BrokerShutdownProvider _brokerShutdownProvider; private DurableConfigurationStore _configurationStore; + @ManagedAttributeField + private boolean _managementMode; + + @ManagedAttributeField + private int _managementModeRmiPortOverride; + + @ManagedAttributeField + private int _managementModeJmxPortOverride; + + @ManagedAttributeField + private int _managementModeHttpPortOverride; + + @ManagedAttributeField + private boolean _managementModeQuiesceVirtualHosts; + + @ManagedAttributeField + private String _managementModePassword; + + @ManagedAttributeField + private String _initialConfigurationLocation; + + @ManagedAttributeField + private boolean _startupLoggedToSystemOut; + + public AbstractSystemConfig(final TaskExecutor taskExecutor, final EventLogger eventLogger, final LogRecorder logRecorder, - final BrokerOptions brokerOptions, + final Map<String,Object> attributes, final BrokerShutdownProvider brokerShutdownProvider) { super(parentsMap(), - updateAttributes(brokerOptions.convertToSystemAttributes()), + updateAttributes(attributes), taskExecutor, BrokerModel.getInstance()); _eventLogger = eventLogger; getTaskExecutor().start(); _logRecorder = logRecorder; - _brokerOptions = brokerOptions; _brokerShutdownProvider = brokerShutdownProvider; } @@ -84,12 +112,6 @@ public abstract class AbstractSystemConf } @Override - public State getState() - { - return State.ACTIVE; - } - - @Override public EventLogger getEventLogger() { return _eventLogger; @@ -101,12 +123,6 @@ public abstract class AbstractSystemConf } @Override - public BrokerOptions getBrokerOptions() - { - return _brokerOptions; - } - - @Override protected void onClose() { try @@ -155,17 +171,17 @@ public abstract class AbstractSystemConf super.onOpen(); _configurationStore = createStoreObject(); - if (_brokerOptions.isManagementMode()) + if (isManagementMode()) { - _configurationStore = new ManagementModeStoreHandler(_configurationStore, _brokerOptions); + _configurationStore = new ManagementModeStoreHandler(_configurationStore, this); } try { _configurationStore.openConfigurationStore(this, - false, - convertToConfigurationRecords(_brokerOptions.getInitialConfigurationLocation(), - this)); + false, + convertToConfigurationRecords(getInitialConfigurationLocation(), + this)); _configurationStore.upgradeStoreStructure(); } catch (IOException e) @@ -173,6 +189,66 @@ public abstract class AbstractSystemConf throw new IllegalArgumentException(e); } + + + } + + @StateTransition(currentState = State.UNINITIALIZED, desiredState = State.ACTIVE) + protected void activate() + { + final EventLogger eventLogger = _eventLogger; + + EventLogger startupLogger; + if (isStartupLoggedToSystemOut()) + { + //Create the composite (logging+SystemOut MessageLogger to be used during startup + MessageLogger[] messageLoggers = {new SystemOutMessageLogger(), eventLogger.getMessageLogger()}; + + CompositeStartupMessageLogger startupMessageLogger = new CompositeStartupMessageLogger(messageLoggers); + startupLogger = new EventLogger(startupMessageLogger); + } + else + { + startupLogger = eventLogger; + } + + startupLogger.message(BrokerMessages.STARTUP(QpidProperties.getReleaseVersion(), + QpidProperties.getBuildVersion())); + + startupLogger.message(BrokerMessages.PLATFORM(System.getProperty("java.vendor"), + System.getProperty("java.runtime.version", + System.getProperty("java.version")), + SystemUtils.getOSName(), + SystemUtils.getOSVersion(), + SystemUtils.getOSArch())); + + startupLogger.message(BrokerMessages.MAX_MEMORY(Runtime.getRuntime().maxMemory())); + + if (SystemUtils.getProcessPid() != null) + { + startupLogger.message(BrokerMessages.PROCESS(SystemUtils.getProcessPid())); + } + + BrokerStoreUpgraderAndRecoverer upgrader = new BrokerStoreUpgraderAndRecoverer(this); + upgrader.perform(); + + Broker broker = getBroker(); + + broker.setEventLogger(startupLogger); + broker.open(); + + if (broker.getState() == State.ACTIVE) + { + startupLogger.message(BrokerMessages.READY()); + broker.setEventLogger(eventLogger); + } + + } + + @Override + protected final boolean rethrowRuntimeExceptionsOnOpen() + { + return true; } abstract protected DurableConfigurationStore createStoreObject(); @@ -216,8 +292,56 @@ public abstract class AbstractSystemConf } @Override + public boolean isManagementMode() + { + return _managementMode; + } + + @Override + public int getManagementModeRmiPortOverride() + { + return _managementModeRmiPortOverride; + } + + @Override + public int getManagementModeJmxPortOverride() + { + return _managementModeJmxPortOverride; + } + + @Override + public int getManagementModeHttpPortOverride() + { + return _managementModeHttpPortOverride; + } + + @Override + public boolean isManagementModeQuiesceVirtualHosts() + { + return _managementModeQuiesceVirtualHosts; + } + + @Override + public String getManagementModePassword() + { + return _managementModePassword; + } + + @Override + public String getInitialConfigurationLocation() + { + return _initialConfigurationLocation; + } + + @Override public BrokerShutdownProvider getBrokerShutdownProvider() { return _brokerShutdownProvider; } + + @Override + public boolean isStartupLoggedToSystemOut() + { + return _startupLoggedToSystemOut; + } } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java Tue Jan 27 15:00:13 2015 @@ -40,10 +40,6 @@ public interface Broker<X extends Broker String PLATFORM = "platform"; String PROCESS_PID = "processPid"; String PRODUCT_VERSION = "productVersion"; - String SUPPORTED_VIRTUALHOST_TYPES = "supportedVirtualHostTypes"; - String SUPPORTED_VIRTUALHOSTNODE_TYPES = "supportedVirtualHostNodeTypes"; - String SUPPORTED_AUTHENTICATION_PROVIDERS = "supportedAuthenticationProviders"; - String SUPPORTED_PREFERENCES_PROVIDER_TYPES = "supportedPreferencesProviderTypes"; String DEFAULT_VIRTUAL_HOST = "defaultVirtualHost"; String STATISTICS_REPORTING_PERIOD = "statisticsReportingPeriod"; String STATISTICS_REPORTING_RESET_ENABLED = "statisticsReportingResetEnabled"; @@ -110,18 +106,6 @@ public interface Broker<X extends Broker @DerivedAttribute String getProductVersion(); - @DerivedAttribute - Collection<String> getSupportedVirtualHostNodeTypes(); - - @DerivedAttribute - Collection<String> getSupportedAuthenticationProviders(); - - @DerivedAttribute - Collection<String> getSupportedPreferencesProviderTypes(); - - @DerivedAttribute - Collection<String> getSupportedVirtualHostTypes(); - @ManagedAttribute String getDefaultVirtualHost(); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java Tue Jan 27 15:00:13 2015 @@ -42,6 +42,9 @@ public final class BrokerModel extends M * 1.3 Truststore/Keystore type => trustStoreType / type => keyStoreType * 1.4 Separate messageStoreSettings from virtualhost * 2.0 Introduce VirtualHostNode as a child of a Broker instead of VirtualHost + * 2.1 Add VH aliases; + * Remove Broker#supportedVirtualHostNodeTypes, #supportedVirtualHostTypes, #supportedAuthenticationProviders, + * supportedPreferencesProviderTypes, VH#supportedExchangeTypes, VH#supportedQueueTypes */ public static final int MODEL_MAJOR_VERSION = 2; public static final int MODEL_MINOR_VERSION = 1; @@ -87,7 +90,6 @@ public final class BrokerModel extends M addRelationship(AuthenticationProvider.class, User.class); addRelationship(AuthenticationProvider.class, PreferencesProvider.class); - addRelationship(User.class, GroupMember.class); addRelationship(GroupProvider.class, Group.class); addRelationship(Group.class, GroupMember.class); Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java Tue Jan 27 15:00:13 2015 @@ -21,8 +21,11 @@ package org.apache.qpid.server.model; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.util.AbstractCollection; import java.util.Arrays; import java.util.Collection; @@ -176,6 +179,9 @@ public class ConfiguredObjectTypeRegistr private final Map<Class<? extends ConfiguredObject>,Set<Class<? extends ManagedInterface>>> _allManagedInterfaces = Collections.synchronizedMap(new HashMap<Class<? extends ConfiguredObject>, Set<Class<? extends ManagedInterface>>>()); + private final Map<Class<? extends ConfiguredObject>, Map<String, Collection<String>>> _validChildTypes = + Collections.synchronizedMap(new HashMap<Class<? extends ConfiguredObject>, Map<String, Collection<String>>>()); + public ConfiguredObjectTypeRegistry(Iterable<ConfiguredObjectRegistration> configuredObjectRegistrations, Collection<Class<? extends ConfiguredObject>> categoriesRestriction) { @@ -265,6 +271,96 @@ public class ConfiguredObjectTypeRegistr } } + + for(Class<? extends ConfiguredObject> type : types) + { + final ManagedObject annotation = type.getAnnotation(ManagedObject.class); + String validChildren = annotation.validChildTypes(); + if(!"".equals(validChildren)) + { + Method validChildTypesMethod = getValidChildTypesFunction(validChildren, type); + if(validChildTypesMethod != null) + { + try + { + _validChildTypes.put(type, (Map<String, Collection<String>>) validChildTypesMethod.invoke(null)); + } + catch (IllegalAccessException | InvocationTargetException e) + { + throw new IllegalArgumentException("Exception while evaluating valid child types for " + type.getName(), e); + } + } + + } + } + } + + private static Method getValidChildTypesFunction(final String validValue, final Class<? extends ConfiguredObject> clazz) + { + if (validValue.matches("([\\w][\\w\\d_]+\\.)+[\\w][\\w\\d_\\$]*#[\\w\\d_]+\\s*\\(\\s*\\)")) + { + String function = validValue; + try + { + String className = function.split("#")[0].trim(); + String methodName = function.split("#")[1].split("\\(")[0].trim(); + Class<?> validValueCalculatingClass = Class.forName(className); + Method method = validValueCalculatingClass.getMethod(methodName); + if (Modifier.isStatic(method.getModifiers()) && Modifier.isPublic(method.getModifiers())) + { + if (Map.class.isAssignableFrom(method.getReturnType())) + { + if (method.getGenericReturnType() instanceof ParameterizedType) + { + Type keyType = + ((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments()[0]; + if (keyType == String.class) + { + Type valueType = + ((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments()[1]; + if (valueType instanceof ParameterizedType) + { + ParameterizedType paramType = (ParameterizedType) valueType; + final Type rawType = paramType.getRawType(); + final Type[] args = paramType.getActualTypeArguments(); + if (Collection.class.isAssignableFrom((Class<?>) rawType) + && args.length == 1 + && args[0] == String.class) + { + return method; + } + } + } + } + } + } + + + throw new IllegalArgumentException("The validChildTypes of the class " + + clazz.getSimpleName() + + " has value '" + + validValue + + "' but the method does not meet the requirements - is it public and static"); + + } + catch (ClassNotFoundException | NoSuchMethodException e) + { + throw new IllegalArgumentException("The validChildTypes of the class " + + clazz.getSimpleName() + + " has value '" + + validValue + + "' which looks like it should be a method," + + " but no such method could be used.", e); + } + } + else + { + throw new IllegalArgumentException("The validChildTypes of the class " + + clazz.getSimpleName() + + " has value '" + + validValue + + "' which does not match the required <package>.<class>#<method>() format."); + } } public static Class<? extends ConfiguredObject> getCategory(final Class<?> clazz) @@ -907,4 +1003,18 @@ public class ConfiguredObjectTypeRegistr } } + public Collection<String> getValidChildTypes(Class<? extends ConfiguredObject> type, Class<? extends ConfiguredObject> childType) + { + final Map<String, Collection<String>> allValidChildTypes = _validChildTypes.get(getTypeClass(type)); + if(allValidChildTypes != null) + { + final Collection<String> validTypesForSpecificChild = allValidChildTypes.get(getCategory(childType).getSimpleName()); + return validTypesForSpecificChild == null ? null : Collections.unmodifiableCollection(validTypesForSpecificChild); + } + else + { + return null; + } + } + } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java Tue Jan 27 15:00:13 2015 @@ -19,7 +19,11 @@ */ package org.apache.qpid.server.model; -@ManagedObject +import org.apache.qpid.server.security.group.GroupImpl; +import org.apache.qpid.server.security.group.GroupPrincipal; + +@ManagedObject( defaultType = GroupImpl.CONFIG_TYPE ) public interface Group<X extends Group<X>> extends ConfiguredObject<X> { + GroupPrincipal getGroupPrincipal(); } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java Tue Jan 27 15:00:13 2015 @@ -19,7 +19,12 @@ */ package org.apache.qpid.server.model; -@ManagedObject +import java.security.Principal; + +import org.apache.qpid.server.security.group.GroupMemberImpl; + +@ManagedObject( defaultType = GroupMemberImpl.CONFIG_TYPE ) public interface GroupMember<X extends GroupMember<X>> extends ConfiguredObject<X> { + Principal getPrincipal(); } Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java Tue Jan 27 15:00:13 2015 @@ -20,7 +20,8 @@ */ package org.apache.qpid.server.model; -import org.apache.qpid.server.BrokerOptions; +import java.util.Map; + import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; @@ -38,10 +39,10 @@ public class JsonSystemConfigImpl extend public JsonSystemConfigImpl(final TaskExecutor taskExecutor, final EventLogger eventLogger, final LogRecorder logRecorder, - final BrokerOptions brokerOptions, + final Map<String,Object> attributes, final BrokerShutdownProvider brokerShutdownProvider) { - super(taskExecutor, eventLogger, logRecorder, brokerOptions, brokerShutdownProvider); + super(taskExecutor, eventLogger, logRecorder, attributes, brokerShutdownProvider); } public String getStorePath() Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java?rev=1655057&r1=1655056&r2=1655057&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java Tue Jan 27 15:00:13 2015 @@ -35,5 +35,6 @@ public @interface ManagedObject boolean creatable() default true; String defaultType() default ""; // in this case the class/interface itself is to be used String type() default ""; + String validChildTypes() default ""; boolean register() default true; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
