You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2012/03/10 10:48:56 UTC
svn commit: r1299173 [1/10] - in /qpid/proton/proton-j: ./ codec/ codec/src/
codec/src/org/ codec/src/org/apache/ codec/src/org/apache/qpid/
codec/src/org/apache/qpid/proton/ codec/src/org/apache/qpid/proton/codec/
codec/src/org/apache/qpid/proton/fram...
Author: rgodfrey
Date: Sat Mar 10 09:48:50 2012
New Revision: 1299173
URL: http://svn.apache.org/viewvc?rev=1299173&view=rev
Log:
Initial commit of proton-j code
Added:
qpid/proton/proton-j/
qpid/proton/proton-j/build.xml
qpid/proton/proton-j/codec/
qpid/proton/proton-j/codec/build.xml
qpid/proton/proton-j/codec/src/
qpid/proton/proton-j/codec/src/org/
qpid/proton/proton-j/codec/src/org/apache/
qpid/proton/proton-j/codec/src/org/apache/qpid/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AMQPType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ArrayType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BinaryType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BooleanType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferDecoder.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferEncoder.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/CharacterType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/Decimal128Type.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/Decimal32Type.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/Decimal64Type.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/DecodeException.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/Decoder.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/DecoderImpl.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/DescribedTypeConstructor.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/DoubleType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/DynamicDescribedType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/DynamicTypeConstructor.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/EncodeException.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/Encoder.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/EncoderImpl.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/EncodingCodes.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/FixedSizePrimitiveTypeEncoding.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/FloatType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/FloatingSizePrimitiveTypeEncoding.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/IntegerType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/LargeFloatingSizePrimitiveTypeEncoding.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ListType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/LongType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/MapType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/NullType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/PrimitiveType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/PrimitiveTypeEncoding.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ShortType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/SmallFloatingSizePrimitiveTypeEncoding.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/StringType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/SymbolType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/TimestampType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/TypeConstructor.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/TypeEncoding.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/UUIDType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/UnsignedByteType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/UnsignedIntegerType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/UnsignedLongType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/UnsignedShortType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/framing/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/framing/TransportFrame.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/AMQPDefinedTypes.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/Binary.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/Decimal128.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/Decimal32.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/Decimal64.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/DescribedType.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/Symbol.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/UnsignedByte.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/UnsignedInteger.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/UnsignedLong.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/UnsignedShort.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Accepted.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/AmqpSequence.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/AmqpValue.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/ApplicationProperties.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Data.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/DeleteOnClose.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/DeleteOnNoLinks.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/DeleteOnNoLinksOrMessages.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/DeleteOnNoMessages.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/DeliveryAnnotations.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Footer.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Header.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/LifetimePolicy.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/MessageAnnotations.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Modified.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Outcome.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Properties.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Received.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Rejected.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Released.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Section.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Source.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/StdDistMode.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/Target.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/TerminusDurability.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/messaging/TerminusExpiryPolicy.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/package-info.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/SaslChallenge.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/SaslCode.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/SaslFrameBody.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/SaslInit.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/SaslMechanisms.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/SaslOutcome.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/security/SaslResponse.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/Coordinator.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/Declare.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/Declared.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/Discharge.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/GlobalTxId.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/TransactionErrors.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/TransactionalState.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transaction/TxnCapability.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/AmqpError.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Attach.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Begin.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Close.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/ConnectionError.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/DeliveryState.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Detach.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Disposition.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/End.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Error.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Flow.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/FrameBody.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/LinkError.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Open.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/ReceiverSettleMode.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Role.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/SenderSettleMode.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/SessionError.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Source.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Target.java
qpid/proton/proton-j/codec/src/org/apache/qpid/proton/type/transport/Transfer.java
qpid/proton/proton-j/common.xml
qpid/proton/proton-j/driver/
qpid/proton/proton-j/driver/build.xml
qpid/proton/proton-j/driver/src/
qpid/proton/proton-j/driver/src/org/
qpid/proton/proton-j/driver/src/org/apache/
qpid/proton/proton-j/driver/src/org/apache/qpid/
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/Application.java
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/ApplicationFactory.java
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/BytesTransport.java
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/ConnectionTransport.java
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/DelegatingTransport.java
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/NIOAcceptingDriver.java
qpid/proton/proton-j/driver/src/org/apache/qpid/proton/driver/NoddyBrokerApplication.java
qpid/proton/proton-j/engine/
qpid/proton/proton-j/engine/build.xml
qpid/proton/proton-j/engine/src/
qpid/proton/proton-j/engine/src/org/
qpid/proton/proton-j/engine/src/org/apache/
qpid/proton/proton-j/engine/src/org/apache/qpid/
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Accepted.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Connection.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Delivery.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/DeliveryBuffer.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/DeliveryState.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Endpoint.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/EndpointError.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/EndpointState.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Link.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Modified.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Outcome.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Received.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Receiver.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Rejected.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Released.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Sender.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Sequence.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Session.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/Transport.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/AmqpErrorException.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/ArraySequence.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/ConcatenatedSequence.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/ConnectionImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/DeliveryImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/EndpointImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/EndpointSelectionSequence.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/FrameParser.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/IteratorSequence.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/LinkImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/ReceiverImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/SelectiveSequence.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/SenderImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/SessionImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportDelivery.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportFactory.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportFactoryImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportLink.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportReceiver.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportSender.java
qpid/proton/proton-j/engine/src/org/apache/qpid/proton/engine/impl/TransportSession.java
qpid/proton/proton-j/module.xml
qpid/proton/proton-j/resources/
qpid/proton/proton-j/tasks/
qpid/proton/proton-j/tasks/src/
qpid/proton/proton-j/tasks/src/org/
qpid/proton/proton-j/tasks/src/org/apache/
qpid/proton/proton-j/tasks/src/org/apache/qpid/
qpid/proton/proton-j/tasks/src/org/apache/qpid/tasks/
qpid/proton/proton-j/tasks/src/org/apache/qpid/tasks/BaseTask.java
qpid/proton/proton-j/tasks/src/org/apache/qpid/tasks/Foreach.java
qpid/proton/proton-j/tasks/src/org/apache/qpid/tasks/Map.java
qpid/proton/proton-j/tasks/src/org/apache/qpid/tasks/PropertyMapper.java
qpid/proton/proton-j/tasks/src/org/apache/qpid/tasks/Require.java
Added: qpid/proton/proton-j/build.xml
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/build.xml?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/build.xml (added)
+++ qpid/proton/proton-j/build.xml Sat Mar 10 09:48:50 2012
@@ -0,0 +1,168 @@
+<!--
+ -
+ - 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.
+ -
+ -->
+<project name="Qpid AMQP 1.0" default="build">
+
+ <import file="common.xml"/>
+
+ <property name="modules.core" value="codec engine driver"/>
+ <property name="modules.opt" value=""/>
+ <property name="modules" value="${modules.core} ${modules.opt}"/>
+
+ <property name="resources" value="${project.root}/resources"/>
+
+ <map property="release.excludes" value="${modules}">
+ <globmapper from="*" to="*/\*\*"/>
+ </map>
+
+
+ <macrodef name="iterate">
+ <attribute name="target"/>
+ <attribute name="modules" default="${modules}"/>
+ <element name="elements" implicit="true" optional="true"/>
+ <sequential>
+ <subant target="@{target}" antfile="build.xml">
+ <filelist dir="." files="@{modules}"/>
+ <elements/>
+ </subant>
+ </sequential>
+ </macrodef>
+
+ <target name="compile" description="compile sources">
+ <iterate target="compile"/>
+ </target>
+
+ <target name="compile-tests" description="compile unit tests">
+ <iterate target="compile-tests"/>
+ </target>
+
+ <target name="test" description="execute tests" depends="compile">
+
+ <delete file="${build.failed}"/>
+
+ <iterate target="test">
+ <property name="test.failures.ignore" value="true"/>
+ </iterate>
+
+ <condition property="failed">
+ <available file="${build.failed}"/>
+ </condition>
+
+ <fail if="failed" message="TEST SUITE FAILED"/>
+
+ </target>
+
+ <target name="report-module" description="generate junitreport for modules">
+ <iterate target="report-module"/>
+ </target>
+
+ <target name="jar" description="create module jars">
+ <iterate target="jar"/>
+ </target>
+
+ <target name="jar-tests" description="create unit test jars">
+ <iterate target="jar-tests"/>
+ </target>
+
+ <target name="libs" description="copy dependencies into build tree">
+ <iterate target="libs"/>
+ </target>
+
+ <target name="doc" description="generate api-doc">
+ <iterate target="doc"/>
+ </target>
+
+ <target name="test-doc" description="generate api-doc">
+ <iterate target="test-doc"/>
+ </target>
+
+ <target name="bundle" description="create OSGi bundles">
+ <iterate target="bundle"/>
+ </target>
+
+ <target name="release-bin" description="build a binary release artifact" depends="build,bundle">
+ <iterate target="release-bin"/>
+ </target>
+
+
+ <target name="build" description="build the project">
+ <iterate target="build"/>
+ </target>
+
+ <target name="clean" description="remove build and release artifacts">
+ <iterate target="clean"/>
+ <delete dir="${build}"/>
+ </target>
+
+ <target name="coverage-report" description="generate coverage report" depends="cobertura-init">
+ <cobertura-merge datafile="${build.coveragereport}/cobertura.ser">
+ <!-- merge all module coverage reports -->
+ <fileset dir="${build}">
+ <include name="**/*.ser"/>
+ </fileset>
+ </cobertura-merge>
+ <cobertura-report format="xml"
+ destdir="${build.coveragereport}"
+ datafile="${build.coveragereport}/cobertura.ser"
+ >
+ <fileset dir="${project.root}/engine/src" includes="**/*.java" />
+ <fileset dir="${project.root}/codec/src" includes="**/*.java" />
+ </cobertura-report>
+ <cobertura-report format="html"
+ destdir="${build.coveragereport}"
+ datafile="${build.coveragereport}/cobertura.ser"
+ >
+ <fileset dir="${project.root}/engine/src" includes="**/*.java" />
+ <fileset dir="${project.root}/codec/src" includes="**/*.java" />
+ </cobertura-report>
+ </target>
+
+ <target name="instrument" description="instrument for artifacts">
+ <iterate target="instrument"/>
+ </target>
+
+ <target name="cover-test" description="run tests and generate coverage information" depends="build">
+ <iterate target="cover-test" modules="engine codec"/>
+ </target>
+
+ <target name="findbugs" depends="findbugs-init,build">
+
+ <mkdir dir="${build.findbugs}"/>
+
+ <findbugs home="${findbugs.dir}"
+ output="html"
+ outputFile="${build.findbugs}/report.html"
+ stylesheet="fancy-hist.xsl"
+ jvmargs="-Xmx512m"
+ projectName="Qpid">
+ <auxAnalyzePath>
+ <fileset dir="${build.lib}" includes="qpid*.jar" excludes="*test*.jar *junit*.jar *example*.jar qpid-all.jar"/>
+ </auxAnalyzePath>
+ <auxClassPath>
+ <fileset dir="${build.lib}" includes="**/*.jar" />
+ <fileset dir="${basedir}/lib" includes="org.eclipse*.jar com.ibm.*.jar"/>
+ </auxClassPath>
+ <sourcePath>
+ <fileset dir="${basedir}" includes="**/src/**/org/.." />
+ </sourcePath>
+ </findbugs>
+ </target>
+
+</project>
Added: qpid/proton/proton-j/codec/build.xml
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/build.xml?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/build.xml (added)
+++ qpid/proton/proton-j/codec/build.xml Sat Mar 10 09:48:50 2012
@@ -0,0 +1,27 @@
+<!--
+ -
+ - 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.
+ -
+ -->
+<project name="AMQP 1.0 Codec" default="build">
+
+ <property name="module.genpom" value="true"/>
+
+ <import file="../module.xml"/>
+
+</project>
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AMQPType.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AMQPType.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AMQPType.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AMQPType.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,36 @@
+/*
+ *
+ * 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);
+}
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveType.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveType.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveType.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveType.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,32 @@
+/*
+ *
+ * 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);
+ }
+
+}
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/AbstractPrimitiveTypeEncoding.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,67 @@
+/*
+ *
+ * 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;
+ }
+
+}
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ArrayType.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ArrayType.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ArrayType.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ArrayType.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,1139 @@
+/*
+ *
+ * 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(constructor, count);
+ }
+
+ private static Object[] decodeNonPrimitive(final TypeConstructor constructor,
+ final int count)
+ {
+ 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(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(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;
+ }
+
+
+
+
+}
+
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BinaryType.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BinaryType.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BinaryType.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BinaryType.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,162 @@
+/*
+ *
+ * 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.type.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()
+ {
+ int size = getDecoder().readRawInt();
+ byte[] data = new byte[size];
+ getDecoder().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);
+ }
+ }
+}
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BooleanType.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BooleanType.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BooleanType.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/BooleanType.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,273 @@
+/*
+ *
+ * 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.Arrays;
+import java.util.Collection;
+
+public final class BooleanType extends AbstractPrimitiveType<Boolean>
+{
+
+ private static final byte BYTE_0 = (byte) 0;
+ private static final byte BYTE_1 = (byte) 1;
+
+ private org.apache.qpid.proton.codec.BooleanType.BooleanEncoding _trueEncoder;
+ private org.apache.qpid.proton.codec.BooleanType.BooleanEncoding _falseEncoder;
+ private org.apache.qpid.proton.codec.BooleanType.BooleanEncoding _booleanEncoder;
+
+ public static interface BooleanEncoding extends PrimitiveTypeEncoding<Boolean>
+ {
+ void write(boolean b);
+ void writeValue(boolean b);
+
+ boolean readPrimitiveValue();
+ }
+
+ BooleanType(final EncoderImpl encoder, final DecoderImpl decoder)
+ {
+ _trueEncoder = new TrueEncoding(encoder, decoder);
+ _falseEncoder = new FalseEncoding(encoder, decoder);
+ _booleanEncoder = new AllBooleanEncoding(encoder, decoder);
+
+ encoder.register(Boolean.class, this);
+ decoder.register(this);
+ }
+
+ public Class<Boolean> getTypeClass()
+ {
+ return Boolean.class;
+ }
+
+ public BooleanEncoding getEncoding(final Boolean val)
+ {
+ return val ? _trueEncoder : _falseEncoder;
+ }
+
+ public BooleanEncoding getEncoding(final boolean val)
+ {
+ return val ? _trueEncoder : _falseEncoder;
+ }
+
+ public void writeValue(final boolean val)
+ {
+ getEncoding(val).write(val);
+ }
+
+
+
+
+ public BooleanEncoding getCanonicalEncoding()
+ {
+ return _booleanEncoder;
+ }
+
+ public Collection<BooleanEncoding> getAllEncodings()
+ {
+ return Arrays.asList(_trueEncoder, _falseEncoder, _booleanEncoder);
+ }
+
+ private class TrueEncoding extends FixedSizePrimitiveTypeEncoding<Boolean> implements BooleanEncoding
+ {
+
+ public TrueEncoding(final EncoderImpl encoder, final DecoderImpl decoder)
+ {
+ super(encoder, decoder);
+ }
+
+ @Override
+ protected int getFixedSize()
+ {
+ return 0;
+ }
+
+ @Override
+ public byte getEncodingCode()
+ {
+ return EncodingCodes.BOOLEAN_TRUE;
+ }
+
+ public BooleanType getType()
+ {
+ return BooleanType.this;
+ }
+
+ public void writeValue(final Boolean val)
+ {
+ }
+
+ public void write(final boolean b)
+ {
+ writeConstructor();
+ }
+
+ public void writeValue(final boolean b)
+ {
+ }
+
+ public boolean encodesSuperset(final TypeEncoding<Boolean> encoding)
+ {
+ return encoding == this;
+ }
+
+ public Boolean readValue()
+ {
+ return Boolean.TRUE;
+ }
+
+ public boolean readPrimitiveValue()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean encodesJavaPrimitive()
+ {
+ return true;
+ }
+ }
+
+
+ private class FalseEncoding extends FixedSizePrimitiveTypeEncoding<Boolean> implements org.apache.qpid.proton.codec.BooleanType.BooleanEncoding
+ {
+
+ public FalseEncoding(final EncoderImpl encoder, final DecoderImpl decoder)
+ {
+ super(encoder, decoder);
+ }
+
+ @Override
+ protected int getFixedSize()
+ {
+ return 0;
+ }
+
+ @Override
+ public byte getEncodingCode()
+ {
+ return EncodingCodes.BOOLEAN_FALSE;
+ }
+
+ public BooleanType getType()
+ {
+ return BooleanType.this;
+ }
+
+ public void writeValue(final Boolean val)
+ {
+ }
+
+ public void write(final boolean b)
+ {
+ writeConstructor();
+ }
+
+ public void writeValue(final boolean b)
+ {
+ }
+
+ public boolean readPrimitiveValue()
+ {
+ return false;
+ }
+
+ public boolean encodesSuperset(final TypeEncoding<Boolean> encoding)
+ {
+ return encoding == this;
+ }
+
+ public Boolean readValue()
+ {
+ return Boolean.FALSE;
+ }
+
+
+ @Override
+ public boolean encodesJavaPrimitive()
+ {
+ return true;
+ }
+ }
+
+ private class AllBooleanEncoding extends FixedSizePrimitiveTypeEncoding<Boolean> implements BooleanEncoding
+ {
+
+ public AllBooleanEncoding(final EncoderImpl encoder, final DecoderImpl decoder)
+ {
+ super(encoder, decoder);
+ }
+
+ public BooleanType getType()
+ {
+ return BooleanType.this;
+ }
+
+ @Override
+ protected int getFixedSize()
+ {
+ return 1;
+ }
+
+ @Override
+ public byte getEncodingCode()
+ {
+ return EncodingCodes.BOOLEAN;
+ }
+
+ public void writeValue(final Boolean val)
+ {
+ getEncoder().writeRaw(val ? BYTE_1 : BYTE_0);
+ }
+
+ public void write(final boolean val)
+ {
+ writeConstructor();
+ getEncoder().writeRaw(val ? BYTE_1 : BYTE_0);
+ }
+
+ public void writeValue(final boolean b)
+ {
+ getEncoder().writeRaw(b ? BYTE_1 : BYTE_0);
+ }
+
+ public boolean readPrimitiveValue()
+ {
+
+ return getDecoder().readRawByte() != BYTE_0;
+ }
+
+ public boolean encodesSuperset(final TypeEncoding<Boolean> encoding)
+ {
+ return (getType() == encoding.getType());
+ }
+
+ public Boolean readValue()
+ {
+ return readPrimitiveValue() ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+
+ @Override
+ public boolean encodesJavaPrimitive()
+ {
+ return true;
+ }
+ }
+}
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferDecoder.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferDecoder.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferDecoder.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferDecoder.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,28 @@
+/*
+ *
+ * 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.nio.ByteBuffer;
+
+public interface ByteBufferDecoder extends Decoder
+{
+ public void setByteBuffer(ByteBuffer buffer);
+}
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferEncoder.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferEncoder.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferEncoder.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteBufferEncoder.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,28 @@
+/*
+ *
+ * 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.nio.ByteBuffer;
+
+public interface ByteBufferEncoder extends Encoder
+{
+ public void setByteBuffer(ByteBuffer buf);
+}
Added: qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteType.java
URL: http://svn.apache.org/viewvc/qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteType.java?rev=1299173&view=auto
==============================================================================
--- qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteType.java (added)
+++ qpid/proton/proton-j/codec/src/org/apache/qpid/proton/codec/ByteType.java Sat Mar 10 09:48:50 2012
@@ -0,0 +1,129 @@
+/*
+ *
+ * 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;
+
+public class ByteType extends AbstractPrimitiveType<Byte>
+{
+ private ByteEncoding _byteEncoding;
+
+ ByteType(final EncoderImpl encoder, final DecoderImpl decoder)
+ {
+ _byteEncoding = new ByteEncoding(encoder, decoder);
+ encoder.register(Byte.class, this);
+ decoder.register(this);
+ }
+
+ public Class<Byte> getTypeClass()
+ {
+ return Byte.class;
+ }
+
+ public ByteEncoding getEncoding(final Byte val)
+ {
+ return _byteEncoding;
+ }
+
+
+ public ByteEncoding getCanonicalEncoding()
+ {
+ return _byteEncoding;
+ }
+
+ public Collection<ByteEncoding> getAllEncodings()
+ {
+ return Collections.singleton(_byteEncoding);
+ }
+
+ public void writeType(byte b)
+ {
+ _byteEncoding.write(b);
+ }
+
+
+ public class ByteEncoding extends FixedSizePrimitiveTypeEncoding<Byte>
+ {
+
+ public ByteEncoding(final EncoderImpl encoder, final DecoderImpl decoder)
+ {
+ super(encoder, decoder);
+ }
+
+ @Override
+ protected int getFixedSize()
+ {
+ return 1;
+ }
+
+ @Override
+ public byte getEncodingCode()
+ {
+ return EncodingCodes.BYTE;
+ }
+
+ public ByteType getType()
+ {
+ return ByteType.this;
+ }
+
+ public void writeValue(final Byte val)
+ {
+ getEncoder().writeRaw(val);
+ }
+
+
+ public void write(final byte val)
+ {
+ writeConstructor();
+ getEncoder().writeRaw(val);
+ }
+
+ public void writeValue(final byte val)
+ {
+ getEncoder().writeRaw(val);
+ }
+
+ public boolean encodesSuperset(final TypeEncoding<Byte> encoding)
+ {
+ return (getType() == encoding.getType());
+ }
+
+ public Byte readValue()
+ {
+ return readPrimitiveValue();
+ }
+
+ public byte readPrimitiveValue()
+ {
+ return getDecoder().readRawByte();
+ }
+
+
+ @Override
+ public boolean encodesJavaPrimitive()
+ {
+ return true;
+ }
+
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org