You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2017/08/31 16:06:12 UTC

[2/2] qpid-broker-j git commit: QPID-7823: [Java Broker] Refactor code to ensure AMQP 1.0 section always has either a value or encodedForm.

QPID-7823: [Java Broker] Refactor code to ensure AMQP 1.0 section always has either a value or encodedForm.

This was causing the IntelliJ debugger to behave in really weird ways.


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/5bd4b279
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/5bd4b279
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/5bd4b279

Branch: refs/heads/master
Commit: 5bd4b27969b53155452953be2ba9628678774987
Parents: 8c26b53
Author: Lorenz Quack <lq...@apache.org>
Authored: Thu Aug 31 14:56:16 2017 +0100
Committer: Lorenz Quack <lq...@apache.org>
Committed: Thu Aug 31 17:05:55 2017 +0100

----------------------------------------------------------------------
 .../v1_0/type/messaging/AbstractSection.java    | 22 ++---
 .../type/messaging/AmqpSequenceSection.java     |  5 +-
 .../v1_0/type/messaging/AmqpValueSection.java   |  7 +-
 .../messaging/ApplicationPropertiesSection.java |  6 +-
 .../v1_0/type/messaging/DataSection.java        |  7 +-
 .../messaging/DeliveryAnnotationsSection.java   |  6 +-
 .../v1_0/type/messaging/FooterSection.java      |  6 +-
 .../v1_0/type/messaging/HeaderSection.java      |  7 +-
 .../messaging/MessageAnnotationsSection.java    |  6 +-
 .../v1_0/type/messaging/PropertiesSection.java  |  7 +-
 .../AbstractEncodingRetainingConstructor.java   | 96 --------------------
 .../codec/AmqpSequenceSectionConstructor.java   |  7 +-
 .../codec/AmqpValueSectionConstructor.java      |  3 +-
 ...ApplicationPropertiesSectionConstructor.java |  8 +-
 .../messaging/codec/DataSectionConstructor.java |  3 +-
 .../DeliveryAnnotationsSectionConstructor.java  |  8 +-
 .../codec/DescribedListSectionConstructor.java  |  5 +-
 .../codec/DescribedMapSectionConstructor.java   |  7 +-
 .../type/messaging/codec/EncodingRetaining.java |  1 -
 .../codec/FooterSectionConstructor.java         |  8 +-
 .../codec/HeaderSectionConstructor.java         |  7 +-
 .../MessageAnnotationsSectionConstructor.java   |  8 +-
 .../codec/PropertiesSectionConstructor.java     |  7 +-
 23 files changed, 94 insertions(+), 153 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AbstractSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AbstractSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AbstractSection.java
index 423d7d5..a6142db 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AbstractSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AbstractSection.java
@@ -48,8 +48,15 @@ public abstract class AbstractSection<T, S extends NonEncodingRetainingSection<T
     // _encodedSize is valid only when _encodedForm is non-null
     private long _encodedSize = 0;
 
-    protected AbstractSection()
+    protected AbstractSection(final List<QpidByteBuffer> encodedForm)
     {
+        _encodedForm = new ArrayList<>();
+        _encodedSize = 0;
+        for(QpidByteBuffer encodedChunk : encodedForm)
+        {
+            _encodedSize += encodedChunk.remaining();
+            _encodedForm.add(encodedChunk.duplicate());
+        }
     }
 
     protected AbstractSection(final S section)
@@ -93,19 +100,6 @@ public abstract class AbstractSection<T, S extends NonEncodingRetainingSection<T
     }
 
     @Override
-    public synchronized final void setEncodedForm(final List<QpidByteBuffer> encodedForm)
-    {
-        clearEncodedForm();
-        _encodedForm = new ArrayList<>();
-        _encodedSize = 0;
-        for(QpidByteBuffer encodedChunk : encodedForm)
-        {
-            _encodedSize += encodedChunk.remaining();
-            _encodedForm.add(encodedChunk.duplicate());
-        }
-    }
-
-    @Override
     public synchronized final long getEncodedSize()
     {
         encodeIfNecessary();

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpSequenceSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpSequenceSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpSequenceSection.java
index 131ddb9..a9aaaa9 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpSequenceSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpSequenceSection.java
@@ -23,14 +23,15 @@ package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
 import java.util.List;
 
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.AmqpSequenceConstructor;
 
 public class AmqpSequenceSection extends AbstractSection<List, AmqpSequence>
 {
-    public AmqpSequenceSection()
+    public AmqpSequenceSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     AmqpSequenceSection(final AmqpSequence sequence)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpValueSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpValueSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpValueSection.java
index 6450243..4c892d3 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpValueSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/AmqpValueSection.java
@@ -21,14 +21,17 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.AmqpValueConstructor;
 
 public class AmqpValueSection extends AbstractSection<Object, AmqpValue>
 {
-    public AmqpValueSection()
+    public AmqpValueSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     AmqpValueSection(final AmqpValue amqpValue)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationPropertiesSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationPropertiesSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationPropertiesSection.java
index 459a5a3..917dcb9 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationPropertiesSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationPropertiesSection.java
@@ -21,17 +21,19 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
 import java.util.Map;
 
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.ApplicationPropertiesConstructor;
 
 public class ApplicationPropertiesSection extends AbstractSection<Map<String,Object>, ApplicationProperties>
 {
 
-    public ApplicationPropertiesSection()
+    public ApplicationPropertiesSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     ApplicationPropertiesSection(final ApplicationProperties section)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DataSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DataSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DataSection.java
index ef93dfa..ccbd624 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DataSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DataSection.java
@@ -21,15 +21,18 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.Binary;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.DataConstructor;
 
 public class DataSection extends AbstractSection<Binary, Data>
 {
-    public DataSection()
+    public DataSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     DataSection(final Data data)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DeliveryAnnotationsSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DeliveryAnnotationsSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DeliveryAnnotationsSection.java
index ee5e75b..63a6007 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DeliveryAnnotationsSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/DeliveryAnnotationsSection.java
@@ -21,17 +21,19 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
 import java.util.Map;
 
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.DeliveryAnnotationsConstructor;
 
 public class DeliveryAnnotationsSection extends AbstractSection<Map<Symbol,Object>, DeliveryAnnotations>
 {
-    public DeliveryAnnotationsSection()
+    public DeliveryAnnotationsSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     DeliveryAnnotationsSection(final DeliveryAnnotations deliveryAnnotations)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/FooterSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/FooterSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/FooterSection.java
index 7e089de..e692568 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/FooterSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/FooterSection.java
@@ -21,17 +21,19 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
 import java.util.Map;
 
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.FooterConstructor;
 
 public class FooterSection extends AbstractSection<Map<Symbol,Object>, Footer>
 {
-    public FooterSection()
+    public FooterSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     FooterSection(final Footer footer)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/HeaderSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/HeaderSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/HeaderSection.java
index 4ea985b..823428e 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/HeaderSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/HeaderSection.java
@@ -21,14 +21,17 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.HeaderConstructor;
 
 public class HeaderSection extends AbstractSection<Header, Header>
 {
-    public HeaderSection()
+    public HeaderSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     HeaderSection(final Header header)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/MessageAnnotationsSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/MessageAnnotationsSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/MessageAnnotationsSection.java
index 40f3743..8f1ae3f 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/MessageAnnotationsSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/MessageAnnotationsSection.java
@@ -21,17 +21,19 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
 import java.util.Map;
 
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.MessageAnnotationsConstructor;
 
 public class MessageAnnotationsSection extends AbstractSection<Map<Symbol,Object>, MessageAnnotations>
 {
-    public MessageAnnotationsSection()
+    public MessageAnnotationsSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     MessageAnnotationsSection(final MessageAnnotations messageAnnotations)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/PropertiesSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/PropertiesSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/PropertiesSection.java
index f9d80b6..87069ce 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/PropertiesSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/PropertiesSection.java
@@ -21,14 +21,17 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.AbstractDescribedTypeConstructor;
 import org.apache.qpid.server.protocol.v1_0.type.messaging.codec.PropertiesConstructor;
 
 public class PropertiesSection extends AbstractSection<Properties, Properties>
 {
-    public PropertiesSection()
+    public PropertiesSection(final List<QpidByteBuffer> encodedForm)
     {
-        super();
+        super(encodedForm);
     }
 
     PropertiesSection(final Properties properties)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AbstractEncodingRetainingConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AbstractEncodingRetainingConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AbstractEncodingRetainingConstructor.java
deleted file mode 100644
index a528f5f..0000000
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AbstractEncodingRetainingConstructor.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
-import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructor;
-import org.apache.qpid.server.protocol.v1_0.codec.TypeConstructor;
-import org.apache.qpid.server.protocol.v1_0.codec.ValueHandler;
-import org.apache.qpid.server.protocol.v1_0.type.AmqpErrorException;
-
-abstract public class AbstractEncodingRetainingConstructor<T extends EncodingRetaining> implements DescribedTypeConstructor<T>
-{
-    @Override
-    public TypeConstructor<T> construct(final Object descriptor,
-                                        final List<QpidByteBuffer> in,
-                                        final int[] originalPositions,
-                                        final ValueHandler valueHandler)
-            throws AmqpErrorException
-    {
-        return new TypeConstructorFromUnderlying<>(this, valueHandler.readConstructor(in), originalPositions);
-    }
-
-    abstract protected T construct(Object underlying);
-
-    private static class TypeConstructorFromUnderlying<S extends EncodingRetaining> implements TypeConstructor<S>
-    {
-
-        private final TypeConstructor _describedConstructor;
-        private final int[] _originalPositions;
-        private AbstractEncodingRetainingConstructor<S> _describedTypeConstructor;
-
-        public TypeConstructorFromUnderlying(final AbstractEncodingRetainingConstructor<S> describedTypeConstructor,
-                                             final TypeConstructor describedConstructor, final int[] originalPositions)
-        {
-            _describedConstructor = describedConstructor;
-            _describedTypeConstructor = describedTypeConstructor;
-            _originalPositions = originalPositions;
-        }
-
-        @Override
-        public S construct(final List<QpidByteBuffer> in, final ValueHandler handler) throws AmqpErrorException
-        {
-
-            S object =  _describedTypeConstructor.construct(_describedConstructor.construct(in, handler));
-            List<QpidByteBuffer> encoding = new ArrayList<>();
-            int offset = in.size() - _originalPositions.length;
-            for(int i = offset; i < in.size(); i++)
-            {
-                QpidByteBuffer buf = in.get(i);
-                if(buf.position() == _originalPositions[i-offset])
-                {
-                    if(buf.hasRemaining())
-                    {
-                        break;
-                    }
-                }
-                else
-                {
-                    QpidByteBuffer dup = buf.duplicate();
-                    dup.position(_originalPositions[i-offset]);
-                    dup.limit(buf.position());
-                    encoding.add(dup);
-                }
-            }
-            object.setEncodedForm(encoding);
-            for (QpidByteBuffer buffer: encoding)
-            {
-                buffer.dispose();
-            }
-            return object;
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpSequenceSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpSequenceSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpSequenceSectionConstructor.java
index 462a31e..6158c6a 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpSequenceSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpSequenceSectionConstructor.java
@@ -23,6 +23,9 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
@@ -46,9 +49,9 @@ public class AmqpSequenceSectionConstructor extends DescribedListSectionConstruc
     }
 
     @Override
-    protected AmqpSequenceSection createObject()
+    protected AmqpSequenceSection createObject(final List<QpidByteBuffer> encodedForm)
     {
-        return new AmqpSequenceSection();
+        return new AmqpSequenceSection(encodedForm);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpValueSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpValueSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpValueSectionConstructor.java
index da51ae3..daa76a9 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpValueSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/AmqpValueSectionConstructor.java
@@ -105,8 +105,7 @@ public class AmqpValueSectionConstructor implements DescribedTypeConstructor<Amq
                     encoding.add(dup);
                 }
             }
-            AmqpValueSection object = new AmqpValueSection();
-            object.setEncodedForm(encoding);
+            AmqpValueSection object = new AmqpValueSection(encoding);
             for (QpidByteBuffer buffer: encoding)
             {
                 buffer.dispose();

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/ApplicationPropertiesSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/ApplicationPropertiesSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/ApplicationPropertiesSectionConstructor.java
index a018e12..a40efcd 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/ApplicationPropertiesSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/ApplicationPropertiesSectionConstructor.java
@@ -23,6 +23,9 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
@@ -46,9 +49,10 @@ public class ApplicationPropertiesSectionConstructor extends DescribedMapSection
     }
 
     @Override
-    protected ApplicationPropertiesSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry)
+    protected ApplicationPropertiesSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry,
+                                                        final List<QpidByteBuffer> encodedForm)
     {
-        return new ApplicationPropertiesSection();
+        return new ApplicationPropertiesSection(encodedForm);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DataSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DataSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DataSectionConstructor.java
index 9f40612..a5d2469 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DataSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DataSectionConstructor.java
@@ -136,8 +136,7 @@ public class DataSectionConstructor implements DescribedTypeConstructor<DataSect
                     encoding.add(dup);
                 }
             }
-            DataSection object = new DataSection();
-            object.setEncodedForm(encoding);
+            DataSection object = new DataSection(encoding);
             for (QpidByteBuffer buffer: encoding)
             {
                 buffer.dispose();

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DeliveryAnnotationsSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DeliveryAnnotationsSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DeliveryAnnotationsSectionConstructor.java
index 8633469..eed18b9 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DeliveryAnnotationsSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DeliveryAnnotationsSectionConstructor.java
@@ -23,6 +23,9 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
@@ -46,9 +49,10 @@ public class DeliveryAnnotationsSectionConstructor extends DescribedMapSectionCo
     }
 
     @Override
-    protected DeliveryAnnotationsSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry)
+    protected DeliveryAnnotationsSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry,
+                                                      final List<QpidByteBuffer> encodedForm)
     {
-        return new DeliveryAnnotationsSection();
+        return new DeliveryAnnotationsSection(encodedForm);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedListSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedListSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedListSectionConstructor.java
index 5e11400..c01b560 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedListSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedListSectionConstructor.java
@@ -124,8 +124,7 @@ public abstract class DescribedListSectionConstructor<S extends AbstractSection>
                     encoding.add(dup);
                 }
             }
-            S object = createObject();
-            object.setEncodedForm(encoding);
+            S object = createObject(encoding);
             for (QpidByteBuffer buffer: encoding)
             {
                 buffer.dispose();
@@ -135,5 +134,5 @@ public abstract class DescribedListSectionConstructor<S extends AbstractSection>
         }
     }
 
-    protected abstract S createObject();
+    protected abstract S createObject(final List<QpidByteBuffer> encodedForm);
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedMapSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedMapSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedMapSectionConstructor.java
index 3a9a622..718c6da 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedMapSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/DescribedMapSectionConstructor.java
@@ -120,8 +120,8 @@ public abstract class DescribedMapSectionConstructor<S extends AbstractSection>
                     encoding.add(dup);
                 }
             }
-            S object = createObject(((SectionDecoderRegistry)handler.getDescribedTypeRegistry()).getUnderlyingRegistry());
-            object.setEncodedForm(encoding);
+            S object = createObject(((SectionDecoderRegistry)handler.getDescribedTypeRegistry()).getUnderlyingRegistry(),
+                                    encoding);
             for (QpidByteBuffer buffer: encoding)
             {
                 buffer.dispose();
@@ -131,5 +131,6 @@ public abstract class DescribedMapSectionConstructor<S extends AbstractSection>
         }
     }
 
-    protected abstract S createObject(final DescribedTypeConstructorRegistry describedTypeRegistry);
+    protected abstract S createObject(final DescribedTypeConstructorRegistry describedTypeRegistry,
+                                      final List<QpidByteBuffer> encodedForm);
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/EncodingRetaining.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/EncodingRetaining.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/EncodingRetaining.java
index d98ddec..d35a875 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/EncodingRetaining.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/EncodingRetaining.java
@@ -28,7 +28,6 @@ public interface EncodingRetaining
 {
     void writeTo(QpidByteBuffer dest);
     long getEncodedSize();
-    void setEncodedForm(List<QpidByteBuffer> encodedForm);
     List<QpidByteBuffer> getEncodedForm();
     void clearEncodedForm();
     EncodingRetaining copy();

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/FooterSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/FooterSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/FooterSectionConstructor.java
index 341d8ce..a2f9e93 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/FooterSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/FooterSectionConstructor.java
@@ -23,6 +23,9 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
@@ -46,9 +49,10 @@ public class FooterSectionConstructor extends DescribedMapSectionConstructor<Foo
     }
 
     @Override
-    protected FooterSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry)
+    protected FooterSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry,
+                                         final List<QpidByteBuffer> encodedForm)
     {
-        return new FooterSection();
+        return new FooterSection(encodedForm);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/HeaderSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/HeaderSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/HeaderSectionConstructor.java
index 25fe80a..205290e 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/HeaderSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/HeaderSectionConstructor.java
@@ -23,6 +23,9 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
@@ -46,9 +49,9 @@ public class HeaderSectionConstructor extends DescribedListSectionConstructor<He
     }
 
     @Override
-    protected HeaderSection createObject()
+    protected HeaderSection createObject(final List<QpidByteBuffer> encodedForm)
     {
-        return new HeaderSection();
+        return new HeaderSection(encodedForm);
     }
 
 

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/MessageAnnotationsSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/MessageAnnotationsSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/MessageAnnotationsSectionConstructor.java
index 5ea957f..4504c12 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/MessageAnnotationsSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/MessageAnnotationsSectionConstructor.java
@@ -23,6 +23,9 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
@@ -46,9 +49,10 @@ public class MessageAnnotationsSectionConstructor extends DescribedMapSectionCon
     }
 
     @Override
-    protected MessageAnnotationsSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry)
+    protected MessageAnnotationsSection createObject(final DescribedTypeConstructorRegistry describedTypeRegistry,
+                                                     final List<QpidByteBuffer> encodedForm)
     {
-        return new MessageAnnotationsSection();
+        return new MessageAnnotationsSection(encodedForm);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/5bd4b279/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/PropertiesSectionConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/PropertiesSectionConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/PropertiesSectionConstructor.java
index 57aceec..4e40362 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/PropertiesSectionConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/codec/PropertiesSectionConstructor.java
@@ -23,6 +23,9 @@
 
 package org.apache.qpid.server.protocol.v1_0.type.messaging.codec;
 
+import java.util.List;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;
 import org.apache.qpid.server.protocol.v1_0.type.Symbol;
 import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
@@ -46,9 +49,9 @@ public class PropertiesSectionConstructor extends DescribedListSectionConstructo
     }
 
     @Override
-    protected PropertiesSection createObject()
+    protected PropertiesSection createObject(final List<QpidByteBuffer> encodedForm)
     {
-        return new PropertiesSection();
+        return new PropertiesSection(encodedForm);
     }
 
 }


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