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:09:23 UTC

svn commit: r1765979 - in /qpid/java/branches/transfer-queue: ./ broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/org/apache/qpid/server/model/preferences/ broker-core/src/main/java/org/apache/qpid/server/security/auth/...

Author: rgodfrey
Date: Fri Oct 21 10:09:22 2016
New Revision: 1765979

URL: http://svn.apache.org/viewvc?rev=1765979&view=rev
Log:
merge up to r1763545 from trunk

Modified:
    qpid/java/branches/transfer-queue/   (props changed)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2UserPrincipal.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/virtualhost/AbstractVirtualHost.java
    qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java
    qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/ClientDecoder.java

Propchange: qpid/java/branches/transfer-queue/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 21 10:09:22 2016
@@ -9,4 +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-1763622
 /qpid/trunk/qpid:796646-796653

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1765979&r1=1765978&r2=1765979&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Fri Oct 21 10:09:22 2016
@@ -2994,7 +2994,7 @@ public abstract class AbstractConfigured
         return isSystemSubject(subject);
     }
 
-    private boolean isSystemSubject(final Subject subject)
+    protected boolean isSystemSubject(final Subject subject)
     {
         return subject != null  && subject.getPrincipals().contains(getSystemPrincipal());
     }

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java?rev=1765979&r1=1765978&r2=1765979&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java Fri Oct 21 10:09:22 2016
@@ -68,8 +68,8 @@ import org.apache.qpid.server.plugin.Sys
 import org.apache.qpid.server.security.AccessControl;
 import org.apache.qpid.server.security.CompoundAccessControl;
 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.security.SubjectFixedResultAccessControl;
+import org.apache.qpid.server.security.SubjectFixedResultAccessControl.ResultCalculator;
 import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
 import org.apache.qpid.server.security.auth.UsernamePrincipal;
 import org.apache.qpid.server.security.auth.manager.SimpleAuthenticationManager;
@@ -97,44 +97,14 @@ public class BrokerImpl extends Abstract
 
     public static final String MANAGEMENT_MODE_AUTHENTICATION = "MANAGEMENT_MODE_AUTHENTICATION";
 
-    private final AccessControl<SecurityToken> _systemUserAllowed = new AccessControl<SecurityToken>()
+    private final AccessControl _systemUserAllowed = new SubjectFixedResultAccessControl(new ResultCalculator()
     {
         @Override
-        public Result getDefault()
+        public Result getResult(final Subject subject)
         {
-            return Result.DEFER;
+            return isSystemSubject(subject) ? Result.ALLOWED : Result.DEFER;
         }
-
-        @Override
-        public SecurityToken newToken()
-        {
-            return null;
-        }
-
-        @Override
-        public SecurityToken newToken(final Subject subject)
-        {
-            return null;
-        }
-
-        @Override
-        public Result authorise(final SecurityToken token,
-                                final Operation operation,
-                                final PermissionedObject configuredObject)
-        {
-            return isSystemProcess() ? Result.ALLOWED : Result.DEFER;
-        }
-
-        @Override
-        public Result authorise(final SecurityToken token,
-                                final Operation operation,
-                                final PermissionedObject configuredObject,
-                                final Map<String, Object> arguments)
-        {
-            return isSystemProcess() ? Result.ALLOWED : Result.DEFER;
-        }
-    };
-
+    }, Result.DEFER);
 
     private final BrokerPrincipal _principal;
 

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java?rev=1765979&r1=1765978&r2=1765979&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java Fri Oct 21 10:09:22 2016
@@ -28,6 +28,7 @@ import java.util.Collection;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.security.QpidPrincipal;
 
 public class GenericPrincipal implements Principal
@@ -42,8 +43,17 @@ public class GenericPrincipal implements
     public GenericPrincipal(final QpidPrincipal principal)
     {
         _name = principal.getName();
-        _originType = principal.getOrigin().getType();
-        _originName = principal.getOrigin().getName();
+        ConfiguredObject<?> origin = principal.getOrigin();
+        if (origin != null)
+        {
+            _originType = origin.getType();
+            _originName = origin.getName();
+        }
+        else
+        {
+            _originType = "UNKNOWN";
+            _originName = "";
+        }
     }
 
     public GenericPrincipal(final String name)

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2UserPrincipal.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2UserPrincipal.java?rev=1765979&r1=1765978&r2=1765979&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2UserPrincipal.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2UserPrincipal.java Fri Oct 21 10:09:22 2016
@@ -20,12 +20,12 @@
  */
 package org.apache.qpid.server.security.auth.manager.oauth2;
 
-import java.security.Principal;
-
 import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.security.QpidPrincipal;
 
 
-public class OAuth2UserPrincipal implements Principal
+public class OAuth2UserPrincipal implements QpidPrincipal
 {
     private final String _accessToken;
     private final String _name;
@@ -58,6 +58,12 @@ public class OAuth2UserPrincipal impleme
     }
 
     @Override
+    public ConfiguredObject<?> getOrigin()
+    {
+        return _authenticationProvider;
+    }
+
+    @Override
     public boolean equals(final Object o)
     {
         if (this == o)

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=1765979&r1=1765978&r2=1765979&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:09:22 2016
@@ -32,9 +32,12 @@ public class AggregateTicker implements
     public int getTimeToNextTick(final long currentTime)
     {
         int nextTick = Integer.MAX_VALUE;
-        for(Ticker ticker : _tickers)
+        if (!_tickers.isEmpty())
         {
-            nextTick = Math.min(ticker.getTimeToNextTick(currentTime), nextTick);
+            for (Ticker ticker : _tickers)
+            {
+                nextTick = Math.min(ticker.getTimeToNextTick(currentTime), nextTick);
+            }
         }
         return nextTick;
     }
@@ -68,11 +71,14 @@ public class AggregateTicker implements
     @Override
     public void notifySchedulingDelay(final long schedulingDelay)
     {
-        for (Ticker ticker : _tickers)
+        if (!_tickers.isEmpty())
         {
-            if (ticker instanceof SchedulingDelayNotificationListener)
+            for (Ticker ticker : _tickers)
             {
-                ((SchedulingDelayNotificationListener) ticker).notifySchedulingDelay(schedulingDelay);
+                if (ticker instanceof SchedulingDelayNotificationListener)
+                {
+                    ((SchedulingDelayNotificationListener) ticker).notifySchedulingDelay(schedulingDelay);
+                }
             }
         }
     }

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=1765979&r1=1765978&r2=1765979&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:09:22 2016
@@ -108,7 +108,8 @@ import org.apache.qpid.server.queue.Queu
 import org.apache.qpid.server.security.AccessControl;
 import org.apache.qpid.server.security.CompoundAccessControl;
 import org.apache.qpid.server.security.Result;
-import org.apache.qpid.server.security.SecurityToken;
+import org.apache.qpid.server.security.SubjectFixedResultAccessControl;
+import org.apache.qpid.server.security.SubjectFixedResultAccessControl.ResultCalculator;
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
 import org.apache.qpid.server.stats.StatisticsCounter;
@@ -214,45 +215,14 @@ public abstract class AbstractVirtualHos
 
     private volatile boolean _createDefaultExchanges;
 
-
-    private final AccessControl<SecurityToken> _systemUserAllowed = new AccessControl<SecurityToken>()
+    private final AccessControl _systemUserAllowed = new SubjectFixedResultAccessControl(new ResultCalculator()
     {
         @Override
-        public Result getDefault()
-        {
-            return Result.DEFER;
-        }
-
-        @Override
-        public SecurityToken newToken()
-        {
-            return null;
-        }
-
-        @Override
-        public SecurityToken newToken(final Subject subject)
+        public Result getResult(final Subject subject)
         {
-            return null;
+            return isSystemSubject(subject) ? Result.ALLOWED : Result.DEFER;
         }
-
-        @Override
-        public Result authorise(final SecurityToken token,
-                                final Operation operation,
-                                final PermissionedObject configuredObject)
-        {
-            return isSystemProcess() ? Result.ALLOWED : Result.DEFER;
-        }
-
-        @Override
-        public Result authorise(final SecurityToken token,
-                                final Operation operation,
-                                final PermissionedObject configuredObject,
-                                final Map<String, Object> arguments)
-        {
-            return isSystemProcess() ? Result.ALLOWED : Result.DEFER;
-        }
-    };
-
+    }, Result.DEFER);
 
     @ManagedAttributeField
     private boolean _queue_deadLetterQueueEnabled;

Modified: qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java?rev=1765979&r1=1765978&r2=1765979&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java (original)
+++ qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java Fri Oct 21 10:09:22 2016
@@ -124,7 +124,7 @@ public abstract class AMQDecoder<T exten
 
             }
         }
-        return required;
+        return buf.hasRemaining() ? required : 0;
     }
 
 

Modified: qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/ClientDecoder.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/ClientDecoder.java?rev=1765979&r1=1765978&r2=1765979&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/ClientDecoder.java (original)
+++ qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/codec/ClientDecoder.java Fri Oct 21 10:09:22 2016
@@ -39,62 +39,52 @@ public class ClientDecoder extends AMQDe
         super(false, methodProcessor);
     }
 
-    public void decodeBuffer(ByteBuffer buf)
-            throws AMQFrameDecodingException, AMQProtocolVersionException
+    public void decodeBuffer(ByteBuffer incomingBuffer) throws AMQFrameDecodingException, AMQProtocolVersionException
     {
-
-        buf = buf.slice();
-
-        if(_incompleteBuffer != null)
+        if (_incompleteBuffer == null)
+        {
+            QpidByteBuffer qpidByteBuffer = QpidByteBuffer.wrap(incomingBuffer);
+            final int required = decode(qpidByteBuffer);
+            if (required != 0)
+            {
+                _incompleteBuffer = QpidByteBuffer.allocate(qpidByteBuffer.remaining() + required);
+                _incompleteBuffer.put(qpidByteBuffer);
+            }
+            qpidByteBuffer.dispose();
+        }
+        else
         {
-            if(buf.remaining() < _incompleteBuffer.remaining())
+            if (incomingBuffer.remaining() < _incompleteBuffer.remaining())
             {
-                _incompleteBuffer.put(buf);
-                return;
+                _incompleteBuffer.put(incomingBuffer);
             }
             else
             {
-                final ByteBuffer start = buf.duplicate();
-                start.limit(_incompleteBuffer.remaining());
-                buf.position(buf.position()+_incompleteBuffer.remaining());
-                _incompleteBuffer.put(start);
                 _incompleteBuffer.flip();
-                final int required = decode(_incompleteBuffer);
+                final QpidByteBuffer aggregatedBuffer =
+                        QpidByteBuffer.allocate(_incompleteBuffer.remaining() + incomingBuffer.remaining());
+                aggregatedBuffer.put(_incompleteBuffer);
+                aggregatedBuffer.put(incomingBuffer);
+                aggregatedBuffer.flip();
+                final int required = decode(aggregatedBuffer);
 
-                if(required != 0)
+                _incompleteBuffer.dispose();
+                if (required != 0)
                 {
-                    QpidByteBuffer newBuffer = QpidByteBuffer.allocate(required + _incompleteBuffer.remaining());
-                    newBuffer.put(_incompleteBuffer);
-                    _incompleteBuffer.dispose();
-                    _incompleteBuffer = newBuffer;
-                    if(buf.hasRemaining())
-                    {
-                        decodeBuffer(buf);
-                    }
-                    return;
+                    _incompleteBuffer = QpidByteBuffer.allocate(aggregatedBuffer.remaining() + required);
+                    _incompleteBuffer.put(aggregatedBuffer);
                 }
                 else
                 {
-                    _incompleteBuffer.dispose();
                     _incompleteBuffer = null;
-                    if(!buf.hasRemaining())
-                    {
-                        return;
-                    }
                 }
+                aggregatedBuffer.dispose();
             }
         }
-
-        QpidByteBuffer qpidByteBuffer = QpidByteBuffer.wrap(buf);
-        final int required = decode(qpidByteBuffer);
-        if(required != 0)
-        {
-            _incompleteBuffer = QpidByteBuffer.allocate(qpidByteBuffer.remaining()+required);
-            _incompleteBuffer.put(qpidByteBuffer);
-        }
-
+        // post-condition: assert(!incomingBuffer.hasRemaining());
     }
 
+    @Override
     void processMethod(int channelId,
                        QpidByteBuffer in)
             throws AMQFrameDecodingException



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org