You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/10/21 10:40:25 UTC
svn commit: r1765986 - in /qpid/java/branches/transfer-queue: ./
bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/
broker-core/src/main/java/org/apache/qpid/server/exchange/
broker-core/src/main/java/org/apache/qpid/server/message/ broker...
Author: rgodfrey
Date: Fri Oct 21 10:40:24 2016
New Revision: 1765986
URL: http://svn.apache.org/viewvc?rev=1765986&view=rev
Log:
merge up to r1764308 from trunk
Added:
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java (props changed)
- copied unchanged from r1765983, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java (props changed)
- copied unchanged from r1765983, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java
Modified:
qpid/java/branches/transfer-queue/ (props changed)
qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractUnresolvedObject.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/OutboundTransferDestination.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueImpl.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AggregateTicker.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/SelectorThread.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/TransactionTimeoutTicker.java
qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/transport/TransactionTimeoutTickerTest.java
qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/LegacyAccessControlAdapter.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java
qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java
qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/transport/Connection.java
qpid/java/branches/transfer-queue/systests/src/test/java/org/apache/qpid/server/security/acl/ExternalACLTest.java
Propchange: qpid/java/branches/transfer-queue/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 21 10:40:24 2016
@@ -9,5 +9,5 @@
/qpid/branches/java-broker-vhost-refactor/java:1493674-1494547
/qpid/branches/java-network-refactor/qpid/java:805429-821809
/qpid/branches/qpid-2935/qpid/java:1061302-1072333
-/qpid/java/trunk:1763546-1763765
+/qpid/java/trunk:1763546-1764308
/qpid/trunk/qpid:796646-796653
Modified: qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java (original)
+++ qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java Fri Oct 21 10:40:24 2016
@@ -1348,6 +1348,7 @@ public abstract class AbstractBDBMessage
private void doPostCommitActions()
{
+ // QPID-7447: prevent unnecessary allocation of empty iterator
if (!_postCommitActions.isEmpty())
{
for (Runnable action : _postCommitActions)
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java Fri Oct 21 10:40:24 2016
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.exchange;
+import java.security.AccessControlException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -59,12 +60,14 @@ import org.apache.qpid.server.model.Conf
import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.NamedAddressSpace;
import org.apache.qpid.server.model.Publisher;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.StateTransition;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.queue.BaseQueue;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.store.MessageEnqueueRecord;
import org.apache.qpid.server.store.StorableMessageMetaData;
@@ -943,5 +946,16 @@ public abstract class AbstractExchange<T
return binding;
}
+ @Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return _virtualHost;
+ }
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+ authorise(token, Operation.ACTION("publish"), arguments);
+ }
}
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java Fri Oct 21 10:40:24 2016
@@ -18,25 +18,70 @@
*/
package org.apache.qpid.server.exchange;
+import java.security.AccessControlException;
+import java.util.Map;
+
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.server.message.BaseMessageInstance;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Exchange;
+import org.apache.qpid.server.model.NamedAddressSpace;
+import org.apache.qpid.server.model.PermissionedObject;
import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.security.AccessControl;
+import org.apache.qpid.server.security.Result;
+import org.apache.qpid.server.security.SecurityToken;
+import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.Action;
-public class DefaultDestination implements MessageDestination
+public class DefaultDestination implements MessageDestination, PermissionedObject
{
+ private final AccessControl _accessControl;
private VirtualHost<?> _virtualHost;
- public DefaultDestination(VirtualHost<?> virtualHost)
+ public DefaultDestination(VirtualHost<?> virtualHost, final AccessControl accessControl)
{
_virtualHost = virtualHost;
+ _accessControl = accessControl;
+ }
+
+ @Override
+ public Class<? extends ConfiguredObject> getCategoryClass()
+ {
+ return Exchange.class;
+ }
+
+ @Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return _virtualHost;
+ }
+
+
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+
+ if(_accessControl != null)
+ {
+ Result result = _accessControl.authorise(token, Operation.ACTION("publish"), this, arguments);
+ if (result == Result.DEFER)
+ {
+ result = _accessControl.getDefault();
+ }
+
+ if (result == Result.DENIED)
+ {
+ throw new AccessControlException("Access denied to publish to default exchange with arguments: " + arguments);
+ }
+ }
}
@Override
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java Fri Oct 21 10:40:24 2016
@@ -20,6 +20,11 @@
*/
package org.apache.qpid.server.message;
+import java.security.AccessControlException;
+import java.util.Map;
+
+import org.apache.qpid.server.model.NamedAddressSpace;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.Action;
@@ -27,7 +32,11 @@ import org.apache.qpid.server.util.Actio
public interface MessageDestination extends MessageNode
{
- public String getName();
+ String getName();
+
+ NamedAddressSpace getAddressSpace();
+
+ void authorisePublish(SecurityToken token, Map<String, Object> arguments) throws AccessControlException;
/**
* Routes a message
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractUnresolvedObject.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractUnresolvedObject.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractUnresolvedObject.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractUnresolvedObject.java Fri Oct 21 10:40:24 2016
@@ -169,13 +169,15 @@ public abstract class AbstractUnresolved
}
else if(attrValue instanceof String)
{
+ String interpolatedValue = AbstractConfiguredObject.interpolate(_parents[0], (String) attrValue);
+
try
{
- _unresolvedObjects.add(new IdDependency(clazz, attributeName, UUID.fromString((String) attrValue)));
+ _unresolvedObjects.add(new IdDependency(clazz, attributeName, UUID.fromString(interpolatedValue)));
}
catch(IllegalArgumentException e)
{
- _unresolvedObjects.add(new NameDependency(clazz, attributeName, (String) attrValue));
+ _unresolvedObjects.add(new NameDependency(clazz, attributeName, interpolatedValue));
}
}
else if(!clazz.isInstance(attrValue))
Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Oct 21 10:40:24 2016
@@ -0,0 +1,12 @@
+/qpid/branches/0.5.x-dev/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:886720-886722
+/qpid/branches/0.5.x-dev/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:886720-886722,887145,892761,894875,916304,916325,930288,931179
+/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:1628068-1632579
+/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:1643238-1666219
+/qpid/branches/java-broker-0-10/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:795950-829653
+/qpid/branches/java-broker-amqp-1-0-management/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:1562456-1569102
+/qpid/branches/java-broker-bdb-ha2/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:1576683-1583556
+/qpid/branches/java-broker-config-store-changes/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:1584338-1584926
+/qpid/branches/java-broker-vhost-refactor/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:1493674-1494547
+/qpid/branches/java-network-refactor/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:805429-821809
+/qpid/branches/qpid-2935/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:1061302-1072333
+/qpid/trunk/qpid/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java:796646-796653
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java Fri Oct 21 10:40:24 2016
@@ -104,13 +104,23 @@ public interface Queue<X extends Queue<X
+ "\"image/tiff\":\".tiff\","
+ "\"text/plain\":\".txt\"}";
+ @ManagedContextDefault( name = "queue.defaultExclusivityPolicy",
+ description = "the ExclusivityPolicy to apply to queues where none is explicitly set")
+ String DEFAULT_EXCLUSIVITY = "NONE";
+
@ManagedAttribute
Exchange getAlternateExchange();
- @ManagedAttribute( defaultValue = "NONE" )
+ @ManagedAttribute( defaultValue = "${queue.defaultExclusivityPolicy}")
ExclusivityPolicy getExclusive();
- @ManagedAttribute( defaultValue = "false" )
+ @ManagedContextDefault( name = "queue.defaultEnsureNonDestructiveConsumers",
+ description = "the value to use for the ensureNondestructiveCnsumers attribute of a queue where "
+ + "none is explicitly set")
+ String DEFAULT_ENSURE_NON_DESTRUCTIVE_CONSUMERS = "false";
+
+
+ @ManagedAttribute( defaultValue = "${queue.defaultEnsureNonDestructiveConsumers}" )
boolean isEnsureNondestructiveConsumers();
@DerivedAttribute( persist = true )
@@ -192,7 +202,14 @@ public interface Queue<X extends Queue<X
@ManagedAttribute( defaultValue = "${queue.alertRepeatGap}")
long getAlertRepeatGap();
- @ManagedAttribute( defaultValue = "DEFAULT" )
+ @ManagedContextDefault( name = "queue.defaultMessageDurability",
+ description = "the value to use for the messageDurability attribute of a queue where "
+ + "none is explicitly set")
+ String DEFAULT_MESSAGE_DURABILTY = "DEFAULT";
+
+
+
+ @ManagedAttribute( defaultValue = "${queue.defaultMessageDurability}" )
MessageDurability getMessageDurability();
@ManagedAttribute
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java Fri Oct 21 10:40:24 2016
@@ -216,20 +216,20 @@ public final class SessionAdapter extend
final VirtualHost virtualhost = (VirtualHost) addressSpace;
final List<Ticker> tickers = new ArrayList<>(4);
- final Supplier<Date> transactionStartTimeSupplier = new Supplier<Date>()
+ final Supplier<Long> transactionStartTimeSupplier = new Supplier<Long>()
{
@Override
- public Date get()
+ public Long get()
{
- return SessionAdapter.this.getTransactionStartTime();
+ return SessionAdapter.this._session.getTransactionStartTime();
}
};
- final Supplier<Date> transactionUpdateTimeSupplier = new Supplier<Date>()
+ final Supplier<Long> transactionUpdateTimeSupplier = new Supplier<Long>()
{
@Override
- public Date get()
+ public Long get()
{
- return SessionAdapter.this.getTransactionUpdateTime();
+ return SessionAdapter.this._session.getTransactionUpdateTime();
}
};
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java Fri Oct 21 10:40:24 2016
@@ -98,6 +98,7 @@ import org.apache.qpid.server.plugin.Mes
import org.apache.qpid.server.plugin.QpidServiceLoader;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.protocol.MessageConverterRegistry;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
import org.apache.qpid.server.store.MessageDurability;
@@ -3559,6 +3560,20 @@ public abstract class AbstractQueue<X ex
}
}
+ @Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return _virtualHost;
+ }
+
+
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+ authorise(token, Operation.ACTION("publish"), arguments);
+ }
+
private class DeletedChildListener extends AbstractConfigurationChangeListener
{
@Override
Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Oct 21 10:40:24 2016
@@ -0,0 +1,12 @@
+/qpid/branches/0.5.x-dev/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:886720-886722
+/qpid/branches/0.5.x-dev/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:886720-886722,887145,892761,894875,916304,916325,930288,931179
+/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:1628068-1632579
+/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:1643238-1666219
+/qpid/branches/java-broker-0-10/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:795950-829653
+/qpid/branches/java-broker-amqp-1-0-management/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:1562456-1569102
+/qpid/branches/java-broker-bdb-ha2/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:1576683-1583556
+/qpid/branches/java-broker-config-store-changes/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:1584338-1584926
+/qpid/branches/java-broker-vhost-refactor/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:1493674-1494547
+/qpid/branches/java-network-refactor/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:805429-821809
+/qpid/branches/qpid-2935/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:1061302-1072333
+/qpid/trunk/qpid/broker-core/src/main/java/org/apache/qpid/server/security/SubjectFixedResultAccessControl.java:796646-796653
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java Fri Oct 21 10:40:24 2016
@@ -1193,6 +1193,7 @@ public abstract class AbstractJDBCMessag
private void doPostCommitActions()
{
+ // QPID-7447: prevent unnecessary allocation of empty iterator
if (!_postCommitActions.isEmpty())
{
for (Runnable action : _postCommitActions)
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/OutboundTransferDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/OutboundTransferDestination.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/OutboundTransferDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/OutboundTransferDestination.java Fri Oct 21 10:40:24 2016
@@ -20,13 +20,18 @@
*/
package org.apache.qpid.server.transfer;
+import java.security.AccessControlException;
+import java.util.Map;
+
import org.apache.qpid.server.message.BaseMessageInstance;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.NamedAddressSpace;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.store.MessageEnqueueRecord;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -51,6 +56,19 @@ public class OutboundTransferDestination
}
@Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return _virtualHost;
+ }
+
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+
+ }
+
+ @Override
public <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
final String routingAddress,
final InstanceProperties instanceProperties,
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueImpl.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueImpl.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueImpl.java Fri Oct 21 10:40:24 2016
@@ -21,7 +21,9 @@
package org.apache.qpid.server.transfer;
import java.nio.charset.StandardCharsets;
+import java.security.AccessControlException;
import java.util.Collection;
+import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -31,9 +33,11 @@ import org.apache.qpid.server.message.Ba
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.NamedAddressSpace;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.queue.QueueEntry;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.store.MessageDurability;
import org.apache.qpid.server.store.MessageEnqueueRecord;
import org.apache.qpid.server.store.StorableMessageMetaData;
@@ -324,6 +328,19 @@ public class TransferQueueImpl implement
}
@Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return _virtualHost;
+ }
+
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+ // TODO
+ }
+
+ @Override
public <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
final String routingAddress,
final InstanceProperties instanceProperties,
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java Fri Oct 21 10:40:24 2016
@@ -23,7 +23,7 @@ package org.apache.qpid.server.transport
import java.net.SocketAddress;
import java.security.AccessControlContext;
import java.security.Principal;
-import java.util.List;
+import java.util.Collection;
import javax.security.auth.Subject;
@@ -83,11 +83,11 @@ public interface AMQPConnection<C extend
void stopConnection();
/**
- * Returns the a list of session models. Required to return a copy.
+ * Returns the a view of session models. Callers may not modify the returned view Required to return a copy.
*
* @return list of sessions
*/
- List<? extends AMQSessionModel<?>> getSessionModels();
+ Collection<? extends AMQSessionModel<?>> getSessionModels();
void resetStatistics();
}
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AggregateTicker.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AggregateTicker.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AggregateTicker.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AggregateTicker.java Fri Oct 21 10:40:24 2016
@@ -32,6 +32,7 @@ public class AggregateTicker implements
public int getTimeToNextTick(final long currentTime)
{
int nextTick = Integer.MAX_VALUE;
+ // QPID-7447: prevent unnecessary allocation of empty iterator
if (!_tickers.isEmpty())
{
for (Ticker ticker : _tickers)
@@ -46,9 +47,13 @@ public class AggregateTicker implements
public int tick(final long currentTime)
{
int nextTick = Integer.MAX_VALUE;
- for(Ticker ticker : _tickers)
+ // QPID-7447: prevent unnecessary allocation of empty iterator
+ if (!_tickers.isEmpty())
{
- nextTick = Math.min(ticker.tick(currentTime), nextTick);
+ for(Ticker ticker : _tickers)
+ {
+ nextTick = Math.min(ticker.tick(currentTime), nextTick);
+ }
}
return nextTick;
}
@@ -71,6 +76,7 @@ public class AggregateTicker implements
@Override
public void notifySchedulingDelay(final long schedulingDelay)
{
+ // QPID-7447: prevent unnecessary allocation of empty iterator
if (!_tickers.isEmpty())
{
for (Ticker ticker : _tickers)
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/SelectorThread.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/SelectorThread.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/SelectorThread.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/SelectorThread.java Fri Oct 21 10:40:24 2016
@@ -150,7 +150,8 @@ class SelectorThread extends Thread
}
}
- return toBeScheduled;
+ // QPID-7447: prevent unnecessary allocation of empty iterator
+ return toBeScheduled.isEmpty() ? Collections.<SchedulableConnection>emptyList() : toBeScheduled;
}
private List<SchedulableConnection> processSelectionKeys()
@@ -261,7 +262,8 @@ class SelectorThread extends Thread
}
}
- return unregisterableConnections;
+ // QPID-7447: prevent unnecessary allocation of empty iterator
+ return unregisterableConnections.isEmpty() ? Collections.<SchedulableConnection>emptyList() : unregisterableConnections;
}
private void performSelect()
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/TransactionTimeoutTicker.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/TransactionTimeoutTicker.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/TransactionTimeoutTicker.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/TransactionTimeoutTicker.java Fri Oct 21 10:40:24 2016
@@ -21,7 +21,6 @@
package org.apache.qpid.server.transport;
-import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;
import com.google.common.base.Supplier;
@@ -33,7 +32,7 @@ public class TransactionTimeoutTicker im
{
private final long _timeoutValue;
private final Action<Long> _notification;
- private final Supplier<Date> _timeSupplier;
+ private final Supplier<Long> _timeSupplier;
private final long _notificationRepeatPeriod;
private AtomicLong _accumulatedSchedulingDelay = new AtomicLong();
@@ -44,12 +43,12 @@ public class TransactionTimeoutTicker im
public TransactionTimeoutTicker(long timeoutValue,
long notificationRepeatPeriod,
- Supplier<Date> timeStampSupplier,
+ Supplier<Long> timeStampSupplier,
Action<Long> notification)
{
_timeoutValue = timeoutValue;
_notification = notification;
- _lastTransactionTimeStamp = timeStampSupplier.get().getTime();
+ _lastTransactionTimeStamp = timeStampSupplier.get();
_timeSupplier = timeStampSupplier;
_notificationRepeatPeriod = notificationRepeatPeriod;
}
@@ -57,7 +56,7 @@ public class TransactionTimeoutTicker im
@Override
public int getTimeToNextTick(final long currentTime)
{
- final long transactionTimeStamp = _timeSupplier.get().getTime();
+ final long transactionTimeStamp = _timeSupplier.get();
int tick = calculateTimeToNextTick(currentTime, transactionTimeStamp);
if (tick <= 0 && _nextNotificationTime > currentTime)
{
@@ -69,7 +68,7 @@ public class TransactionTimeoutTicker im
@Override
public int tick(final long currentTime)
{
- final long transactionTimeStamp = _timeSupplier.get().getTime();
+ final long transactionTimeStamp = _timeSupplier.get();
int tick = calculateTimeToNextTick(currentTime, transactionTimeStamp);
if (tick <= 0)
{
Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Fri Oct 21 10:40:24 2016
@@ -286,7 +286,6 @@ public abstract class AbstractVirtualHos
_eventLogger.message(VirtualHostMessages.CREATED(getName()));
- _defaultDestination = new DefaultDestination(this);
_messagesDelivered = new StatisticsCounter("messages-delivered-" + getName());
_dataDelivered = new StatisticsCounter("bytes-delivered-" + getName());
@@ -305,6 +304,9 @@ public abstract class AbstractVirtualHos
);
}
+ _defaultDestination = new DefaultDestination(this, _accessControl);
+
+
_housekeepingJobContext = getSystemTaskControllerContext("Housekeeping["+getName()+"]", _principal);
_fileSystemSpaceCheckerJobContext = getSystemTaskControllerContext("FileSystemSpaceChecker["+getName()+"]", _principal);
Modified: qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/transport/TransactionTimeoutTickerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/transport/TransactionTimeoutTickerTest.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/transport/TransactionTimeoutTickerTest.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/transport/TransactionTimeoutTickerTest.java Fri Oct 21 10:40:24 2016
@@ -29,8 +29,6 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import java.util.Date;
-
import com.google.common.base.Supplier;
import org.mockito.InOrder;
@@ -41,7 +39,7 @@ public class TransactionTimeoutTickerTes
{
private TransactionTimeoutTicker _ticker;
- private Supplier<Date> _dateSupplier = mock(Supplier.class);
+ private Supplier<Long> _dateSupplier = mock(Supplier.class);
private Action<Long> _notificationAction = mock(Action.class);
private long _timeoutValue = 100;
private long _notificationRepeatPeriod = 5000;
@@ -50,7 +48,7 @@ public class TransactionTimeoutTickerTes
{
final long timeNow = System.currentTimeMillis();
- when(_dateSupplier.get()).thenReturn(new Date(0));
+ when(_dateSupplier.get()).thenReturn(0L);
_ticker = new TransactionTimeoutTicker(_timeoutValue, _notificationRepeatPeriod,
_dateSupplier,
@@ -68,7 +66,7 @@ public class TransactionTimeoutTickerTes
final long timeNow = System.currentTimeMillis();
final long transactionTime = timeNow - 90;
- when(_dateSupplier.get()).thenReturn(new Date(transactionTime));
+ when(_dateSupplier.get()).thenReturn(transactionTime);
_ticker = new TransactionTimeoutTicker(_timeoutValue, _notificationRepeatPeriod,
_dateSupplier,
@@ -87,7 +85,7 @@ public class TransactionTimeoutTickerTes
final long timeNow = System.currentTimeMillis();
final long transactionTime = timeNow - 90;
- when(_dateSupplier.get()).thenReturn(new Date(transactionTime));
+ when(_dateSupplier.get()).thenReturn(transactionTime);
_ticker = new TransactionTimeoutTicker(_timeoutValue, _notificationRepeatPeriod,
_dateSupplier,
@@ -109,7 +107,7 @@ public class TransactionTimeoutTickerTes
final long firstTransactionTime = timeNow - 10;
// First transaction
- when(_dateSupplier.get()).thenReturn(new Date(firstTransactionTime));
+ when(_dateSupplier.get()).thenReturn(firstTransactionTime);
_ticker = new TransactionTimeoutTicker(_timeoutValue, _notificationRepeatPeriod,
_dateSupplier,
@@ -124,7 +122,7 @@ public class TransactionTimeoutTickerTes
timeNow += 100;
final long secondTransactionTime = timeNow - 5;
- when(_dateSupplier.get()).thenReturn(new Date(secondTransactionTime));
+ when(_dateSupplier.get()).thenReturn(secondTransactionTime);
final int expectedTickForSecondTransaction = 95;
assertTickTime("Unexpected ticker value for second transaction",
@@ -140,7 +138,7 @@ public class TransactionTimeoutTickerTes
final long firstTransactionTime = timeNow - 10;
// First transaction
- when(_dateSupplier.get()).thenReturn(new Date(firstTransactionTime));
+ when(_dateSupplier.get()).thenReturn(firstTransactionTime);
_ticker = new TransactionTimeoutTicker(_timeoutValue, _notificationRepeatPeriod,
_dateSupplier,
@@ -156,7 +154,7 @@ public class TransactionTimeoutTickerTes
timeNow += 100;
final long secondTransactionTime = timeNow - 5;
- when(_dateSupplier.get()).thenReturn(new Date(secondTransactionTime));
+ when(_dateSupplier.get()).thenReturn(secondTransactionTime);
final int expectedTickForSecondTransaction = 95;
assertTickTime("Unexpected ticker value for second transaction",
@@ -171,7 +169,7 @@ public class TransactionTimeoutTickerTes
long timeNow = System.currentTimeMillis();
final long transactionTime = timeNow - 110;
- when(_dateSupplier.get()).thenReturn(new Date(transactionTime));
+ when(_dateSupplier.get()).thenReturn(transactionTime);
_ticker = new TransactionTimeoutTicker(_timeoutValue, _notificationRepeatPeriod,
_dateSupplier,
@@ -192,7 +190,7 @@ public class TransactionTimeoutTickerTes
long timeNow = System.currentTimeMillis();
final long transactionTime = timeNow - 110;
- when(_dateSupplier.get()).thenReturn(new Date(transactionTime));
+ when(_dateSupplier.get()).thenReturn(transactionTime);
_ticker = new TransactionTimeoutTicker(_timeoutValue, _notificationRepeatPeriod,
_dateSupplier,
Modified: qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/LegacyAccessControlAdapter.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/LegacyAccessControlAdapter.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/LegacyAccessControlAdapter.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/LegacyAccessControlAdapter.java Fri Oct 21 10:40:24 2016
@@ -35,6 +35,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.model.*;
import org.apache.qpid.server.queue.QueueConsumer;
import org.apache.qpid.server.security.Result;
@@ -341,12 +342,12 @@ class LegacyAccessControlAdapter
Class<? extends ConfiguredObject> categoryClass = configuredObject.getCategoryClass();
if(categoryClass == Exchange.class)
{
- Exchange exchange = (Exchange) configuredObject;
+ MessageDestination exchange = (MessageDestination) configuredObject;
if("publish".equals(actionName))
{
final ObjectProperties _props =
- new ObjectProperties(exchange.getParent(VirtualHost.class).getName(), exchange.getName(), (String)arguments.get("routingKey"), (Boolean)arguments.get("immediate"));
+ new ObjectProperties(exchange.getAddressSpace().getName(), exchange.getName(), (String)arguments.get("routingKey"), (Boolean)arguments.get("immediate"));
return _accessControl.authorise(PUBLISH, EXCHANGE, _props);
}
}
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java Fri Oct 21 10:40:24 2016
@@ -24,9 +24,9 @@ import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
-import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
@@ -313,7 +313,7 @@ public class AMQPConnection_0_10 extends
return _connection.getRemoteContainerName();
}
- public List<ServerSession> getSessionModels()
+ public Collection<? extends AMQSessionModel<?>> getSessionModels()
{
return _connection.getSessionModels();
}
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java Fri Oct 21 10:40:24 2016
@@ -28,6 +28,8 @@ import java.security.AccessController;
import java.security.Principal;
import java.security.PrivilegedAction;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
@@ -335,16 +337,16 @@ public class ServerConnection extends Co
super.removeSession(ssn);
}
- public List<ServerSession> getSessionModels()
+ public Collection<? extends ServerSession> getSessionModels()
{
- List<ServerSession> sessions = new ArrayList<>();
- for (Session ssn : getChannels())
- {
- sessions.add((ServerSession) ssn);
- }
- return sessions;
+ return Collections.unmodifiableCollection(getChannels());
}
+ @Override
+ protected Collection<ServerSession> getChannels()
+ {
+ return (Collection<ServerSession>) super.getChannels();
+ }
/**
* @return authorizedSubject
@@ -502,11 +504,11 @@ public class ServerConnection extends Co
private class ProcessPendingIterator implements Iterator<Runnable>
{
- private final List<? extends AMQSessionModel<?>> _sessionsWithPending;
+ private final Collection<? extends ServerSession> _sessionsWithPending;
private Iterator<? extends AMQSessionModel<?>> _sessionIterator;
private ProcessPendingIterator()
{
- _sessionsWithPending = getSessionModels();
+ _sessionsWithPending = new ArrayList<>(getSessionModels());
_sessionIterator = _sessionsWithPending.iterator();
}
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java Fri Oct 21 10:40:24 2016
@@ -1211,6 +1211,7 @@ public class ServerSession extends Sessi
consumerListNeedsRefreshing = true;
}
+ // QPID-7447: prevent unnecessary allocation of empty iterator
Iterator<ConsumerTarget> iter = _consumersWithPendingWork.isEmpty() ? Collections.<ConsumerTarget>emptyIterator() : _consumersWithPendingWork.iterator();
boolean consumerHasMoreWork = false;
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java Fri Oct 21 10:40:24 2016
@@ -41,36 +41,32 @@ import org.apache.qpid.bytebuffer.QpidBy
import org.apache.qpid.common.AMQPFilterTypes;
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.protocol.AMQConstant;
-import org.apache.qpid.server.logging.EventLogger;
-import org.apache.qpid.server.message.ConsumerOption;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.Exchange;
-import org.apache.qpid.server.model.NamedAddressSpace;
-import org.apache.qpid.server.security.access.Operation;
-import org.apache.qpid.server.transport.ProtocolEngine;
-import org.apache.qpid.server.store.MessageHandle;
-import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
-import org.apache.qpid.server.virtualhost.VirtualHostUnavailableException;
import org.apache.qpid.server.filter.AMQInvalidArgumentException;
import org.apache.qpid.server.filter.ArrivalTimeFilter;
import org.apache.qpid.server.filter.FilterManager;
import org.apache.qpid.server.filter.FilterManagerFactory;
import org.apache.qpid.server.filter.MessageFilter;
+import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.logging.messages.ChannelMessages;
import org.apache.qpid.server.logging.messages.ExchangeMessages;
+import org.apache.qpid.server.message.ConsumerOption;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.MessageSource;
+import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.NamedAddressSpace;
import org.apache.qpid.server.model.NoFactoryForTypeException;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.UnknownConfiguredObjectException;
import org.apache.qpid.server.queue.QueueArgumentsConverter;
+import org.apache.qpid.server.store.MessageHandle;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.StoredMessage;
+import org.apache.qpid.server.transport.ProtocolEngine;
import org.apache.qpid.server.txn.AlreadyKnownDtxException;
import org.apache.qpid.server.txn.DtxNotSelectedException;
import org.apache.qpid.server.txn.IncorrectDtxStateException;
@@ -81,12 +77,14 @@ import org.apache.qpid.server.txn.Server
import org.apache.qpid.server.txn.SuspendAndFailDtxException;
import org.apache.qpid.server.txn.TimeoutDtxException;
import org.apache.qpid.server.txn.UnknownDtxBranchException;
+import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.server.virtualhost.ExchangeExistsException;
import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException;
import org.apache.qpid.server.virtualhost.QueueExistsException;
import org.apache.qpid.server.virtualhost.RequiredExchangeException;
import org.apache.qpid.server.virtualhost.ReservedExchangeNameException;
+import org.apache.qpid.server.virtualhost.VirtualHostUnavailableException;
import org.apache.qpid.transport.*;
public class ServerSessionDelegate extends SessionDelegate
@@ -445,15 +443,11 @@ public class ServerSessionDelegate exten
try
{
serverSession.getAMQPConnection().checkAuthorizedMessagePrincipal(getMessageUserId(xfr));
- if(destination instanceof ConfiguredObject)
- {
+ destination.authorisePublish(serverSession.getToken(),
+ PUBLISH_ACTION_MAP_CREATOR.createMap(messageMetaData.getRoutingKey(),
+ messageMetaData.isImmediate()));
- ((ConfiguredObject)destination).authorise(serverSession.getToken(),
- Operation.ACTION("publish"),
- PUBLISH_ACTION_MAP_CREATOR.createMap(messageMetaData.getRoutingKey(),
- messageMetaData.isImmediate()));
- };
}
catch (AccessControlException e)
{
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java Fri Oct 21 10:40:24 2016
@@ -101,7 +101,6 @@ import org.apache.qpid.server.protocol.C
import org.apache.qpid.server.protocol.ConsumerListener;
import org.apache.qpid.server.queue.QueueArgumentsConverter;
import org.apache.qpid.server.security.SecurityToken;
-import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.store.MessageHandle;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.StoredMessage;
@@ -431,18 +430,12 @@ public class AMQChannel
try
{
+ final MessageDestination destination = _currentMessage.getDestination();
+
ContentHeaderBody contentHeader = _currentMessage.getContentHeader();
_connection.checkAuthorizedMessagePrincipal(AMQShortString.toString(contentHeader.getProperties().getUserId()));
- if(_currentMessage.getDestination() instanceof ConfiguredObject)
- {
-
- ((ConfiguredObject)_currentMessage.getDestination()).authorise(_token,
- Operation.ACTION("publish"),
- AbstractAMQPConnection.PUBLISH_ACTION_MAP_CREATOR.createMap(routingKey, info.isImmediate()));
-
- };
-
+ destination.authorisePublish(_token, AbstractAMQPConnection.PUBLISH_ACTION_MAP_CREATOR.createMap(routingKey, info.isImmediate()));
if (_confirmOnPublish)
{
@@ -457,7 +450,6 @@ public class AMQChannel
{
final MessagePublishInfo messagePublishInfo = _currentMessage.getMessagePublishInfo();
- final MessageDestination destination = _currentMessage.getDestination();
final MessageMetaData messageMetaData =
new MessageMetaData(messagePublishInfo,
@@ -3754,6 +3746,7 @@ public class AMQChannel
consumerListNeedsRefreshing = true;
}
+ // QPID-7447: prevent unnecessary allocation of empty iterator
Iterator<ConsumerTarget_0_8> iter = _consumersWithPendingWork.isEmpty() ? Collections.<ConsumerTarget_0_8>emptyIterator() : _consumersWithPendingWork.iterator();
boolean consumerHasMoreWork = false;
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java Fri Oct 21 10:40:24 2016
@@ -31,6 +31,7 @@ import java.security.AccessController;
import java.security.Principal;
import java.security.PrivilegedAction;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -849,9 +850,9 @@ public class AMQPConnection_0_8Impl
}
@Override
- public List<AMQChannel> getSessionModels()
+ public Collection<? extends AMQChannel> getSessionModels()
{
- return new ArrayList<>(_channelMap.values());
+ return Collections.unmodifiableCollection(_channelMap.values());
}
@Override
@@ -1414,11 +1415,11 @@ public class AMQPConnection_0_8Impl
private class ProcessPendingIterator implements Iterator<Runnable>
{
- private final List<? extends AMQSessionModel<?>> _sessionsWithPending;
+ private final Collection<? extends AMQChannel> _sessionsWithPending;
private Iterator<? extends AMQSessionModel<?>> _sessionIterator;
private ProcessPendingIterator()
{
- _sessionsWithPending = getSessionModels();
+ _sessionsWithPending = new ArrayList<>(getSessionModels());
_sessionIterator = _sessionsWithPending.iterator();
}
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java Fri Oct 21 10:40:24 2016
@@ -1423,9 +1423,9 @@ public class AMQPConnection_1_0 extends
return _remoteContainerId;
}
- public List<Session_1_0> getSessionModels()
+ public Collection<? extends Session_1_0> getSessionModels()
{
- return new ArrayList<>(_sessions);
+ return Collections.unmodifiableCollection(_sessions);
}
public void unblock()
@@ -1532,11 +1532,11 @@ public class AMQPConnection_1_0 extends
private class ProcessPendingIterator implements Iterator<Runnable>
{
- private final List<? extends AMQSessionModel<?>> _sessionsWithPending;
+ private final Collection<? extends AMQSessionModel<?>> _sessionsWithPending;
private Iterator<? extends AMQSessionModel<?>> _sessionIterator;
private ProcessPendingIterator()
{
- _sessionsWithPending = getSessionModels();
+ _sessionsWithPending = new ArrayList<>(getSessionModels());
_sessionIterator = _sessionsWithPending.iterator();
}
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java Fri Oct 21 10:40:24 2016
@@ -26,16 +26,15 @@ import java.util.Collections;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.protocol.v1_0.type.Outcome;
import org.apache.qpid.server.protocol.v1_0.type.Symbol;
import org.apache.qpid.server.protocol.v1_0.type.messaging.Accepted;
import org.apache.qpid.server.protocol.v1_0.type.messaging.Rejected;
import org.apache.qpid.server.protocol.v1_0.type.messaging.TerminusDurability;
import org.apache.qpid.server.protocol.v1_0.type.messaging.TerminusExpiryPolicy;
-import org.apache.qpid.server.message.InstanceProperties;
-import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.security.SecurityToken;
-import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.txn.ServerTransaction;
public class ExchangeDestination implements ReceivingDestination, SendingDestination
@@ -116,8 +115,7 @@ public class ExchangeDestination impleme
@Override
public void authorizePublish(final SecurityToken securityToken, final Message_1_0 message)
{
- _exchange.authorise(securityToken,
- Operation.ACTION("publish"),
+ _exchange.authorisePublish(securityToken,
Collections.<String,Object>singletonMap("routingKey", getRoutingAddress(message)));
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java Fri Oct 21 10:40:24 2016
@@ -23,7 +23,8 @@ package org.apache.qpid.server.protocol.
import java.util.Arrays;
import java.util.Collections;
-import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.protocol.v1_0.type.Outcome;
import org.apache.qpid.server.protocol.v1_0.type.Symbol;
@@ -31,10 +32,7 @@ import org.apache.qpid.server.protocol.v
import org.apache.qpid.server.protocol.v1_0.type.messaging.Rejected;
import org.apache.qpid.server.protocol.v1_0.type.messaging.TerminusDurability;
import org.apache.qpid.server.protocol.v1_0.type.messaging.TerminusExpiryPolicy;
-import org.apache.qpid.server.message.InstanceProperties;
-import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.security.SecurityToken;
-import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.txn.ServerTransaction;
public class NodeReceivingDestination implements ReceivingDestination
@@ -112,15 +110,8 @@ public class NodeReceivingDestination im
@Override
public void authorizePublish(final SecurityToken securityToken, final Message_1_0 message)
{
- if(_destination instanceof ConfiguredObject)
- {
- ConfiguredObject<?> object = (ConfiguredObject)_destination;
-
- object.authorise(securityToken,
- Operation.ACTION("publish"),
- Collections.<String, Object>singletonMap("routingKey", getRoutingAddress(message)));
- }
-
+ _destination.authorisePublish(securityToken,
+ Collections.<String, Object>singletonMap("routingKey", getRoutingAddress(message)));
}
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java Fri Oct 21 10:40:24 2016
@@ -22,12 +22,11 @@ package org.apache.qpid.server.protocol.
import java.util.Collections;
-import org.apache.qpid.server.protocol.v1_0.type.Outcome;
-import org.apache.qpid.server.protocol.v1_0.type.messaging.Accepted;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.protocol.v1_0.type.Outcome;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Accepted;
import org.apache.qpid.server.security.SecurityToken;
-import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.store.MessageEnqueueRecord;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -102,9 +101,8 @@ public class QueueDestination extends Me
public void authorizePublish(final SecurityToken securityToken, final Message_1_0 message)
{
- _queue.authorise(securityToken,
- Operation.ACTION("publish"),
- Collections.<String,Object>singletonMap("routingKey", getRoutingAddress(message)));
+ _queue.authorisePublish(securityToken,
+ Collections.<String,Object>singletonMap("routingKey", getRoutingAddress(message)));
}
Modified: qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java Fri Oct 21 10:40:24 2016
@@ -1545,6 +1545,7 @@ public class Session_1_0 implements AMQS
consumerListNeedsRefreshing = true;
}
+ // QPID-7447: prevent unnecessary allocation of empty iterator
Iterator<ConsumerTarget_1_0> iter = _consumersWithPendingWork.isEmpty() ? Collections.<ConsumerTarget_1_0>emptyIterator() : _consumersWithPendingWork.iterator();
boolean consumerHasMoreWork = false;
while(iter.hasNext())
Modified: qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java Fri Oct 21 10:40:24 2016
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.management.amqp;
+import java.security.AccessControlException;
import java.security.Principal;
import java.util.Collection;
import java.util.Collections;
@@ -40,6 +41,7 @@ import org.apache.qpid.server.model.port
import org.apache.qpid.server.plugin.SystemAddressSpaceCreator;
import org.apache.qpid.server.protocol.LinkModel;
import org.apache.qpid.server.protocol.LinkRegistry;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.store.MemoryMessageStore;
import org.apache.qpid.server.store.MessageStore;
@@ -212,6 +214,19 @@ public class ManagementAddressSpace impl
private class DefaultDestination implements MessageDestination
{
@Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return ManagementAddressSpace.this;
+ }
+
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+
+ }
+
+ @Override
public String getName()
{
return ExchangeDefaults.DEFAULT_EXCHANGE_NAME;
Modified: qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java Fri Oct 21 10:40:24 2016
@@ -64,6 +64,7 @@ import org.apache.qpid.server.model.Stat
import org.apache.qpid.server.plugin.MessageConverter;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.protocol.MessageConverterRegistry;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.store.MessageDurability;
import org.apache.qpid.server.store.MessageEnqueueRecord;
import org.apache.qpid.server.store.StorableMessageMetaData;
@@ -1020,6 +1021,20 @@ class ManagementNode implements MessageS
}
@Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return _addressSpace;
+ }
+
+
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+ // ? special permissions to publish to the management node
+ }
+
+ @Override
public String getName()
{
return MANAGEMENT_NODE_NAME;
Modified: qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java (original)
+++ qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java Fri Oct 21 10:40:24 2016
@@ -20,9 +20,11 @@
*/
package org.apache.qpid.server.management.amqp;
+import java.security.AccessControlException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import org.apache.qpid.server.consumer.ConsumerTarget;
import org.apache.qpid.server.message.BaseMessageInstance;
@@ -31,7 +33,9 @@ import org.apache.qpid.server.message.Me
import org.apache.qpid.server.message.MessageInstanceConsumer;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.message.internal.InternalMessage;
+import org.apache.qpid.server.model.NamedAddressSpace;
import org.apache.qpid.server.protocol.AMQSessionModel;
+import org.apache.qpid.server.security.SecurityToken;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.Action;
@@ -90,6 +94,19 @@ class ManagementNodeConsumer implements
}
@Override
+ public NamedAddressSpace getAddressSpace()
+ {
+ return _managementNode.getAddressSpace();
+ }
+
+ @Override
+ public void authorisePublish(final SecurityToken token, final Map<String, Object> arguments)
+ throws AccessControlException
+ {
+ _managementNode.authorisePublish(token, arguments);
+ }
+
+ @Override
public String getName()
{
return _name;
Modified: qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java (original)
+++ qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java Fri Oct 21 10:40:24 2016
@@ -649,6 +649,7 @@ public class QpidByteBuffer
QpidByteBuffer dest) throws SSLException
{
final ByteBuffer[] src;
+ // QPID-7447: prevent unnecessary allocations
if (buffers.isEmpty())
{
src = EMPTY_BYTE_BUFFER_ARRAY;
Modified: qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/transport/Connection.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/transport/Connection.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/transport/Connection.java (original)
+++ qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/transport/Connection.java Fri Oct 21 10:40:24 2016
@@ -721,7 +721,7 @@ public class Connection extends Connecti
return connectionLost.get();
}
- protected Collection<Session> getChannels()
+ protected Collection<? extends Session> getChannels()
{
return new ArrayList<>(channels.values());
}
Modified: qpid/java/branches/transfer-queue/systests/src/test/java/org/apache/qpid/server/security/acl/ExternalACLTest.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/systests/src/test/java/org/apache/qpid/server/security/acl/ExternalACLTest.java?rev=1765986&r1=1765985&r2=1765986&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/systests/src/test/java/org/apache/qpid/server/security/acl/ExternalACLTest.java (original)
+++ qpid/java/branches/transfer-queue/systests/src/test/java/org/apache/qpid/server/security/acl/ExternalACLTest.java Fri Oct 21 10:40:24 2016
@@ -485,4 +485,77 @@ public class ExternalACLTest extends Abs
// pass
}
}
+
+
+ public void setUpClientPublishToAnonymousSuccess() throws Exception
+ {
+ writeACLFile("ACL ALLOW-LOG client ACCESS VIRTUALHOST",
+ "ACL ALLOW-LOG client CREATE QUEUE",
+ "ACL ALLOW-LOG client BIND EXCHANGE" ,
+ "ACL ALLOW-LOG client PUBLISH EXCHANGE name=\"\" routingKey=\"example.RequestQueue\"",
+ "ACL DENY-LOG ALL ALL");
+ }
+
+ public void testClientPublishToAnonymousSuccess() throws Exception
+ {
+ Connection conn = getConnection("test", "client", "guest");
+
+ Session sess = conn.createSession(true, Session.SESSION_TRANSACTED);
+
+ conn.start();
+
+ Queue queue = sess.createQueue("example.RequestQueue");
+
+ ((AMQSession<?,?>)sess).declareAndBind((AMQDestination)queue);
+
+ MessageProducer sender = sess.createProducer(sess.createQueue("ADDR: example.RequestQueue"));
+
+ sender.send(sess.createTextMessage("test"));
+
+ //Send the message using a transaction as this will allow us to retrieve any errors that occur on the broker.
+ sess.commit();
+
+ conn.close();
+ }
+
+
+
+ public void setUpClientPublishToAnonymousFailure() throws Exception
+ {
+ writeACLFile("ACL ALLOW-LOG client ACCESS VIRTUALHOST",
+ "ACL ALLOW-LOG client CREATE QUEUE",
+ "ACL ALLOW-LOG client BIND EXCHANGE",
+ "ACL DENY-LOG ALL ALL");
+ }
+
+ public void testClientPublishToAnonymousFailure() throws Exception
+ {
+ try
+ {
+ Connection conn = getConnection("test", "client", "guest");
+
+ Session sess = conn.createSession(true, Session.SESSION_TRANSACTED);
+
+ conn.start();
+
+ Queue queue = sess.createQueue("example.RequestQueue");
+
+ ((AMQSession<?, ?>) sess).declareAndBind((AMQDestination) queue);
+
+ MessageProducer sender = sess.createProducer(sess.createQueue("ADDR: example.RequestQueue"));
+
+ sender.send(sess.createTextMessage("test"));
+
+ //Send the message using a transaction as this will allow us to retrieve any errors that occur on the broker.
+ sess.commit();
+
+ fail("Sending to the anonymousExchange without permission should fail");
+ }
+ catch (JMSException e)
+ {
+ assertEquals("403",e.getErrorCode());
+ }
+ }
+
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org