http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Open.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Open.java 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Open.java
deleted file mode 100644
index e4ec98b..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Open.java
+++ /dev/null
@@ -1,175 +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.proton.amqp.transport;
-
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.amqp.Symbol;
-import org.apache.qpid.proton.amqp.UnsignedInteger;
-import org.apache.qpid.proton.amqp.UnsignedShort;
-
-import java.util.Arrays;
-import java.util.Map;
-
-
-public final class Open implements FrameBody
-{
-    private String _containerId;
-    private String _hostname;
-    private UnsignedInteger _maxFrameSize = 
UnsignedInteger.valueOf(0xffffffff);
-    private UnsignedShort _channelMax = UnsignedShort.valueOf((short) 65535);
-    private UnsignedInteger _idleTimeOut;
-    private Symbol[] _outgoingLocales;
-    private Symbol[] _incomingLocales;
-    private Symbol[] _offeredCapabilities;
-    private Symbol[] _desiredCapabilities;
-    private Map _properties;
-
-    public String getContainerId()
-    {
-        return _containerId;
-    }
-
-    public void setContainerId(String containerId)
-    {
-        if( containerId == null )
-        {
-            throw new NullPointerException("the container-id field is 
mandatory");
-        }
-
-        _containerId = containerId;
-    }
-
-    public String getHostname()
-    {
-        return _hostname;
-    }
-
-    public void setHostname(String hostname)
-    {
-        _hostname = hostname;
-    }
-
-    public UnsignedInteger getMaxFrameSize()
-    {
-        return _maxFrameSize;
-    }
-
-    public void setMaxFrameSize(UnsignedInteger maxFrameSize)
-    {
-        _maxFrameSize = maxFrameSize;
-    }
-
-    public UnsignedShort getChannelMax()
-    {
-        return _channelMax;
-    }
-
-    public void setChannelMax(UnsignedShort channelMax)
-    {
-        _channelMax = channelMax;
-    }
-
-    public UnsignedInteger getIdleTimeOut()
-    {
-        return _idleTimeOut;
-    }
-
-    public void setIdleTimeOut(UnsignedInteger idleTimeOut)
-    {
-        _idleTimeOut = idleTimeOut;
-    }
-
-    public Symbol[] getOutgoingLocales()
-    {
-        return _outgoingLocales;
-    }
-
-    public void setOutgoingLocales(Symbol... outgoingLocales)
-    {
-        _outgoingLocales = outgoingLocales;
-    }
-
-    public Symbol[] getIncomingLocales()
-    {
-        return _incomingLocales;
-    }
-
-    public void setIncomingLocales(Symbol... incomingLocales)
-    {
-        _incomingLocales = incomingLocales;
-    }
-
-    public Symbol[] getOfferedCapabilities()
-    {
-        return _offeredCapabilities;
-    }
-
-    public void setOfferedCapabilities(Symbol... offeredCapabilities)
-    {
-        _offeredCapabilities = offeredCapabilities;
-    }
-
-    public Symbol[] getDesiredCapabilities()
-    {
-        return _desiredCapabilities;
-    }
-
-    public void setDesiredCapabilities(Symbol... desiredCapabilities)
-    {
-        _desiredCapabilities = desiredCapabilities;
-    }
-
-    public Map getProperties()
-    {
-        return _properties;
-    }
-
-    public void setProperties(Map properties)
-    {
-        _properties = properties;
-    }
-
-    public <E> void invoke(FrameBodyHandler<E> handler, Binary payload, E 
context)
-    {
-        handler.handleOpen(this, payload, context);
-    }
-
-    @Override
-    public String toString()
-    {
-        return "Open{" +
-               " containerId='" + _containerId + '\'' +
-               ", hostname='" + _hostname + '\'' +
-               ", maxFrameSize=" + _maxFrameSize +
-               ", channelMax=" + _channelMax +
-               ", idleTimeOut=" + _idleTimeOut +
-               ", outgoingLocales=" + (_outgoingLocales == null ? null : 
Arrays.asList(_outgoingLocales)) +
-               ", incomingLocales=" + (_incomingLocales == null ? null : 
Arrays.asList(_incomingLocales)) +
-               ", offeredCapabilities=" + (_offeredCapabilities == null ? null 
: Arrays.asList(_offeredCapabilities)) +
-               ", desiredCapabilities=" + (_desiredCapabilities == null ? null 
: Arrays.asList(_desiredCapabilities)) +
-               ", properties=" + _properties +
-               '}';
-    }
-}
-  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/ReceiverSettleMode.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/ReceiverSettleMode.java
 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/ReceiverSettleMode.java
deleted file mode 100644
index c2621e6..0000000
--- 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/ReceiverSettleMode.java
+++ /dev/null
@@ -1,54 +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.proton.amqp.transport;
-
-import org.apache.qpid.proton.amqp.UnsignedByte;
-
-public enum ReceiverSettleMode
-{
-    FIRST(0),
-    SECOND(1);
-
-    private UnsignedByte value;
-
-    private ReceiverSettleMode(int value) {
-        this.value = UnsignedByte.valueOf((byte)value);
-    }
-
-    public static ReceiverSettleMode valueOf(UnsignedByte value) {
-
-        switch (value.intValue()) {
-            case 0:
-                return ReceiverSettleMode.FIRST;
-            case 1:
-                return ReceiverSettleMode.SECOND;
-            default:
-                throw new IllegalArgumentException("The value can be only 0 
(for FIRST) and 1 (for SECOND)");
-        }
-    }
-
-    public UnsignedByte getValue() {
-        return this.value;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Role.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Role.java 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Role.java
deleted file mode 100644
index f40effb..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Role.java
+++ /dev/null
@@ -1,34 +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.proton.amqp.transport;
-
-public enum Role
-{
-    SENDER, RECEIVER;
-
-    public boolean getValue()
-    {
-        return this == RECEIVER;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SenderSettleMode.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SenderSettleMode.java
 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SenderSettleMode.java
deleted file mode 100644
index 6dae3f4..0000000
--- 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SenderSettleMode.java
+++ /dev/null
@@ -1,58 +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.proton.amqp.transport;
-
-import org.apache.qpid.proton.amqp.UnsignedByte;
-
-public enum SenderSettleMode
-{
-    UNSETTLED(0),
-    SETTLED(1),
-    MIXED(2);
-
-    private UnsignedByte value;
-
-    private SenderSettleMode(int value) {
-        this.value = UnsignedByte.valueOf((byte)value);
-    }
-
-    public static SenderSettleMode valueOf(UnsignedByte value) {
-
-        switch (value.intValue()) {
-
-            case 0:
-                return SenderSettleMode.UNSETTLED;
-            case 1:
-                return SenderSettleMode.SETTLED;
-            case 2:
-                return SenderSettleMode.MIXED;
-            default:
-                throw new IllegalArgumentException("The value can be only 0 
(for UNSETTLED), 1 (for SETTLED) and 2 (for MIXED)");
-        }
-    }
-
-    public UnsignedByte getValue() {
-        return this.value;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SessionError.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SessionError.java
 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SessionError.java
deleted file mode 100644
index e029cfb..0000000
--- 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/SessionError.java
+++ /dev/null
@@ -1,38 +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.proton.amqp.transport;
-
-import org.apache.qpid.proton.amqp.Symbol;
-
-public interface SessionError
-{
-    final static Symbol WINDOW_VIOLATION = 
Symbol.valueOf("amqp:session:window-violation");
-
-    final static Symbol ERRANT_LINK = 
Symbol.valueOf("amqp:session:errant-link");
-
-    final static Symbol HANDLE_IN_USE = 
Symbol.valueOf("amqp:session:handle-in-use");
-
-    final static Symbol UNATTACHED_HANDLE = 
Symbol.valueOf("amqp:session:unattached-handle");
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Source.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Source.java 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Source.java
deleted file mode 100644
index 2d6f3b2..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Source.java
+++ /dev/null
@@ -1,28 +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.proton.amqp.transport;
-
-public interface Source
-{
-    public String getAddress();
-
-    public Source copy();
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Target.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Target.java 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Target.java
deleted file mode 100644
index c972c02..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Target.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.apache.qpid.proton.amqp.transport;
-/*
- *
- * 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.
- *
-*/
-
-
-public interface Target
-{
-    public String getAddress();
-
-    public Target copy();
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Transfer.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Transfer.java 
b/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Transfer.java
deleted file mode 100644
index 35c421c..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/amqp/transport/Transfer.java
+++ /dev/null
@@ -1,181 +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.proton.amqp.transport;
-
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.amqp.UnsignedInteger;
-
-public final class Transfer implements FrameBody
-{
-    private UnsignedInteger _handle;
-    private UnsignedInteger _deliveryId;
-    private Binary _deliveryTag;
-    private UnsignedInteger _messageFormat;
-    private Boolean _settled;
-    private boolean _more;
-    private ReceiverSettleMode _rcvSettleMode;
-    private DeliveryState _state;
-    private boolean _resume;
-    private boolean _aborted;
-    private boolean _batchable;
-
-    public UnsignedInteger getHandle()
-    {
-        return _handle;
-    }
-
-    public void setHandle(UnsignedInteger handle)
-    {
-        if( handle == null )
-        {
-            throw new NullPointerException("the handle field is mandatory");
-        }
-
-        _handle = handle;
-    }
-
-    public UnsignedInteger getDeliveryId()
-    {
-        return _deliveryId;
-    }
-
-    public void setDeliveryId(UnsignedInteger deliveryId)
-    {
-        _deliveryId = deliveryId;
-    }
-
-    public Binary getDeliveryTag()
-    {
-        return _deliveryTag;
-    }
-
-    public void setDeliveryTag(Binary deliveryTag)
-    {
-        _deliveryTag = deliveryTag;
-    }
-
-    public UnsignedInteger getMessageFormat()
-    {
-        return _messageFormat;
-    }
-
-    public void setMessageFormat(UnsignedInteger messageFormat)
-    {
-        _messageFormat = messageFormat;
-    }
-
-    public Boolean getSettled()
-    {
-        return _settled;
-    }
-
-    public void setSettled(Boolean settled)
-    {
-        _settled = settled;
-    }
-
-    public boolean getMore()
-    {
-        return _more;
-    }
-
-    public void setMore(boolean more)
-    {
-        _more = more;
-    }
-
-    public ReceiverSettleMode getRcvSettleMode()
-    {
-        return _rcvSettleMode;
-    }
-
-    public void setRcvSettleMode(ReceiverSettleMode rcvSettleMode)
-    {
-        _rcvSettleMode = rcvSettleMode;
-    }
-
-    public DeliveryState getState()
-    {
-        return _state;
-    }
-
-    public void setState(DeliveryState state)
-    {
-        _state = state;
-    }
-
-    public boolean getResume()
-    {
-        return _resume;
-    }
-
-    public void setResume(boolean resume)
-    {
-        _resume = resume;
-    }
-
-    public boolean getAborted()
-    {
-        return _aborted;
-    }
-
-    public void setAborted(boolean aborted)
-    {
-        _aborted = aborted;
-    }
-
-    public boolean getBatchable()
-    {
-        return _batchable;
-    }
-
-    public void setBatchable(boolean batchable)
-    {
-        _batchable = batchable;
-    }
-
-    public <E> void invoke(FrameBodyHandler<E> handler, Binary payload, E 
context)
-    {
-        handler.handleTransfer(this, payload, context);
-    }
-
-    @Override
-    public String toString()
-    {
-        return "Transfer{" +
-               "handle=" + _handle +
-               ", deliveryId=" + _deliveryId +
-               ", deliveryTag=" + _deliveryTag +
-               ", messageFormat=" + _messageFormat +
-               ", settled=" + _settled +
-               ", more=" + _more +
-               ", rcvSettleMode=" + _rcvSettleMode +
-               ", state=" + _state +
-               ", resume=" + _resume +
-               ", aborted=" + _aborted +
-               ", batchable=" + _batchable +
-               '}';
-    }
-}
-  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPDefinedTypes.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPDefinedTypes.java 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPDefinedTypes.java
deleted file mode 100644
index 2e2f9e0..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPDefinedTypes.java
+++ /dev/null
@@ -1,107 +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.proton.codec;
-
-import org.apache.qpid.proton.amqp.transport.Attach;
-import org.apache.qpid.proton.amqp.transport.Begin;
-import org.apache.qpid.proton.amqp.transport.Close;
-import org.apache.qpid.proton.amqp.transport.Detach;
-import org.apache.qpid.proton.amqp.transport.Disposition;
-import org.apache.qpid.proton.amqp.transport.End;
-import org.apache.qpid.proton.amqp.transport.Flow;
-import org.apache.qpid.proton.amqp.transport.Open;
-import org.apache.qpid.proton.amqp.transport.Transfer;
-import org.apache.qpid.proton.codec.messaging.*;
-import org.apache.qpid.proton.codec.security.*;
-import org.apache.qpid.proton.codec.transaction.*;
-import org.apache.qpid.proton.codec.transport.*;
-
-public class AMQPDefinedTypes
-{
-    public static void registerAllTypes(Decoder decoder, EncoderImpl encoder)
-    {
-        registerTransportTypes(decoder, encoder);
-        registerMessagingTypes(decoder, encoder);
-        registerTransactionTypes(decoder, encoder);
-        registerSecurityTypes(decoder, encoder);
-    }
-
-
-    public static void registerTransportTypes(Decoder decoder, EncoderImpl 
encoder)
-    {
-        OpenType.register(decoder, encoder);
-        BeginType.register(decoder, encoder);
-        AttachType.register(decoder, encoder);
-        FlowType.register(decoder, encoder);
-        TransferType.register(decoder, encoder);
-        DispositionType.register(decoder, encoder);
-        DetachType.register(decoder, encoder);
-        EndType.register(decoder, encoder);
-        CloseType.register(decoder, encoder);
-        ErrorConditionType.register(decoder, encoder);
-    }
-
-    public static void registerMessagingTypes(Decoder decoder, EncoderImpl 
encoder)
-    {
-        HeaderType.register(decoder, encoder);
-        DeliveryAnnotationsType.register(decoder, encoder);
-        MessageAnnotationsType.register(decoder, encoder);
-        PropertiesType.register( decoder, encoder );
-        ApplicationPropertiesType.register(decoder, encoder);
-        DataType.register(decoder, encoder);
-        AmqpSequenceType.register(decoder, encoder);
-        AmqpValueType.register(decoder, encoder);
-        FooterType.register(decoder, encoder);
-        ReceivedType.register(decoder, encoder);
-        AcceptedType.register(decoder , encoder);
-        RejectedType.register(decoder, encoder);
-        ReleasedType.register(decoder, encoder);
-        ModifiedType.register(decoder, encoder);
-        SourceType.register(decoder, encoder);
-        TargetType.register(decoder, encoder);
-        DeleteOnCloseType.register(decoder, encoder);
-        DeleteOnNoLinksType.register(decoder, encoder);
-        DeleteOnNoMessagesType.register(decoder, encoder);
-        DeleteOnNoLinksOrMessagesType.register(decoder, encoder);
-    }
-
-    public static void registerTransactionTypes(Decoder decoder, EncoderImpl 
encoder)
-    {
-        CoordinatorType.register(decoder, encoder);
-        DeclareType.register(decoder, encoder);
-        DischargeType.register(decoder, encoder);
-        DeclaredType.register(decoder, encoder);
-        TransactionalStateType.register(decoder, encoder);
-    }
-
-    public static void registerSecurityTypes(Decoder decoder, EncoderImpl 
encoder)
-    {
-        SaslMechanismsType.register(decoder, encoder);
-        SaslInitType.register(decoder, encoder);
-        SaslChallengeType.register(decoder, encoder);
-        SaslResponseType.register(decoder, encoder);
-        SaslOutcomeType.register(decoder, encoder);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPType.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPType.java 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPType.java
deleted file mode 100644
index 4796b3f..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/AMQPType.java
+++ /dev/null
@@ -1,36 +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.proton.codec;
-
-import java.util.Collection;
-
-public interface AMQPType<V>
-{
-    Class<V> getTypeClass();
-
-    TypeEncoding<V> getEncoding(V val);
-
-    TypeEncoding<V> getCanonicalEncoding();
-
-    Collection<? extends TypeEncoding<V>> getAllEncodings();
-
-    void write(V val);
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractDescribedType.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractDescribedType.java
 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractDescribedType.java
deleted file mode 100644
index d31ac40..0000000
--- 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractDescribedType.java
+++ /dev/null
@@ -1,141 +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.proton.codec;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.qpid.proton.amqp.UnsignedLong;
-
-abstract public class AbstractDescribedType<T,M> implements AMQPType<T>
-{
-
-    private final EncoderImpl _encoder;
-    private final Map<TypeEncoding<M>, TypeEncoding<T>> _encodings = new 
HashMap<TypeEncoding<M>, TypeEncoding<T>>();
-
-    public AbstractDescribedType(EncoderImpl encoder)
-    {
-        _encoder = encoder;
-    }
-
-    abstract protected UnsignedLong getDescriptor();
-
-
-    public TypeEncoding<T> getEncoding(final T val)
-    {
-        M asUnderlying = wrap(val);
-        TypeEncoding<M> underlyingEncoding = 
_encoder.getType(asUnderlying).getEncoding(asUnderlying);
-        TypeEncoding<T> encoding = _encodings.get(underlyingEncoding);
-        if(encoding == null)
-        {
-            encoding = new DynamicDescribedTypeEncoding(underlyingEncoding);
-            _encodings.put(underlyingEncoding, encoding);
-        }
-
-        return encoding;
-    }
-
-    abstract protected M wrap(T val);
-
-    public TypeEncoding<T> getCanonicalEncoding()
-    {
-        return null;
-    }
-
-    public Collection<TypeEncoding<T>> getAllEncodings()
-    {
-        Collection values = _encodings.values();
-        Collection unmodifiable = Collections.unmodifiableCollection(values);
-        return (Collection<TypeEncoding<T>>) unmodifiable;
-    }
-
-    public void write(final T val)
-    {
-        TypeEncoding<T> encoding = getEncoding(val);
-        encoding.writeConstructor();
-        encoding.writeValue(val);
-    }
-
-    private class DynamicDescribedTypeEncoding implements TypeEncoding<T>
-    {
-        private final TypeEncoding<M> _underlyingEncoding;
-        private final TypeEncoding<UnsignedLong> _descriptorType;
-        private final int _constructorSize;
-
-
-        public DynamicDescribedTypeEncoding(final TypeEncoding<M> 
underlyingEncoding)
-        {
-            _underlyingEncoding = underlyingEncoding;
-            _descriptorType = 
_encoder.getType(getDescriptor()).getEncoding(getDescriptor());
-            _constructorSize = 1 + _descriptorType.getConstructorSize()
-                               + _descriptorType.getValueSize(getDescriptor())
-                               + _underlyingEncoding.getConstructorSize();
-        }
-
-        public AMQPType<T> getType()
-        {
-            return AbstractDescribedType.this;
-        }
-
-        public void writeConstructor()
-        {
-            _encoder.writeRaw(EncodingCodes.DESCRIBED_TYPE_INDICATOR);
-            _descriptorType.writeConstructor();
-            _descriptorType.writeValue(getDescriptor());
-            _underlyingEncoding.writeConstructor();
-        }
-
-        public int getConstructorSize()
-        {
-            return _constructorSize;
-        }
-
-        public void writeValue(final T val)
-        {
-            _underlyingEncoding.writeValue(wrap(val));
-        }
-
-        public int getValueSize(final T val)
-        {
-            return _underlyingEncoding.getValueSize(wrap(val));
-        }
-
-        public boolean isFixedSizeVal()
-        {
-            return _underlyingEncoding.isFixedSizeVal();
-        }
-
-        public boolean encodesSuperset(final TypeEncoding<T> encoding)
-        {
-            return (getType() == encoding.getType())
-                   && 
(_underlyingEncoding.encodesSuperset(((DynamicDescribedTypeEncoding)encoding)
-                                                                   
._underlyingEncoding));
-        }
-
-        @Override
-        public boolean encodesJavaPrimitive()
-        {
-            return false;
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveType.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveType.java
 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveType.java
deleted file mode 100644
index 9a8c9c4..0000000
--- 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveType.java
+++ /dev/null
@@ -1,32 +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.proton.codec;
-
-abstract class AbstractPrimitiveType<T> implements PrimitiveType<T>
-{
-    public final void write(T val)
-    {
-        final TypeEncoding<T> encoding = getEncoding(val);
-        encoding.writeConstructor();
-        encoding.writeValue(val);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java
 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java
deleted file mode 100644
index 56079ee..0000000
--- 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java
+++ /dev/null
@@ -1,67 +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.proton.codec;
-
-abstract class AbstractPrimitiveTypeEncoding<T> implements 
PrimitiveTypeEncoding<T>
-{
-    private final EncoderImpl _encoder;
-    private final DecoderImpl _decoder;
-
-    AbstractPrimitiveTypeEncoding(final EncoderImpl encoder, final DecoderImpl 
decoder)
-    {
-        _encoder = encoder;
-        _decoder = decoder;
-    }
-
-    public final void writeConstructor()
-    {
-        _encoder.writeRaw(getEncodingCode());
-    }
-
-    public int getConstructorSize()
-    {
-        return 1;
-    }
-
-    public abstract byte getEncodingCode();
-
-    protected EncoderImpl getEncoder()
-    {
-        return _encoder;
-    }
-
-    public Class<T> getTypeClass()
-    {
-        return getType().getTypeClass();
-    }
-
-    protected DecoderImpl getDecoder()
-    {
-        return _decoder;
-    }
-
-
-    public boolean encodesJavaPrimitive()
-    {
-        return false;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/ArrayType.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/ArrayType.java 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/ArrayType.java
deleted file mode 100644
index 45b8dd5..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/ArrayType.java
+++ /dev/null
@@ -1,1150 +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.proton.codec;
-
-import java.lang.reflect.Array;
-import java.util.Arrays;
-import java.util.Collection;
-
-public class ArrayType implements PrimitiveType<Object[]>
-{
-    private final EncoderImpl _encoder;
-    private final BooleanType _booleanType;
-    private final ByteType _byteType;
-    private final ShortType _shortType;
-    private final IntegerType _integerType;
-    private final LongType _longType;
-    private final FloatType _floatType;
-    private final DoubleType _doubleType;
-    private final CharacterType _characterType;
-
-    public static interface ArrayEncoding extends 
PrimitiveTypeEncoding<Object[]>
-    {
-        void writeValue(boolean[] a);
-        void writeValue(byte[] a);
-        void writeValue(short[] a);
-        void writeValue(int[] a);
-        void writeValue(long[] a);
-        void writeValue(float[] a);
-        void writeValue(double[] a);
-        void writeValue(char[] a);
-
-        void setValue(Object[] val, TypeEncoding encoder, int size);
-
-        int getSizeBytes();
-
-        Object readValueArray();
-    }
-
-    private final ArrayEncoding _shortArrayEncoding;
-    private final ArrayEncoding _arrayEncoding;
-
-    public ArrayType(EncoderImpl encoder,
-                     final DecoderImpl decoder, BooleanType boolType,
-                     ByteType byteType,
-                     ShortType shortType,
-                     IntegerType intType,
-                     LongType longType,
-                     FloatType floatType,
-                     DoubleType doubleType,
-                     CharacterType characterType)
-    {
-        _encoder = encoder;
-        _booleanType = boolType;
-        _byteType = byteType;
-        _shortType = shortType;
-        _integerType = intType;
-        _longType = longType;
-        _floatType = floatType;
-        _doubleType = doubleType;
-        _characterType = characterType;
-
-        _arrayEncoding = new AllArrayEncoding(encoder, decoder);
-        _shortArrayEncoding = new ShortArrayEncoding(encoder, decoder);
-
-        encoder.register(Object[].class, this);
-        decoder.register(this);
-    }
-
-    public Class<Object[]> getTypeClass()
-    {
-        return Object[].class;
-    }
-
-    public ArrayEncoding getEncoding(final Object[] val)
-    {
-        TypeEncoding encoder = calculateEncoder(val,_encoder);
-        int size = calculateSize(val, encoder);
-        ArrayEncoding arrayEncoding = (val.length > 255 || size > 254)
-                                      ? _arrayEncoding
-                                      : _shortArrayEncoding;
-        arrayEncoding.setValue(val, encoder, size);
-        return arrayEncoding;
-    }
-
-    private static TypeEncoding calculateEncoder(final Object[] val, final 
EncoderImpl encoder)
-    {
-
-        if(val.length == 0)
-        {
-            AMQPType underlyingType = 
encoder.getTypeFromClass(val.getClass().getComponentType());
-            return underlyingType.getCanonicalEncoding();
-        }
-        else
-        {
-            AMQPType underlyingType = 
encoder.getTypeFromClass(val.getClass().getComponentType());
-            boolean checkTypes = false;
-
-            if(val[0].getClass().isArray() && 
val[0].getClass().getComponentType().isPrimitive())
-            {
-                Class componentType = val[0].getClass().getComponentType();
-                if(componentType == Boolean.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((boolean[])val[0]);
-                }
-                else if(componentType == Byte.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((byte[])val[0]);
-                }
-                else if(componentType == Short.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((short[])val[0]);
-                }
-                else if(componentType == Integer.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((int[])val[0]);
-                }
-                else if(componentType == Long.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((long[])val[0]);
-                }
-                else if(componentType == Float.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((float[])val[0]);
-                }
-                else if(componentType == Double.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((double[])val[0]);
-                }
-                else if(componentType == Character.TYPE)
-                {
-                    return 
((ArrayType)underlyingType).getEncoding((char[])val[0]);
-                }
-                else
-                {
-                    throw new IllegalArgumentException("Cannot encode arrays 
of type " + componentType.getName());
-                }
-            }
-            else
-            {
-
-                if(underlyingType == null)
-                {
-                    checkTypes = true;
-                    underlyingType = encoder.getType(val[0]);
-                }
-                TypeEncoding underlyingEncoding = 
underlyingType.getEncoding(val[0]);
-                TypeEncoding canonicalEncoding = 
underlyingType.getCanonicalEncoding();
-
-                for(int i = 0; i < val.length && (checkTypes || 
underlyingEncoding != canonicalEncoding); i++)
-                {
-                    if(checkTypes && encoder.getType(val[i]) != underlyingType)
-                    {
-                        throw new IllegalArgumentException("Non matching types 
" + underlyingType + " and " + encoder
-                                .getType(val[i]) + " in array");
-                    }
-
-
-                    TypeEncoding elementEncoding = 
underlyingType.getEncoding(val[i]);
-                    if(elementEncoding != underlyingEncoding && 
!underlyingEncoding.encodesSuperset(elementEncoding))
-                    {
-                        if(elementEncoding.encodesSuperset(underlyingEncoding))
-                        {
-                            underlyingEncoding = elementEncoding;
-                        }
-                        else
-                        {
-                            underlyingEncoding = canonicalEncoding;
-                        }
-                    }
-
-                }
-
-                return underlyingEncoding;
-            }
-        }
-    }
-
-    private static int calculateSize(final Object[] val, final TypeEncoding 
encoder)
-    {
-        int size = encoder.getConstructorSize();
-        if(encoder.isFixedSizeVal())
-        {
-            size += val.length * encoder.getValueSize(null);
-        }
-        else
-        {
-            for(Object o : val)
-            {
-                if(o.getClass().isArray() && 
o.getClass().getComponentType().isPrimitive())
-                {
-                    ArrayEncoding arrayEncoding = (ArrayEncoding) encoder;
-                    ArrayType arrayType = (ArrayType) arrayEncoding.getType();
-
-                    Class componentType = o.getClass().getComponentType();
-
-                    size += 2 * arrayEncoding.getSizeBytes();
-
-                    TypeEncoding componentEncoding;
-                    int componentCount;
-
-                    if(componentType == Boolean.TYPE)
-                    {
-                        boolean[] componentArray = (boolean[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else if(componentType == Byte.TYPE)
-                    {
-                        byte[] componentArray = (byte[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else if(componentType == Short.TYPE)
-                    {
-                        short[] componentArray = (short[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else if(componentType == Integer.TYPE)
-                    {
-                        int[] componentArray = (int[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else if(componentType == Long.TYPE)
-                    {
-                        long[] componentArray = (long[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else if(componentType == Float.TYPE)
-                    {
-                        float[] componentArray = (float[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else if(componentType == Double.TYPE)
-                    {
-                        double[] componentArray = (double[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else if(componentType == Character.TYPE)
-                    {
-                        char[] componentArray = (char[]) o;
-                        componentEncoding = 
arrayType.getUnderlyingEncoding(componentArray);
-                        componentCount = componentArray.length;
-                    }
-                    else
-                    {
-                        throw new IllegalArgumentException("Cannot encode 
arrays of type " + componentType.getName());
-                    }
-
-                    size +=  componentEncoding.getConstructorSize()
-                                + componentEncoding.getValueSize(null) * 
componentCount;
-
-                }
-                else
-                {
-                    size += encoder.getValueSize(o);
-                }
-            }
-        }
-
-        return size;
-    }
-
-    public ArrayEncoding getCanonicalEncoding()
-    {
-        return _arrayEncoding;
-    }
-
-    public Collection<ArrayEncoding> getAllEncodings()
-    {
-        return Arrays.asList(_shortArrayEncoding, _arrayEncoding);
-    }
-
-    public void write(final Object[] val)
-    {
-        ArrayEncoding encoding = getEncoding(val);
-        encoding.writeConstructor();
-        encoding.writeValue(val);
-    }
-
-    public void write(boolean[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final boolean[] a)
-    {
-        return a.length < 254 || a.length <= 255 && allSameValue(a) ? 
_shortArrayEncoding : _arrayEncoding;
-    }
-
-    private boolean allSameValue(final boolean[] a)
-    {
-        boolean val = a[0];
-        for(int i = 1; i < a.length; i++)
-        {
-            if(val != a[i])
-            {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public void write(byte[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final byte[] a)
-    {
-        return a.length < 254 ? _shortArrayEncoding : _arrayEncoding;
-    }
-
-    public void write(short[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final short[] a)
-    {
-        return a.length < 127 ? _shortArrayEncoding : _arrayEncoding;
-    }
-
-    public void write(int[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final int[] a)
-    {
-        return a.length < 63 || (a.length < 254 && allSmallInts(a)) ? 
_shortArrayEncoding : _arrayEncoding;
-    }
-
-    private boolean allSmallInts(final int[] a)
-    {
-        for(int i = 0; i < a.length; i++)
-        {
-            if(a[i] < -128 || a[i] > 127)
-            {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public void write(long[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final long[] a)
-    {
-        return a.length < 31 || (a.length < 254 && allSmallLongs(a)) ? 
_shortArrayEncoding : _arrayEncoding;
-    }
-
-    private boolean allSmallLongs(final long[] a)
-    {
-        for(int i = 0; i < a.length; i++)
-        {
-            if(a[i] < -128L || a[i] > 127L)
-            {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public void write(float[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final float[] a)
-    {
-        return a.length < 63 ? _shortArrayEncoding : _arrayEncoding;
-    }
-
-    public void write(double[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final double[] a)
-    {
-        return a.length < 31 ? _shortArrayEncoding : _arrayEncoding;
-    }
-
-    public void write(char[] a)
-    {
-        ArrayEncoding encoding = getEncoding(a);
-        encoding.writeConstructor();
-        encoding.writeValue(a);
-    }
-
-    private ArrayEncoding getEncoding(final char[] a)
-    {
-        return a.length < 63 ? _shortArrayEncoding : _arrayEncoding;
-    }
-
-    private class AllArrayEncoding
-            extends LargeFloatingSizePrimitiveTypeEncoding<Object[]>
-            implements ArrayEncoding
-    {
-
-        private Object[] _val;
-        private TypeEncoding _underlyingEncoder;
-        private int _size;
-
-        AllArrayEncoding(final EncoderImpl encoder, final DecoderImpl decoder)
-        {
-            super(encoder, decoder);
-        }
-
-        public void writeValue(final boolean[] a)
-        {
-            BooleanType.BooleanEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(boolean b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-
-        }
-
-        public void writeValue(final byte[] a)
-        {
-            ByteType.ByteEncoding underlyingEncoder = getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(byte b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final short[] a)
-        {
-            ShortType.ShortEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(short b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final int[] a)
-        {
-
-            IntegerType.IntegerEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(int b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final long[] a)
-        {
-
-            LongType.LongEncoding underlyingEncoder = getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(long b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final float[] a)
-        {
-
-            FloatType.FloatEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(float b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final double[] a)
-        {
-
-            DoubleType.DoubleEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(double b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final char[] a)
-        {
-
-            CharacterType.CharacterEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw(4 + underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null));
-            getEncoder().writeRaw(a.length);
-            underlyingEncoder.writeConstructor();
-            for(char b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void setValue(final Object[] val, final TypeEncoding encoder, 
final int size)
-        {
-            _val = val;
-            _underlyingEncoder = encoder;
-            _size = size;
-        }
-
-        @Override
-        protected void writeEncodedValue(final Object[] val)
-        {
-            TypeEncoding underlyingEncoder;
-
-            if(_val != val)
-            {
-                _val = val;
-                _underlyingEncoder = underlyingEncoder = calculateEncoder(val, 
getEncoder());
-                _size =  calculateSize(val, underlyingEncoder);
-            }
-            else
-            {
-                underlyingEncoder = _underlyingEncoder;
-            }
-            getEncoder().writeRaw(val.length);
-            underlyingEncoder.writeConstructor();
-            for(Object o : val)
-            {
-                underlyingEncoder.writeValue(o);
-            }
-        }
-
-        @Override
-        protected int getEncodedValueSize(final Object[] val)
-        {
-            if(_val != val)
-            {
-                _val = val;
-                _underlyingEncoder = calculateEncoder(val, getEncoder());
-                _size = calculateSize(val, _underlyingEncoder);
-            }
-            return 4 + _size;
-        }
-
-        @Override
-        public byte getEncodingCode()
-        {
-            return EncodingCodes.ARRAY32;
-        }
-
-        public ArrayType getType()
-        {
-            return ArrayType.this;
-        }
-
-        public boolean encodesSuperset(final TypeEncoding<Object[]> encoding)
-        {
-            return getType() == encoding.getType();
-        }
-
-        public Object[] readValue()
-        {
-            DecoderImpl decoder = getDecoder();
-            int size = decoder.readRawInt();
-            int count = decoder.readRawInt();
-            return decodeArray(decoder, count);
-        }
-
-        public Object readValueArray()
-        {
-            DecoderImpl decoder = getDecoder();
-            int size = decoder.readRawInt();
-            int count = decoder.readRawInt();
-            return decodeArrayAsObject(decoder, count);
-        }
-
-
-
-    }
-
-
-
-    private class ShortArrayEncoding
-            extends SmallFloatingSizePrimitiveTypeEncoding<Object[]>
-            implements ArrayEncoding
-    {
-
-        private Object[] _val;
-        private TypeEncoding _underlyingEncoder;
-        private int _size;
-
-        ShortArrayEncoding(final EncoderImpl encoder, final DecoderImpl 
decoder)
-        {
-            super(encoder, decoder);
-        }
-
-        public void writeValue(final boolean[] a)
-        {
-            BooleanType.BooleanEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(boolean b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-
-        }
-
-        public void writeValue(final byte[] a)
-        {
-            ByteType.ByteEncoding underlyingEncoder = getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(byte b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final short[] a)
-        {
-            ShortType.ShortEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(short b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final int[] a)
-        {
-
-            IntegerType.IntegerEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(int b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final long[] a)
-        {
-
-            LongType.LongEncoding underlyingEncoder = getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(long b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final float[] a)
-        {
-
-            FloatType.FloatEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(float b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final double[] a)
-        {
-
-            DoubleType.DoubleEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(double b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void writeValue(final char[] a)
-        {
-
-            CharacterType.CharacterEncoding underlyingEncoder = 
getUnderlyingEncoding(a);
-            getEncoder().writeRaw((byte)(1 + 
underlyingEncoder.getConstructorSize()
-                                  + 
a.length*underlyingEncoder.getValueSize(null)));
-            getEncoder().writeRaw((byte)a.length);
-            underlyingEncoder.writeConstructor();
-            for(char b : a)
-            {
-                underlyingEncoder.writeValue(b);
-            }
-        }
-
-        public void setValue(final Object[] val, final TypeEncoding encoder, 
final int size)
-        {
-            _val = val;
-            _underlyingEncoder = encoder;
-            _size = size;
-        }
-
-        @Override
-        protected void writeEncodedValue(final Object[] val)
-        {
-            TypeEncoding underlyingEncoder;
-
-            if(_val != val)
-            {
-                _val = val;
-                _underlyingEncoder = underlyingEncoder = calculateEncoder(val, 
getEncoder());
-                _size =  calculateSize(val, underlyingEncoder);
-            }
-            else
-            {
-                underlyingEncoder = _underlyingEncoder;
-            }
-            getEncoder().writeRaw((byte)val.length);
-            underlyingEncoder.writeConstructor();
-            for(Object o : val)
-            {
-                if(o.getClass().isArray() && 
o.getClass().getComponentType().isPrimitive())
-                {
-                    ArrayEncoding arrayEncoding = (ArrayEncoding) 
underlyingEncoder;
-                    ArrayType arrayType = (ArrayType) arrayEncoding.getType();
-
-                    Class componentType = o.getClass().getComponentType();
-
-                    if(componentType == Boolean.TYPE)
-                    {
-                        boolean[] componentArray = (boolean[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else if(componentType == Byte.TYPE)
-                    {
-                        byte[] componentArray = (byte[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else if(componentType == Short.TYPE)
-                    {
-                        short[] componentArray = (short[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else if(componentType == Integer.TYPE)
-                    {
-                        int[] componentArray = (int[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else if(componentType == Long.TYPE)
-                    {
-                        long[] componentArray = (long[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else if(componentType == Float.TYPE)
-                    {
-                        float[] componentArray = (float[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else if(componentType == Double.TYPE)
-                    {
-                        double[] componentArray = (double[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else if(componentType == Character.TYPE)
-                    {
-                        char[] componentArray = (char[]) o;
-                        arrayEncoding.writeValue(componentArray);
-                    }
-                    else
-                    {
-                        throw new IllegalArgumentException("Cannot encode 
arrays of type " + componentType.getName());
-                    }
-
-                }
-                else
-                {
-                    underlyingEncoder.writeValue(o);
-                }
-            }
-        }
-
-        @Override
-        protected int getEncodedValueSize(final Object[] val)
-        {
-            if(_val != val)
-            {
-                _val = val;
-                _underlyingEncoder = calculateEncoder(val, getEncoder());
-                _size = calculateSize(val, _underlyingEncoder);
-            }
-            return 1 + _size;
-        }
-
-        @Override
-        public byte getEncodingCode()
-        {
-            return EncodingCodes.ARRAY8;
-        }
-
-        public ArrayType getType()
-        {
-            return ArrayType.this;
-        }
-
-        public boolean encodesSuperset(final TypeEncoding<Object[]> encoding)
-        {
-            return getType() == encoding.getType();
-        }
-
-        public Object[] readValue()
-        {
-            DecoderImpl decoder = getDecoder();
-            int size = ((int)decoder.readRawByte()) & 0xFF;
-            int count = ((int)decoder.readRawByte()) & 0xFF;
-            return decodeArray(decoder, count);
-        }
-
-        public Object readValueArray()
-        {
-            DecoderImpl decoder = getDecoder();
-            int size = ((int)decoder.readRawByte()) & 0xFF;
-            int count = ((int)decoder.readRawByte()) & 0xFF;
-            return decodeArrayAsObject(decoder, count);
-        }
-
-    }
-
-    private BooleanType.BooleanEncoding getUnderlyingEncoding(final boolean[] 
a)
-    {
-        if(a.length == 0)
-        {
-            return _booleanType.getCanonicalEncoding();
-        }
-        else
-        {
-            boolean val = a[0];
-            for(int i = 1; i < a.length; i++)
-            {
-                if(val != a[i])
-                {
-                    return _booleanType.getCanonicalEncoding();
-                }
-            }
-            return _booleanType.getEncoding(val);
-        }
-    }
-
-
-    private ByteType.ByteEncoding getUnderlyingEncoding(final byte[] a)
-    {
-        return _byteType.getCanonicalEncoding();
-    }
-
-
-    private ShortType.ShortEncoding getUnderlyingEncoding(final short[] a)
-    {
-        return _shortType.getCanonicalEncoding();
-    }
-
-    private IntegerType.IntegerEncoding getUnderlyingEncoding(final int[] a)
-    {
-        if(a.length == 0 || !allSmallInts(a))
-        {
-            return _integerType.getCanonicalEncoding();
-        }
-        else
-        {
-            return _integerType.getEncoding(a[0]);
-        }
-    }
-
-    private LongType.LongEncoding getUnderlyingEncoding(final long[] a)
-    {
-        if(a.length == 0 || !allSmallLongs(a))
-        {
-            return _longType.getCanonicalEncoding();
-        }
-        else
-        {
-            return _longType.getEncoding(a[0]);
-        }
-    }
-
-
-    private FloatType.FloatEncoding getUnderlyingEncoding(final float[] a)
-    {
-        return _floatType.getCanonicalEncoding();
-    }
-
-
-    private DoubleType.DoubleEncoding getUnderlyingEncoding(final double[] a)
-    {
-        return _doubleType.getCanonicalEncoding();
-    }
-
-
-    private CharacterType.CharacterEncoding getUnderlyingEncoding(final char[] 
a)
-    {
-        return _characterType.getCanonicalEncoding();
-    }
-
-    private static Object[] decodeArray(final DecoderImpl decoder, final int 
count)
-    {
-        TypeConstructor constructor = decoder.readConstructor();
-        return decodeNonPrimitive(decoder, constructor, count);
-    }
-
-    private static Object[] decodeNonPrimitive(final DecoderImpl decoder,
-                                               final TypeConstructor 
constructor,
-                                               final int count)
-    {
-        if (count > decoder.getByteBufferRemaining()) {
-            throw new IllegalArgumentException("Array element count "+count+" 
is specified to be greater than the amount of data available ("+
-                                               
decoder.getByteBufferRemaining()+")");
-        }
-
-        if(constructor instanceof ArrayEncoding)
-        {
-            ArrayEncoding arrayEncoding = (ArrayEncoding) constructor;
-
-            Object[] array = new Object[count];
-            for(int i = 0; i < count; i++)
-            {
-                array[i] = arrayEncoding.readValueArray();
-            }
-
-            return array;
-        }
-        else
-        {
-            Object[] array = (Object[]) 
Array.newInstance(constructor.getTypeClass(), count);
-
-            for(int i = 0; i < count; i++)
-            {
-                array[i] = constructor.readValue();
-            }
-
-            return array;
-        }
-    }
-
-    private static Object decodeArrayAsObject(final DecoderImpl decoder, final 
int count)
-    {
-        TypeConstructor constructor = decoder.readConstructor();
-        if(constructor.encodesJavaPrimitive())
-        {
-            if (count > decoder.getByteBufferRemaining()) {
-                throw new IllegalArgumentException("Array element count 
"+count+" is specified to be greater than the amount of data available ("+
-                                                   
decoder.getByteBufferRemaining()+")");
-            }
-
-            if(constructor instanceof BooleanType.BooleanEncoding)
-            {
-                return decodeBooleanArray((BooleanType.BooleanEncoding) 
constructor, count);
-            }
-            else if(constructor instanceof ByteType.ByteEncoding)
-            {
-                return decodeByteArray((ByteType.ByteEncoding)constructor, 
count);
-            }
-            else if(constructor instanceof ShortType.ShortEncoding)
-            {
-                return decodeShortArray((ShortType.ShortEncoding)constructor, 
count);
-            }
-            else if(constructor instanceof IntegerType.IntegerEncoding)
-            {
-                return 
decodeIntArray((IntegerType.IntegerEncoding)constructor, count);
-            }
-            else if(constructor instanceof LongType.LongEncoding)
-            {
-                return decodeLongArray((LongType.LongEncoding) constructor, 
count);
-            }
-            else if(constructor instanceof FloatType.FloatEncoding)
-            {
-                return decodeFloatArray((FloatType.FloatEncoding) constructor, 
count);
-            }
-            else if(constructor instanceof DoubleType.DoubleEncoding)
-            {
-                return 
decodeDoubleArray((DoubleType.DoubleEncoding)constructor, count);
-            }
-            else
-            {
-                throw new ClassCastException("Unexpected class " + 
constructor.getClass().getName());
-            }
-
-        }
-        else
-        {
-            return decodeNonPrimitive(decoder, constructor, count);
-        }
-
-    }
-
-    private static boolean[] decodeBooleanArray(BooleanType.BooleanEncoding 
constructor, final int count)
-    {
-        boolean[] array = new boolean[count];
-
-        for(int i = 0; i < count; i++)
-        {
-            array[i] = constructor.readPrimitiveValue();
-        }
-
-        return array;
-    }
-
-    private static byte[] decodeByteArray(ByteType.ByteEncoding constructor , 
final int count)
-    {
-        byte[] array = new byte[count];
-
-        for(int i = 0; i < count; i++)
-        {
-            array[i] = constructor.readPrimitiveValue();
-        }
-
-        return array;
-    }
-
-    private static short[] decodeShortArray(ShortType.ShortEncoding 
constructor, final int count)
-    {
-        short[] array = new short[count];
-
-        for(int i = 0; i < count; i++)
-        {
-            array[i] = constructor.readPrimitiveValue();
-        }
-
-        return array;
-    }
-
-    private static int[] decodeIntArray(IntegerType.IntegerEncoding 
constructor, final int count)
-    {
-        int[] array = new int[count];
-
-        for(int i = 0; i < count; i++)
-        {
-            array[i] = constructor.readPrimitiveValue();
-        }
-
-        return array;
-    }
-
-
-    private static long[] decodeLongArray(LongType.LongEncoding constructor, 
final int count)
-    {
-        long[] array = new long[count];
-
-        for(int i = 0; i < count; i++)
-        {
-            array[i] = constructor.readPrimitiveValue();
-        }
-
-        return array;
-    }
-
-    private static float[] decodeFloatArray(FloatType.FloatEncoding 
constructor, final int count)
-    {
-        float[] array = new float[count];
-
-        for(int i = 0; i < count; i++)
-        {
-            array[i] = constructor.readPrimitiveValue();
-        }
-
-        return array;
-    }
-
-    private static double[] decodeDoubleArray(DoubleType.DoubleEncoding 
constructor, final int count)
-    {
-        double[] array = new double[count];
-
-        for(int i = 0; i < count; i++)
-        {
-            array[i] = constructor.readPrimitiveValue();
-        }
-
-        return array;
-    }
-
-
-
-
-}
-

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/BigIntegerType.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/BigIntegerType.java 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/BigIntegerType.java
deleted file mode 100644
index f74e80b..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/BigIntegerType.java
+++ /dev/null
@@ -1,196 +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.proton.codec;
-
-import java.math.BigInteger;
-import java.util.Arrays;
-import java.util.Collection;
-
-public class BigIntegerType extends AbstractPrimitiveType<BigInteger> {
-
-    public static interface BigIntegerEncoding extends 
PrimitiveTypeEncoding<BigInteger>
-    {
-        void write(BigInteger l);
-        void writeValue(BigInteger l);
-        public BigInteger readPrimitiveValue();
-    }
-
-    private static final BigInteger BIG_BYTE_MIN = 
BigInteger.valueOf(Byte.MIN_VALUE);
-    private static final BigInteger BIG_BYTE_MAX = 
BigInteger.valueOf(Byte.MAX_VALUE);
-    private static final BigInteger BIG_LONG_MIN = 
BigInteger.valueOf(Long.MIN_VALUE);;
-    private static final BigInteger BIG_LONG_MAX = 
BigInteger.valueOf(Long.MAX_VALUE);;
-
-    private BigIntegerEncoding _BigIntegerEncoding;
-    private BigIntegerEncoding _smallBigIntegerEncoding;
-
-    BigIntegerType(final EncoderImpl encoder, final DecoderImpl decoder)
-    {
-        _BigIntegerEncoding = new AllBigIntegerEncoding(encoder, decoder);
-        _smallBigIntegerEncoding = new SmallBigIntegerEncoding(encoder, 
decoder);
-        encoder.register(BigInteger.class, this);
-    }
-
-    public Class<BigInteger> getTypeClass()
-    {
-        return BigInteger.class;
-    }
-
-    public BigIntegerEncoding getEncoding(final BigInteger l)
-    {
-        return (l.compareTo(BIG_BYTE_MIN) >= 0 && l.compareTo(BIG_BYTE_MAX) <= 
0) ? _smallBigIntegerEncoding : _BigIntegerEncoding;
-    }
-
-
-    public BigIntegerEncoding getCanonicalEncoding()
-    {
-        return _BigIntegerEncoding;
-    }
-
-    public Collection<BigIntegerEncoding> getAllEncodings()
-    {
-        return Arrays.asList(_smallBigIntegerEncoding, _BigIntegerEncoding);
-    }
-
-    private long longValueExact(final BigInteger val) {
-        if (val.compareTo(BIG_LONG_MIN) < 0 || val.compareTo(BIG_LONG_MAX) > 
0) {
-            throw new ArithmeticException("cannot encode BigInteger not 
representable as long");
-        }
-        return val.longValue();
-    }
-
-    private class AllBigIntegerEncoding extends 
FixedSizePrimitiveTypeEncoding<BigInteger> implements BigIntegerEncoding
-    {
-
-        public AllBigIntegerEncoding(final EncoderImpl encoder, final 
DecoderImpl decoder)
-        {
-            super(encoder, decoder);
-        }
-
-        @Override
-        protected int getFixedSize()
-        {
-            return 8;
-        }
-
-        @Override
-        public byte getEncodingCode()
-        {
-            return EncodingCodes.LONG;
-        }
-
-        public BigIntegerType getType()
-        {
-            return BigIntegerType.this;
-        }
-
-        public void writeValue(final BigInteger val)
-        {
-            getEncoder().writeRaw(longValueExact(val));
-        }
-        
-        public void write(final BigInteger l)
-        {
-            writeConstructor();
-            getEncoder().writeRaw(longValueExact(l));
-            
-        }
-
-        public boolean encodesSuperset(final TypeEncoding<BigInteger> encoding)
-        {
-            return (getType() == encoding.getType());
-        }
-
-        public BigInteger readValue()
-        {
-            return readPrimitiveValue();
-        }
-
-        public BigInteger readPrimitiveValue()
-        {
-            return BigInteger.valueOf(getDecoder().readLong());
-        }
-
-
-        @Override
-        public boolean encodesJavaPrimitive()
-        {
-            return true;
-        }
-    }
-
-    private class SmallBigIntegerEncoding  extends 
FixedSizePrimitiveTypeEncoding<BigInteger> implements BigIntegerEncoding
-    {
-        public SmallBigIntegerEncoding(final EncoderImpl encoder, final 
DecoderImpl decoder)
-        {
-            super(encoder, decoder);
-        }
-
-        @Override
-        public byte getEncodingCode()
-        {
-            return EncodingCodes.SMALLLONG;
-        }
-
-        @Override
-        protected int getFixedSize()
-        {
-            return 1;
-        }
-
-        public void write(final BigInteger l)
-        {
-            writeConstructor();
-            getEncoder().writeRaw(l.byteValue());
-        }
-
-        public BigInteger readPrimitiveValue()
-        {
-            return BigInteger.valueOf(getDecoder().readRawByte());
-        }
-
-        public BigIntegerType getType()
-        {
-            return BigIntegerType.this;
-        }
-
-        public void writeValue(final BigInteger val)
-        {
-            getEncoder().writeRaw(val.byteValue());
-        }
-
-        public boolean encodesSuperset(final TypeEncoding<BigInteger> encoder)
-        {
-            return encoder == this;
-        }
-
-        public BigInteger readValue()
-        {
-            return readPrimitiveValue();
-        }
-
-
-        @Override
-        public boolean encodesJavaPrimitive()
-        {
-            return true;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/main/java/org/apache/qpid/proton/codec/BinaryType.java
----------------------------------------------------------------------
diff --git 
a/proton-j/src/main/java/org/apache/qpid/proton/codec/BinaryType.java 
b/proton-j/src/main/java/org/apache/qpid/proton/codec/BinaryType.java
deleted file mode 100644
index 88c204f..0000000
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/BinaryType.java
+++ /dev/null
@@ -1,167 +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.proton.codec;
-
-import org.apache.qpid.proton.amqp.Binary;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-public class BinaryType extends AbstractPrimitiveType<Binary>
-{
-    private final BinaryEncoding _binaryEncoding;
-    private final BinaryEncoding _shortBinaryEncoding;
-
-    private static interface BinaryEncoding extends 
PrimitiveTypeEncoding<Binary>
-    {
-
-    }
-
-    BinaryType(final EncoderImpl encoder, final DecoderImpl decoder)
-    {
-        _binaryEncoding = new LongBinaryEncoding(encoder, decoder);
-        _shortBinaryEncoding = new ShortBinaryEncoding(encoder, decoder);
-        encoder.register(Binary.class, this);
-        decoder.register(this);
-    }
-
-    public Class<Binary> getTypeClass()
-    {
-        return Binary.class;
-    }
-
-    public BinaryEncoding getEncoding(final Binary val)
-    {
-        return val.getLength() <= 255 ? _shortBinaryEncoding : _binaryEncoding;
-    }
-
-
-    public BinaryEncoding getCanonicalEncoding()
-    {
-        return _binaryEncoding;
-    }
-
-    public Collection<BinaryEncoding> getAllEncodings()
-    {
-        return Arrays.asList(_shortBinaryEncoding, _binaryEncoding);
-    }
-
-    private class LongBinaryEncoding
-            extends LargeFloatingSizePrimitiveTypeEncoding<Binary>
-            implements BinaryEncoding
-    {
-
-        public LongBinaryEncoding(final EncoderImpl encoder, final DecoderImpl 
decoder)
-        {
-            super(encoder, decoder);
-        }
-
-        @Override
-        protected void writeEncodedValue(final Binary val)
-        {
-            getEncoder().writeRaw(val.getArray(), val.getArrayOffset(), 
val.getLength());
-        }
-
-        @Override
-        protected int getEncodedValueSize(final Binary val)
-        {
-            return val.getLength();
-        }
-
-
-        @Override
-        public byte getEncodingCode()
-        {
-            return EncodingCodes.VBIN32;
-        }
-
-        public BinaryType getType()
-        {
-            return BinaryType.this;
-        }
-
-        public boolean encodesSuperset(final TypeEncoding<Binary> encoding)
-        {
-            return (getType() == encoding.getType());
-        }
-
-        public Binary readValue()
-        {
-            final DecoderImpl decoder = getDecoder();
-            int size = decoder.readRawInt();
-            if (size > decoder.getByteBufferRemaining()) {
-                throw new IllegalArgumentException("Binary data size "+size+" 
is specified to be greater than the amount of data available ("+
-                                                   
decoder.getByteBufferRemaining()+")");
-            }
-            byte[] data = new byte[size];
-            decoder.readRaw(data, 0, size);
-            return new Binary(data);
-        }
-    }
-
-    private class ShortBinaryEncoding
-            extends SmallFloatingSizePrimitiveTypeEncoding<Binary>
-            implements BinaryEncoding
-    {
-
-        public ShortBinaryEncoding(final EncoderImpl encoder, final 
DecoderImpl decoder)
-        {
-            super(encoder, decoder);
-        }
-
-        @Override
-        protected void writeEncodedValue(final Binary val)
-        {
-            getEncoder().writeRaw(val.getArray(), val.getArrayOffset(), 
val.getLength());
-        }
-
-        @Override
-        protected int getEncodedValueSize(final Binary val)
-        {
-            return val.getLength();
-        }
-
-
-        @Override
-        public byte getEncodingCode()
-        {
-            return EncodingCodes.VBIN8;
-        }
-
-        public BinaryType getType()
-        {
-            return BinaryType.this;
-        }
-
-        public boolean encodesSuperset(final TypeEncoding<Binary> encoder)
-        {
-            return encoder == this;
-        }
-
-        public Binary readValue()
-        {
-            int size = ((int)getDecoder().readRawByte()) & 0xff;
-            byte[] data = new byte[size];
-            getDecoder().readRaw(data, 0, size);
-            return new Binary(data);
-        }
-    }
-}


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

Reply via email to