ACTIVEMQ6-3 Renaming Exception classes and fixing native compilation https://issues.apache.org/jira/browse/ACTIVEMQ6-3
The Native Layer has some dependencies on the Exception classes so I had to rename them now in order to fix the native dependencies Project: http://git-wip-us.apache.org/repos/asf/activemq-6/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-6/commit/1bf2e41f Tree: http://git-wip-us.apache.org/repos/asf/activemq-6/tree/1bf2e41f Diff: http://git-wip-us.apache.org/repos/asf/activemq-6/diff/1bf2e41f Branch: refs/heads/master Commit: 1bf2e41f23193b1cf53cc15163aab18ff88d1d3b Parents: fdf1a1a Author: Clebert Suconic <clebertsuco...@apache.org> Authored: Mon Nov 17 14:53:12 2014 -0500 Committer: Clebert Suconic <clebertsuco...@apache.org> Committed: Mon Nov 17 21:31:19 2014 -0500 ---------------------------------------------------------------------- .../core/ActiveMQAddressExistsException.java | 35 + .../api/core/ActiveMQAddressFullException.java | 35 + .../ActiveMQAlreadyReplicatingException.java | 35 + .../activemq/api/core/ActiveMQBuffer.java | 1084 ++++++++++++++++++ .../activemq/api/core/ActiveMQBuffers.java | 96 ++ .../core/ActiveMQClusterSecurityException.java | 32 + .../ActiveMQConnectionTimedOutException.java | 35 + .../api/core/ActiveMQDisconnectedException.java | 35 + .../api/core/ActiveMQDuplicateIdException.java | 35 + .../ActiveMQDuplicateMetaDataException.java | 35 + .../activemq/api/core/ActiveMQException.java | 76 ++ .../api/core/ActiveMQExceptionType.java | 298 +++++ .../api/core/ActiveMQIOErrorException.java | 40 + .../api/core/ActiveMQIllegalStateException.java | 36 + ...tiveMQIncompatibleClientServerException.java | 37 + ...iveMQInterceptorRejectedPacketException.java | 37 + .../core/ActiveMQInternalErrorException.java | 45 + .../api/core/ActiveMQInterruptedException.java | 27 + ...ctiveMQInvalidFilterExpressionException.java | 35 + ...tiveMQInvalidTransientQueueUseException.java | 35 + .../api/core/ActiveMQLargeMessageException.java | 35 + ...ctiveMQLargeMessageInterruptedException.java | 36 + .../api/core/ActiveMQNativeIOError.java | 35 + .../core/ActiveMQNonExistentQueueException.java | 35 + .../api/core/ActiveMQNotConnectedException.java | 35 + .../api/core/ActiveMQObjectClosedException.java | 36 + .../ActiveMQPropertyConversionException.java | 30 + .../api/core/ActiveMQQueueExistsException.java | 35 + .../api/core/ActiveMQSecurityException.java | 35 + .../core/ActiveMQSessionCreationException.java | 36 + ...iveMQTransactionOutcomeUnknownException.java | 35 + .../ActiveMQTransactionRolledBackException.java | 35 + .../api/core/ActiveMQUnBlockedException.java | 35 + .../ActiveMQUnsupportedPacketException.java | 35 + .../api/core/HornetQAddressExistsException.java | 35 - .../api/core/HornetQAddressFullException.java | 35 - .../HornetQAlreadyReplicatingException.java | 35 - .../apache/activemq/api/core/HornetQBuffer.java | 1084 ------------------ .../activemq/api/core/HornetQBuffers.java | 96 -- .../core/HornetQClusterSecurityException.java | 32 - .../HornetQConnectionTimedOutException.java | 35 - .../api/core/HornetQDisconnectedException.java | 35 - .../api/core/HornetQDuplicateIdException.java | 35 - .../core/HornetQDuplicateMetaDataException.java | 35 - .../activemq/api/core/HornetQException.java | 76 -- .../activemq/api/core/HornetQExceptionType.java | 298 ----- .../api/core/HornetQIOErrorException.java | 40 - .../api/core/HornetQIllegalStateException.java | 36 - ...ornetQIncompatibleClientServerException.java | 37 - ...rnetQInterceptorRejectedPacketException.java | 37 - .../api/core/HornetQInternalErrorException.java | 45 - .../api/core/HornetQInterruptedException.java | 27 - ...HornetQInvalidFilterExpressionException.java | 35 - ...ornetQInvalidTransientQueueUseException.java | 35 - .../api/core/HornetQLargeMessageException.java | 35 - ...HornetQLargeMessageInterruptedException.java | 36 - .../activemq/api/core/HornetQNativeIOError.java | 35 - .../core/HornetQNonExistentQueueException.java | 35 - .../api/core/HornetQNotConnectedException.java | 35 - .../api/core/HornetQObjectClosedException.java | 36 - .../HornetQPropertyConversionException.java | 30 - .../api/core/HornetQQueueExistsException.java | 35 - .../api/core/HornetQSecurityException.java | 35 - .../core/HornetQSessionCreationException.java | 36 - ...rnetQTransactionOutcomeUnknownException.java | 35 - .../HornetQTransactionRolledBackException.java | 35 - .../api/core/HornetQUnBlockedException.java | 35 - .../core/HornetQUnsupportedPacketException.java | 35 - .../core/buffers/impl/ChannelBufferWrapper.java | 40 +- .../activemq/utils/HornetQUtilBundle.java | 4 +- .../activemq/utils/PasswordMaskingUtil.java | 8 +- .../apache/activemq/utils/TypedProperties.java | 94 +- .../org/apache/activemq/utils/UTF8Util.java | 6 +- .../apache/activemq/api/core/Interceptor.java | 4 +- .../org/apache/activemq/api/core/Message.java | 72 +- .../api/core/TransportConfiguration.java | 4 +- .../api/core/client/ClientConsumer.java | 38 +- .../activemq/api/core/client/ClientMessage.java | 26 +- .../api/core/client/ClientProducer.java | 26 +- .../activemq/api/core/client/ClientSession.java | 152 +-- .../api/core/client/ClientSessionFactory.java | 34 +- .../activemq/api/core/client/ServerLocator.java | 2 +- .../api/core/client/SessionFailureListener.java | 4 +- .../core/management/HornetQServerControl.java | 6 +- .../impl/ResetLimitWrappedHornetQBuffer.java | 16 +- .../core/client/HornetQClientLogger.java | 4 +- .../core/client/HornetQClientMessageBundle.java | 96 +- .../core/client/impl/ClientConsumerImpl.java | 54 +- .../client/impl/ClientConsumerInternal.java | 20 +- .../client/impl/ClientLargeMessageImpl.java | 22 +- .../core/client/impl/ClientMessageImpl.java | 30 +- .../core/client/impl/ClientProducerCredits.java | 4 +- .../client/impl/ClientProducerCreditsImpl.java | 4 +- .../core/client/impl/ClientProducerImpl.java | 56 +- .../client/impl/ClientSessionFactoryImpl.java | 64 +- .../impl/ClientSessionFactoryInternal.java | 4 +- .../core/client/impl/ClientSessionImpl.java | 152 +-- .../core/client/impl/ClientSessionInternal.java | 18 +- .../CompressedLargeMessageControllerImpl.java | 50 +- .../core/client/impl/DelegatingSession.java | 94 +- .../client/impl/LargeMessageController.java | 12 +- .../client/impl/LargeMessageControllerImpl.java | 82 +- .../core/client/impl/ServerLocatorImpl.java | 52 +- .../core/client/impl/ServerLocatorInternal.java | 8 +- .../activemq/core/cluster/DiscoveryGroup.java | 12 +- .../activemq/core/message/BodyEncoder.java | 12 +- .../activemq/core/message/impl/MessageImpl.java | 92 +- .../core/message/impl/MessageInternal.java | 16 +- .../core/protocol/ClientPacketDecoder.java | 4 +- .../activemq/core/protocol/core/Channel.java | 6 +- .../activemq/core/protocol/core/Packet.java | 8 +- .../core/protocol/core/impl/ChannelImpl.java | 22 +- .../core/impl/HornetQClientProtocolManager.java | 36 +- .../core/impl/HornetQSessionContext.java | 86 +- .../core/protocol/core/impl/PacketDecoder.java | 4 +- .../core/protocol/core/impl/PacketImpl.java | 12 +- .../core/impl/RemotingConnectionImpl.java | 8 +- .../impl/wireformat/CheckFailoverMessage.java | 6 +- .../wireformat/CheckFailoverReplyMessage.java | 6 +- .../ClusterTopologyChangeMessage.java | 6 +- .../ClusterTopologyChangeMessage_V2.java | 6 +- .../ClusterTopologyChangeMessage_V3.java | 6 +- .../impl/wireformat/CreateQueueMessage.java | 6 +- .../impl/wireformat/CreateSessionMessage.java | 6 +- .../CreateSessionResponseMessage.java | 6 +- .../wireformat/CreateSharedQueueMessage.java | 6 +- .../wireformat/DisconnectConsumerMessage.java | 6 +- .../core/impl/wireformat/DisconnectMessage.java | 6 +- .../impl/wireformat/DisconnectMessage_V2.java | 6 +- .../wireformat/HornetQExceptionMessage.java | 18 +- .../wireformat/PacketsConfirmedMessage.java | 6 +- .../protocol/core/impl/wireformat/Ping.java | 6 +- .../impl/wireformat/ReattachSessionMessage.java | 6 +- .../ReattachSessionResponseMessage.java | 6 +- .../core/impl/wireformat/RollbackMessage.java | 6 +- .../wireformat/SessionAcknowledgeMessage.java | 6 +- .../wireformat/SessionAddMetaDataMessage.java | 6 +- .../wireformat/SessionAddMetaDataMessageV2.java | 6 +- .../wireformat/SessionBindingQueryMessage.java | 6 +- .../SessionBindingQueryResponseMessage.java | 6 +- .../wireformat/SessionConsumerCloseMessage.java | 6 +- .../SessionConsumerFlowCreditMessage.java | 6 +- .../wireformat/SessionContinuationMessage.java | 6 +- .../SessionCreateConsumerMessage.java | 6 +- .../wireformat/SessionDeleteQueueMessage.java | 6 +- .../impl/wireformat/SessionExpireMessage.java | 6 +- .../SessionForceConsumerDelivery.java | 6 +- .../SessionIndividualAcknowledgeMessage.java | 6 +- .../SessionProducerCreditsFailMessage.java | 6 +- .../SessionProducerCreditsMessage.java | 6 +- .../wireformat/SessionQueueQueryMessage.java | 6 +- .../SessionQueueQueryResponseMessage.java | 6 +- .../SessionReceiveClientLargeMessage.java | 4 +- .../SessionReceiveContinuationMessage.java | 6 +- .../wireformat/SessionReceiveLargeMessage.java | 6 +- .../impl/wireformat/SessionReceiveMessage.java | 8 +- .../SessionRequestProducerCreditsMessage.java | 6 +- .../SessionSendContinuationMessage.java | 6 +- .../wireformat/SessionSendLargeMessage.java | 6 +- .../impl/wireformat/SessionSendMessage.java | 8 +- .../wireformat/SessionXAAfterFailedMessage.java | 6 +- .../impl/wireformat/SessionXACommitMessage.java | 6 +- .../impl/wireformat/SessionXAEndMessage.java | 6 +- .../impl/wireformat/SessionXAForgetMessage.java | 6 +- .../SessionXAGetInDoubtXidsResponseMessage.java | 6 +- .../SessionXAGetTimeoutResponseMessage.java | 6 +- .../impl/wireformat/SessionXAJoinMessage.java | 6 +- .../wireformat/SessionXAPrepareMessage.java | 6 +- .../wireformat/SessionXAResponseMessage.java | 6 +- .../impl/wireformat/SessionXAResumeMessage.java | 6 +- .../wireformat/SessionXARollbackMessage.java | 6 +- .../wireformat/SessionXASetTimeoutMessage.java | 6 +- .../SessionXASetTimeoutResponseMessage.java | 6 +- .../impl/wireformat/SessionXAStartMessage.java | 6 +- .../SubscribeClusterTopologyUpdatesMessage.java | 6 +- ...ubscribeClusterTopologyUpdatesMessageV2.java | 6 +- .../activemq/core/remoting/FailureListener.java | 6 +- .../impl/netty/HornetQChannelHandler.java | 6 +- .../remoting/impl/netty/NettyConnection.java | 24 +- .../remoting/impl/netty/NettyConnector.java | 4 +- .../apache/activemq/reader/MapMessageUtil.java | 6 +- .../org/apache/activemq/reader/MessageUtil.java | 14 +- .../activemq/reader/StreamMessageUtil.java | 24 +- .../apache/activemq/reader/TextMessageUtil.java | 6 +- .../protocol/AbstractRemotingConnection.java | 16 +- .../spi/core/protocol/RemotingConnection.java | 10 +- .../spi/core/remoting/BufferDecoder.java | 6 +- .../spi/core/remoting/BufferHandler.java | 4 +- .../core/remoting/ClientProtocolManager.java | 8 +- .../activemq/spi/core/remoting/Connection.java | 10 +- .../remoting/ConnectionLifeCycleListener.java | 4 +- .../spi/core/remoting/SessionContext.java | 78 +- .../org/apache/activemq/utils/BufferHelper.java | 24 +- .../activemq/utils/ConfigurationHelper.java | 4 +- .../utils/HornetQBufferInputStream.java | 6 +- .../activemq/utils/OrderedExecutorFactory.java | 4 +- .../apache/activemq/utils/XidCodecSupport.java | 6 +- .../apache/activemq/tests/util/RandomUtil.java | 8 +- .../util/TypedPropertiesConversionTest.java | 20 +- .../activemq/util/TypedPropertiesTest.java | 8 +- .../jms/client/HornetQBytesMessage.java | 8 +- .../activemq/jms/client/HornetQConnection.java | 26 +- .../jms/client/HornetQJMSClientBundle.java | 12 +- .../activemq/jms/client/HornetQJMSProducer.java | 24 +- .../activemq/jms/client/HornetQMapMessage.java | 28 +- .../activemq/jms/client/HornetQMessage.java | 38 +- .../jms/client/HornetQMessageConsumer.java | 8 +- .../jms/client/HornetQMessageProducer.java | 8 +- .../jms/client/HornetQObjectMessage.java | 4 +- .../jms/client/HornetQQueueBrowser.java | 8 +- .../activemq/jms/client/HornetQSession.java | 46 +- .../jms/client/HornetQStreamMessage.java | 4 +- .../activemq/jms/client/HornetQTextMessage.java | 4 +- .../activemq/jms/client/JMSExceptionHelper.java | 4 +- .../jms/client/JMSMessageListenerWrapper.java | 6 +- .../activemq/jms/bridge/impl/JMSBridgeImpl.java | 12 +- .../management/impl/JMSQueueControlImpl.java | 6 +- .../management/impl/JMSTopicControlImpl.java | 4 +- .../config/PersistedConnectionFactory.java | 6 +- .../config/PersistedDestination.java | 6 +- .../jms/persistence/config/PersistedJNDI.java | 6 +- .../journal/JMSJournalStorageManagerImpl.java | 6 +- .../jms/server/HornetQJMSServerBundle.java | 22 +- .../ConnectionFactoryConfigurationImpl.java | 6 +- .../TransportConfigurationEncodingSupport.java | 10 +- .../server/impl/JMSServerConfigParserImpl.java | 4 +- .../jms/server/impl/JMSServerManagerImpl.java | 6 +- .../recovery/HornetQXAResourceWrapper.java | 16 +- .../jms/server/recovery/RecoveryDiscovery.java | 12 +- .../activemq/core/asyncio/AsynchronousFile.java | 20 +- .../core/asyncio/impl/AsynchronousFileImpl.java | 46 +- .../activemq/core/journal/EncodingSupport.java | 6 +- .../activemq/core/journal/SequentialFile.java | 10 +- .../core/journal/impl/AIOSequentialFile.java | 12 +- .../journal/impl/AIOSequentialFileFactory.java | 6 +- .../journal/impl/AbstractJournalUpdateTask.java | 14 +- .../journal/impl/AbstractSequentialFile.java | 30 +- .../impl/AbstractSequentialFileFactory.java | 4 +- .../core/journal/impl/FileWrapperJournal.java | 16 +- .../activemq/core/journal/impl/JournalBase.java | 6 +- .../core/journal/impl/JournalCompactor.java | 6 +- .../activemq/core/journal/impl/JournalImpl.java | 14 +- .../core/journal/impl/JournalTransaction.java | 4 +- .../core/journal/impl/NIOSequentialFile.java | 44 +- .../core/journal/impl/SimpleWaitIOCallback.java | 12 +- .../activemq/core/journal/impl/TimedBuffer.java | 22 +- .../impl/dataformat/ByteArrayEncoding.java | 6 +- .../impl/dataformat/JournalAddRecord.java | 4 +- .../impl/dataformat/JournalAddRecordTX.java | 4 +- .../dataformat/JournalCompleteRecordTX.java | 4 +- .../impl/dataformat/JournalDeleteRecord.java | 4 +- .../impl/dataformat/JournalDeleteRecordTX.java | 4 +- .../impl/dataformat/JournalInternalRecord.java | 4 +- .../dataformat/JournalRollbackRecordTX.java | 4 +- .../activemq/journal/HornetQJournalBundle.java | 10 +- activemq-native/README | 3 +- activemq-native/bin/libactivemqAIO64.so | Bin 0 -> 51692 bytes activemq-native/pom.xml | 4 +- .../src/main/c/JNI_AsynchronousFileImpl.cpp | 38 +- activemq-native/src/main/c/JavaUtilities.cpp | 2 +- .../org/apache/activemq/core/libaio/Native.java | 12 +- .../proton/HornetQProtonRemotingConnection.java | 8 +- .../protocol/proton/ProtonProtocolManager.java | 6 +- .../converter/jms/ServerJMSMapMessage.java | 24 +- .../proton/converter/jms/ServerJMSMessage.java | 4 +- .../converter/jms/ServerJMSStreamMessage.java | 4 +- .../core/protocol/proton/TestConversions.java | 40 +- .../protocol/openwire/DataInputWrapper.java | 4 +- .../protocol/openwire/OpenWireConnection.java | 28 +- .../openwire/OpenWireMessageConverter.java | 10 +- .../openwire/OpenWireProtocolManager.java | 6 +- .../core/protocol/openwire/OpenWireUtil.java | 8 +- .../core/protocol/stomp/StompConnection.java | 22 +- .../core/protocol/stomp/StompDecoder.java | 4 +- .../core/protocol/stomp/StompFrame.java | 12 +- .../protocol/stomp/StompProtocolManager.java | 10 +- .../core/protocol/stomp/StompSession.java | 4 +- .../stomp/VersionedStompFrameHandler.java | 6 +- .../core/protocol/stomp/v11/StompFrameV11.java | 10 +- .../core/protocol/stomp/v12/StompFrameV12.java | 10 +- .../org/apache/activemq/ra/HornetQRABundle.java | 4 +- .../apache/activemq/ra/HornetQRAProperties.java | 4 +- .../apache/activemq/ra/HornetQRAXAResource.java | 4 +- .../activemq/ra/HornetQResourceAdapter.java | 10 +- .../activemq/ra/inflow/HornetQActivation.java | 20 +- .../ra/inflow/HornetQMessageHandler.java | 10 +- .../apache/activemq/rest/HornetQRestLogger.java | 4 +- .../rest/queue/AcknowledgedQueueConsumer.java | 10 +- .../activemq/rest/queue/ConsumersResource.java | 8 +- .../apache/activemq/rest/queue/PostMessage.java | 8 +- .../activemq/rest/queue/PostMessageDupsOk.java | 4 +- .../activemq/rest/queue/QueueConsumer.java | 6 +- .../rest/queue/QueueDestinationsResource.java | 4 +- .../activemq/rest/queue/push/PushConsumer.java | 4 +- .../queue/push/PushConsumerMessageHandler.java | 8 +- .../topic/AcknowledgedSubscriptionResource.java | 4 +- .../activemq/rest/topic/PushSubscription.java | 6 +- .../rest/topic/PushSubscriptionsResource.java | 8 +- .../rest/topic/SubscriptionResource.java | 4 +- .../rest/topic/SubscriptionsResource.java | 18 +- .../rest/topic/TopicDestinationsResource.java | 4 +- .../core/config/ConfigurationUtils.java | 8 +- .../core/deployers/impl/XmlDeployer.java | 6 +- .../activemq/core/filter/impl/FilterImpl.java | 10 +- .../core/management/impl/QueueControlImpl.java | 8 +- .../apache/activemq/core/paging/impl/Page.java | 10 +- .../core/paging/impl/PageSyncTimer.java | 4 +- .../paging/impl/PageTransactionInfoImpl.java | 6 +- .../core/paging/impl/PagedMessageImpl.java | 10 +- .../config/PersistedAddressSetting.java | 6 +- .../core/persistence/config/PersistedRoles.java | 6 +- .../impl/journal/BatchingIDGenerator.java | 8 +- .../impl/journal/DescribeJournal.java | 8 +- .../impl/journal/JournalStorageManager.java | 104 +- .../impl/journal/LargeServerMessageImpl.java | 36 +- .../impl/journal/LargeServerMessageInSync.java | 4 +- .../impl/journal/OperationContextImpl.java | 8 +- .../nullpm/NullStorageLargeServerMessage.java | 4 +- .../core/postoffice/impl/PostOfficeImpl.java | 18 +- .../core/protocol/ServerPacketDecoder.java | 4 +- .../core/ServerSessionPacketHandler.java | 16 +- .../protocol/core/impl/CoreProtocolManager.java | 6 +- .../core/impl/HornetQPacketHandler.java | 18 +- .../wireformat/BackupRegistrationMessage.java | 6 +- .../BackupReplicationStartFailedMessage.java | 6 +- .../impl/wireformat/BackupRequestMessage.java | 6 +- .../impl/wireformat/BackupResponseMessage.java | 6 +- .../impl/wireformat/ClusterConnectMessage.java | 6 +- .../wireformat/ClusterConnectReplyMessage.java | 6 +- .../impl/wireformat/NodeAnnounceMessage.java | 6 +- .../core/impl/wireformat/QuorumVoteMessage.java | 8 +- .../impl/wireformat/QuorumVoteReplyMessage.java | 8 +- .../impl/wireformat/ReplicationAddMessage.java | 6 +- .../wireformat/ReplicationAddTXMessage.java | 6 +- .../wireformat/ReplicationCommitMessage.java | 6 +- .../wireformat/ReplicationDeleteMessage.java | 6 +- .../wireformat/ReplicationDeleteTXMessage.java | 6 +- .../ReplicationLargeMessageBeginMessage.java | 6 +- .../ReplicationLargeMessageEndMessage.java | 6 +- .../ReplicationLargeMessageWriteMessage.java | 6 +- .../ReplicationLiveIsStoppingMessage.java | 6 +- .../wireformat/ReplicationPageEventMessage.java | 6 +- .../wireformat/ReplicationPageWriteMessage.java | 6 +- .../wireformat/ReplicationPrepareMessage.java | 6 +- .../wireformat/ReplicationStartSyncMessage.java | 6 +- .../wireformat/ReplicationSyncFileMessage.java | 6 +- .../wireformat/ScaleDownAnnounceMessage.java | 6 +- .../core/remoting/impl/invm/InVMAcceptor.java | 4 +- .../core/remoting/impl/invm/InVMConnection.java | 20 +- .../core/remoting/impl/invm/InVMConnector.java | 4 +- .../core/remoting/impl/netty/NettyAcceptor.java | 4 +- .../impl/netty/NettyServerConnection.java | 4 +- .../server/impl/RemotingServiceImpl.java | 12 +- .../core/replication/ReplicationEndpoint.java | 10 +- .../core/replication/ReplicationManager.java | 27 +- .../core/server/HornetQMessageBundle.java | 122 +- .../core/server/HornetQServerLogger.java | 4 +- .../core/server/LargeServerMessage.java | 6 +- .../activemq/core/server/LiveNodeLocator.java | 8 +- .../activemq/core/server/NodeManager.java | 4 +- .../core/server/cluster/ClusterControl.java | 18 +- .../core/server/cluster/ClusterController.java | 4 +- .../core/server/cluster/ClusterManager.java | 10 +- .../core/server/cluster/ha/ScaleDownPolicy.java | 4 +- .../core/server/cluster/impl/BridgeImpl.java | 22 +- .../server/cluster/impl/BroadcastGroupImpl.java | 6 +- .../cluster/impl/ClusterConnectionBridge.java | 8 +- .../cluster/impl/ClusterConnectionImpl.java | 4 +- .../core/server/cluster/qourum/BooleanVote.java | 6 +- .../cluster/qourum/QuorumVoteHandler.java | 4 +- .../qourum/SharedNothingBackupQuorum.java | 12 +- .../core/server/cluster/qourum/Vote.java | 6 +- .../activemq/core/server/impl/Activation.java | 4 +- .../impl/AnyLiveNodeLocatorForReplication.java | 6 +- .../impl/AnyLiveNodeLocatorForScaleDown.java | 8 +- .../core/server/impl/ColocatedActivation.java | 8 +- .../core/server/impl/FileLockNodeManager.java | 6 +- .../core/server/impl/InVMNodeManager.java | 4 +- .../core/server/impl/LiveOnlyActivation.java | 4 +- .../NamedLiveNodeLocatorForReplication.java | 6 +- .../impl/NamedLiveNodeLocatorForScaleDown.java | 8 +- .../server/impl/NamedNodeIdNodeLocator.java | 6 +- .../core/server/impl/ReplicationError.java | 8 +- .../core/server/impl/ServerConsumerImpl.java | 14 +- .../core/server/impl/ServerSessionImpl.java | 22 +- .../impl/SharedNothingBackupActivation.java | 12 +- .../impl/SharedNothingLiveActivation.java | 26 +- .../impl/SharedStoreBackupActivation.java | 4 +- .../server/impl/TransientQueueManagerImpl.java | 4 +- .../core/settings/impl/AddressSettings.java | 6 +- .../activemq/core/transaction/Transaction.java | 4 +- .../core/transaction/impl/TransactionImpl.java | 6 +- .../spi/core/protocol/ProtocolManager.java | 6 +- .../activemq/core/filter/impl/FilterTest.java | 12 +- .../impl/ScheduledDeliveryHandlerTest.java | 70 +- .../util/CountDownSessionFailureListener.java | 8 +- .../activemq/tests/util/ServiceTestBase.java | 8 +- .../activemq/tests/util/UnitTestCase.java | 18 +- .../org/apache/activemq/tools/PrintPages.java | 6 +- .../apache/activemq/tools/XmlDataExporter.java | 16 +- activemq6-native/bin/libHornetQAIO32.so | Bin 44803 -> 0 bytes activemq6-native/bin/libHornetQAIO64.so | Bin 51969 -> 0 bytes docs/user-manual/en/ha.xml | 12 +- docs/user-manual/en/intercepting-operations.xml | 6 +- docs/user-manual/zh/ha.xml | 12 +- docs/user-manual/zh/intercepting-operations.xml | 2 +- examples/jms/interceptor/readme.html | 4 +- .../activemq/jms/example/SimpleInterceptor.java | 4 +- .../aerogear/HornetQAeroGearBundle.java | 10 +- .../vertx/IncomingVertxEventHandler.java | 4 +- .../vertx/OutgoingVertxEventHandler.java | 4 +- pom.xml | 8 +- tests/byteman-tests/pom.xml | 4 +- .../activemq/byteman/tests/BMFailoverTest.java | 14 +- .../byteman/tests/ClusteredGroupingTest.java | 10 +- .../activemq/byteman/tests/GroupingTest.java | 4 +- .../activemq/byteman/tests/MessageCopyTest.java | 6 +- tests/concurrent-tests/pom.xml | 2 +- tests/integration-tests/pom.xml | 2 +- .../integration/DuplicateDetectionTest.java | 16 +- .../tests/integration/InterceptorTest.java | 32 +- .../integration/client/AcknowledgeTest.java | 74 +- .../integration/client/AutogroupIdTest.java | 4 +- .../integration/client/CommitRollbackTest.java | 10 +- .../integration/client/ConsumerCloseTest.java | 16 +- .../tests/integration/client/ConsumerTest.java | 12 +- .../integration/client/CoreClientTest.java | 4 +- .../client/CreateQueueIdempotentTest.java | 12 +- .../client/DeadLetterAddressTest.java | 4 +- .../integration/client/DeliveryOrderTest.java | 4 +- .../integration/client/FailureDeadlockTest.java | 6 +- .../integration/client/HangConsumerTest.java | 10 +- .../integration/client/HornetQCrashTest.java | 4 +- .../client/IncompatibleVersionTest.java | 8 +- .../client/InterruptedLargeMessageTest.java | 6 +- .../integration/client/LargeMessageTest.java | 4 +- .../client/MessageDurabilityTest.java | 18 +- .../MessageGroupingConnectionFactoryTest.java | 4 +- .../integration/client/MessageGroupingTest.java | 4 +- .../client/MultipleThreadFilterOneTest.java | 6 +- .../client/NewDeadLetterAddressTest.java | 4 +- .../integration/client/PagingOrderTest.java | 12 +- .../integration/client/PagingSyncTest.java | 4 +- .../tests/integration/client/PagingTest.java | 68 +- .../integration/client/ProducerCloseTest.java | 8 +- .../client/ProducerFlowControlTest.java | 4 +- .../tests/integration/client/ProducerTest.java | 4 +- .../tests/integration/client/ReceiveTest.java | 14 +- .../client/RedeliveryConsumerTest.java | 4 +- .../tests/integration/client/RequestorTest.java | 10 +- .../client/SelfExpandingBufferTest.java | 4 +- .../client/ServerLocatorConnectTest.java | 10 +- .../integration/client/SessionCloseTest.java | 44 +- ...onClosedOnRemotingConnectionFailureTest.java | 16 +- .../client/SessionCreateAndDeleteQueueTest.java | 8 +- .../client/SessionCreateConsumerTest.java | 14 +- .../client/SessionCreateProducerTest.java | 8 +- .../tests/integration/client/SessionTest.java | 12 +- .../integration/client/SlowConsumerTest.java | 18 +- .../integration/client/TemporaryQueueTest.java | 28 +- .../integration/client/TransientQueueTest.java | 10 +- .../integration/client/WildCardRoutingTest.java | 4 +- .../clientcrash/DummyInterceptor.java | 8 +- .../clientcrash/DummyInterceptorB.java | 4 +- .../cluster/ClusterControllerTest.java | 4 +- .../cluster/bridge/BridgeReconnectTest.java | 16 +- .../integration/cluster/bridge/BridgeTest.java | 10 +- .../cluster/bridge/SimpleTransformer.java | 4 +- .../cluster/distribution/ClusterTestBase.java | 6 +- .../distribution/ClusteredGroupingTest.java | 6 +- .../failover/AsynchronousFailoverTest.java | 40 +- .../failover/BackupAuthenticationTest.java | 4 +- .../cluster/failover/BackupSyncJournalTest.java | 8 +- .../failover/BackupSyncLargeMessageTest.java | 8 +- .../cluster/failover/DelayInterceptor.java | 4 +- .../cluster/failover/DelayInterceptor2.java | 4 +- .../cluster/failover/DelayInterceptor3.java | 4 +- .../failover/FailoverOnFlowControlTest.java | 4 +- .../cluster/failover/FailoverTest.java | 78 +- .../cluster/failover/FailoverTestBase.java | 4 +- .../failover/NettyAsynchronousReattachTest.java | 4 +- .../failover/ReplicatedDistributionTest.java | 4 +- .../remote/FailoverWithSharedStoreTest.java | 8 +- .../MultiThreadRandomReattachTestBase.java | 4 +- .../MultiThreadReattachSupportTestBase.java | 4 +- .../cluster/reattach/OrderReattachTest.java | 4 +- .../cluster/reattach/RandomReattachTest.java | 10 +- .../cluster/reattach/ReattachTest.java | 48 +- .../topology/TopologyClusterTestBase.java | 16 +- .../cluster/util/BackupSyncDelay.java | 6 +- .../integration/discovery/DiscoveryTest.java | 4 +- .../jms/bridge/ClusteredBridgeTestBase.java | 6 +- .../jms/bridge/JMSBridgeClusteredTest.java | 12 +- .../integration/jms/client/GroupingTest.java | 4 +- ...onClosedOnRemotingConnectionFailureTest.java | 8 +- .../jms/cluster/BindingsClusterTest.java | 10 +- .../jms/cluster/JMSFailoverTest.java | 4 +- .../jms/cluster/JMSReconnectTest.java | 6 +- .../CloseDestroyedConnectionTest.java | 14 +- .../jms/connection/ExceptionListenerTest.java | 12 +- .../server/management/JMSServerControlTest.java | 8 +- .../jms/server/management/JMSUtil.java | 8 +- .../journal/JournalPerfTuneTest.java | 6 +- .../largemessage/LargeMessageTestBase.java | 20 +- .../management/AcceptorControlTest.java | 6 +- .../ManagementWithPagingServerTest.java | 4 +- .../management/NotificationTest.java | 4 +- .../management/QueueControlTest.java | 4 +- .../management/SecurityNotificationTest.java | 4 +- .../persistence/DeleteQueueRestartTest.java | 4 +- ...nnectionFactoryConfigurationStorageTest.java | 8 +- ...ansportConfigurationEncodingSupportTest.java | 8 +- .../ra/HornetQMessageHandlerTest.java | 8 +- .../tests/integration/remoting/PingTest.java | 22 +- .../integration/remoting/ReconnectTest.java | 22 +- .../replication/ReplicationTest.java | 24 +- .../integration/security/SecurityTest.java | 96 +- .../server/AddressFullLoggingTest.java | 4 +- .../integration/server/ExpiryRunnerTest.java | 4 +- .../integration/server/LVQRecoveryTest.java | 6 +- .../tests/integration/server/LVQTest.java | 8 +- .../integration/server/PredefinedQueueTest.java | 16 +- .../ssl/CoreClientOverOneWaySSLTest.java | 46 +- .../ssl/CoreClientOverTwoWaySSLTest.java | 10 +- .../NettyConnectorWithHTTPUpgradeTest.java | 10 +- .../integration/vertx/HornetQVertxUnitTest.java | 4 +- .../integration/xa/BasicXaRecoveryTest.java | 4 +- .../tests/integration/xa/BasicXaTest.java | 8 +- .../tests/integration/xa/XaTimeoutTest.java | 6 +- .../largemessage/LargeMessageTestBase.java | 20 +- tests/jms-tests/pom.xml | 2 +- .../jms/tests/message/MessageHeaderTest.java | 110 +- tests/joram-tests/pom.xml | 2 +- tests/performance-tests/pom.xml | 2 +- .../paging/MeasurePagingMultiThreadTest.java | 14 +- tests/pom.xml | 2 +- tests/soak-tests/pom.xml | 2 +- tests/stress-tests/pom.xml | 2 +- .../journal/JournalRestartStressTest.java | 2 +- .../NIOMultiThreadCompactorStressTest.java | 12 +- .../stress/paging/PageCursorStressTest.java | 14 +- .../tests/stress/paging/PageStressTest.java | 4 +- .../tests/stress/remote/PingStressTest.java | 4 +- tests/timing-tests/pom.xml | 2 +- .../activemq/tests/timing/util/UTF8Test.java | 8 +- .../tests/unit/core/asyncio/AIOTestBase.java | 4 +- .../unit/core/asyncio/AsynchronousFileTest.java | 10 +- .../MultiThreadAsynchronousFileTest.java | 6 +- .../client/impl/LargeMessageBufferTest.java | 46 +- .../core/journal/impl/JournalImplTestUnit.java | 8 +- .../impl/SequentialFileFactoryTestBase.java | 14 +- .../unit/core/journal/impl/TimedBufferTest.java | 14 +- .../impl/fakes/FakeSequentialFileFactory.java | 18 +- .../core/journal/impl/fakes/SimpleEncoding.java | 6 +- .../unit/core/message/impl/MessageImplTest.java | 6 +- .../tests/unit/core/paging/impl/PageTest.java | 10 +- .../core/paging/impl/PagingStoreImplTest.java | 26 +- .../impl/BatchIDGeneratorUnitTest.java | 6 +- .../impl/OperationContextUnitTest.java | 4 +- .../core/postoffice/impl/BindingsImplTest.java | 4 +- .../core/remoting/HornetQBufferTestBase.java | 6 +- .../impl/netty/ChannelBufferWrapper2Test.java | 8 +- .../impl/netty/NettyAcceptorFactoryTest.java | 8 +- .../remoting/impl/netty/NettyAcceptorTest.java | 8 +- .../impl/netty/NettyConnectionTest.java | 12 +- .../remoting/impl/netty/NettyConnectorTest.java | 28 +- .../server/impl/fake/FakeInterceptor.java | 4 +- .../unit/jms/client/JMSExceptionHelperTest.java | 30 +- .../unit/util/HornetQBufferInputStreamTest.java | 6 +- .../activemq/tests/unit/util/UTF8Test.java | 20 +- 570 files changed, 5870 insertions(+), 5876 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-6/blob/1bf2e41f/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressExistsException.java ---------------------------------------------------------------------- diff --git a/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressExistsException.java b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressExistsException.java new file mode 100644 index 0000000..6b57422 --- /dev/null +++ b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressExistsException.java @@ -0,0 +1,35 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat 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.activemq.api.core; + +import static org.apache.activemq.api.core.ActiveMQExceptionType.ADDRESS_EXISTS; + +/** + * An operation failed because an address exists on the server. + * @author <a href="mailto:andy.tay...@jboss.org">Andy Taylor</a> 5/2/12 + */ +public final class ActiveMQAddressExistsException extends ActiveMQException +{ + private static final long serialVersionUID = 3032730450033992367L; + + public ActiveMQAddressExistsException() + { + super(ADDRESS_EXISTS); + } + + public ActiveMQAddressExistsException(String msg) + { + super(ADDRESS_EXISTS, msg); + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/1bf2e41f/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressFullException.java ---------------------------------------------------------------------- diff --git a/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressFullException.java b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressFullException.java new file mode 100644 index 0000000..18beece --- /dev/null +++ b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAddressFullException.java @@ -0,0 +1,35 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat 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.activemq.api.core; + +import static org.apache.activemq.api.core.ActiveMQExceptionType.ADDRESS_FULL; + +/** + * An address is full. + * @author Justin Bertram + */ +public final class ActiveMQAddressFullException extends ActiveMQException +{ + private static final long serialVersionUID = 0; + + public ActiveMQAddressFullException(String message) + { + super(ADDRESS_FULL, message); + } + + public ActiveMQAddressFullException() + { + super(ADDRESS_FULL); + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/1bf2e41f/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAlreadyReplicatingException.java ---------------------------------------------------------------------- diff --git a/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAlreadyReplicatingException.java b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAlreadyReplicatingException.java new file mode 100644 index 0000000..81af8d3 --- /dev/null +++ b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQAlreadyReplicatingException.java @@ -0,0 +1,35 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat 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.activemq.api.core; + +import static org.apache.activemq.api.core.ActiveMQExceptionType.ALREADY_REPLICATING; + +/** + * The server is already paired with a replicating backup. + * @author <a href="mailto:andy.tay...@jboss.org">Andy Taylor</a> 5/2/12 + */ +public final class ActiveMQAlreadyReplicatingException extends ActiveMQException +{ + private static final long serialVersionUID = -7352538521961996152L; + + public ActiveMQAlreadyReplicatingException() + { + super(ALREADY_REPLICATING); + } + + public ActiveMQAlreadyReplicatingException(String msg) + { + super(ALREADY_REPLICATING, msg); + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/1bf2e41f/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffer.java ---------------------------------------------------------------------- diff --git a/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffer.java b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffer.java new file mode 100644 index 0000000..b6065cf --- /dev/null +++ b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffer.java @@ -0,0 +1,1084 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat 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.activemq.api.core; + +import java.nio.ByteBuffer; + +import io.netty.buffer.ByteBuf; + +/** + * A HornetQBuffer wraps a Netty's ChannelBuffer and is used throughout HornetQ code base. + * <p> + * Instances of it can be obtained from {@link ActiveMQBuffers} factory. + * <p> + * Much of it derived from Netty ChannelBuffer by Trustin Lee + * @author <a href="mailto:tim....@jboss.com">Tim Fox</a> + * @see ActiveMQBuffers + */ +public interface ActiveMQBuffer +{ + /** + * Returns the underlying Netty's ByteBuf + * + * @return the underlying Netty's ByteBuf + */ + ByteBuf byteBuf(); + + /** + * Returns the number of bytes this buffer can contain. + */ + int capacity(); + + /** + * Returns the {@code readerIndex} of this buffer. + */ + int readerIndex(); + + /** + * Sets the {@code readerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code readerIndex} is + * less than {@code 0} or + * greater than {@code this.writerIndex} + */ + void readerIndex(int readerIndex); + + /** + * Returns the {@code writerIndex} of this buffer. + */ + int writerIndex(); + + /** + * Sets the {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code writerIndex} is + * less than {@code this.readerIndex} or + * greater than {@code this.capacity} + */ + void writerIndex(int writerIndex); + + /** + * Sets the {@code readerIndex} and {@code writerIndex} of this buffer + * in one shot. This method is useful when you have to worry about the + * invocation order of {@link #readerIndex(int)} and {@link #writerIndex(int)} + * methods. For example, the following code will fail: + * + * <pre> + * // Create a buffer whose readerIndex, writerIndex and capacity are + * // 0, 0 and 8 respectively. + * ChannelBuffer buf = ChannelBuffers.buffer(8); + * + * // IndexOutOfBoundsException is thrown because the specified + * // readerIndex (2) cannot be greater than the current writerIndex (0). + * buf.readerIndex(2); + * buf.writerIndex(4); + * </pre> + * + * The following code will also fail: + * + * <pre> + * // Create a buffer whose readerIndex, writerIndex and capacity are + * // 0, 8 and 8 respectively. + * ChannelBuffer buf = ChannelBuffers.wrappedBuffer(new byte[8]); + * + * // readerIndex becomes 8. + * buf.readLong(); + * + * // IndexOutOfBoundsException is thrown because the specified + * // writerIndex (4) cannot be less than the current readerIndex (8). + * buf.writerIndex(4); + * buf.readerIndex(2); + * </pre> + * + * By contrast, {@link #setIndex(int, int)} guarantees that it never + * throws an {@link IndexOutOfBoundsException} as long as the specified + * indexes meet basic constraints, regardless what the current index + * values of the buffer are: + * + * <pre> + * // No matter what the current state of the buffer is, the following + * // call always succeeds as long as the capacity of the buffer is not + * // less than 4. + * buf.setIndex(2, 4); + * </pre> + * + * @throws IndexOutOfBoundsException + * if the specified {@code readerIndex} is less than 0, + * if the specified {@code writerIndex} is less than the specified + * {@code readerIndex} or if the specified {@code writerIndex} is + * greater than {@code this.capacity} + */ + void setIndex(int readerIndex, int writerIndex); + + /** + * Returns the number of readable bytes which is equal to + * {@code (this.writerIndex - this.readerIndex)}. + */ + int readableBytes(); + + /** + * Returns the number of writable bytes which is equal to + * {@code (this.capacity - this.writerIndex)}. + */ + int writableBytes(); + + /** + * Returns {@code true} + * if and only if {@code (this.writerIndex - this.readerIndex)} is greater + * than {@code 0}. + */ + boolean readable(); + + /** + * Returns {@code true} + * if and only if {@code (this.capacity - this.writerIndex)} is greater + * than {@code 0}. + */ + boolean writable(); + + /** + * Sets the {@code readerIndex} and {@code writerIndex} of this buffer to + * {@code 0}. + * This method is identical to {@link #setIndex(int, int) setIndex(0, 0)}. + * <p> + * Please note that the behavior of this method is different + * from that of NIO buffer, which sets the {@code limit} to + * the {@code capacity} of the buffer. + */ + void clear(); + + /** + * Marks the current {@code readerIndex} in this buffer. You can + * reposition the current {@code readerIndex} to the marked + * {@code readerIndex} by calling {@link #resetReaderIndex()}. + * The initial value of the marked {@code readerIndex} is {@code 0}. + */ + void markReaderIndex(); + + /** + * Repositions the current {@code readerIndex} to the marked + * {@code readerIndex} in this buffer. + * + * @throws IndexOutOfBoundsException + * if the current {@code writerIndex} is less than the marked + * {@code readerIndex} + */ + void resetReaderIndex(); + + /** + * Marks the current {@code writerIndex} in this buffer. You can + * reposition the current {@code writerIndex} to the marked + * {@code writerIndex} by calling {@link #resetWriterIndex()}. + * The initial value of the marked {@code writerIndex} is {@code 0}. + */ + void markWriterIndex(); + + /** + * Repositions the current {@code writerIndex} to the marked + * {@code writerIndex} in this buffer. + * + * @throws IndexOutOfBoundsException + * if the current {@code readerIndex} is greater than the marked + * {@code writerIndex} + */ + void resetWriterIndex(); + + /** + * Discards the bytes between the 0th index and {@code readerIndex}. + * It moves the bytes between {@code readerIndex} and {@code writerIndex} + * to the 0th index, and sets {@code readerIndex} and {@code writerIndex} + * to {@code 0} and {@code oldWriterIndex - oldReaderIndex} respectively. + * <p> + * Please refer to the class documentation for more detailed explanation. + */ + void discardReadBytes(); + + /** + * Gets a byte at the specified absolute {@code index} in this buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 1} is greater than {@code this.capacity} + */ + byte getByte(int index); + + /** + * Gets an unsigned byte at the specified absolute {@code index} in this + * buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 1} is greater than {@code this.capacity} + */ + short getUnsignedByte(int index); + + /** + * Gets a 16-bit short integer at the specified absolute {@code index} in + * this buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 2} is greater than {@code this.capacity} + */ + short getShort(int index); + + /** + * Gets an unsigned 16-bit short integer at the specified absolute + * {@code index} in this buffer. This method does not modify + * {@code readerIndex} or {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 2} is greater than {@code this.capacity} + */ + int getUnsignedShort(int index); + + /** + * Gets a 32-bit integer at the specified absolute {@code index} in + * this buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 4} is greater than {@code this.capacity} + */ + int getInt(int index); + + /** + * Gets an unsigned 32-bit integer at the specified absolute {@code index} + * in this buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 4} is greater than {@code this.capacity} + */ + long getUnsignedInt(int index); + + /** + * Gets a 64-bit long integer at the specified absolute {@code index} in + * this buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 8} is greater than {@code this.capacity} + */ + long getLong(int index); + + /** + * Transfers this buffer's data to the specified destination starting at + * the specified absolute {@code index} until the destination becomes + * non-writable. This method is basically same with + * {@link #getBytes(int, ActiveMQBuffer, int, int)}, except that this + * method increases the {@code writerIndex} of the destination by the + * number of the transferred bytes while + * {@link #getBytes(int, ActiveMQBuffer, int, int)} does not. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * the source buffer (i.e. {@code this}). + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * if {@code index + dst.writableBytes} is greater than + * {@code this.capacity} + */ + void getBytes(int index, ActiveMQBuffer dst); + + /** + * Transfers this buffer's data to the specified destination starting at + * the specified absolute {@code index}. This method is basically same + * with {@link #getBytes(int, ActiveMQBuffer, int, int)}, except that this + * method increases the {@code writerIndex} of the destination by the + * number of the transferred bytes while + * {@link #getBytes(int, ActiveMQBuffer, int, int)} does not. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * the source buffer (i.e. {@code this}). + * + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0}, + * if {@code index + length} is greater than + * {@code this.capacity}, or + * if {@code length} is greater than {@code dst.writableBytes} + */ + void getBytes(int index, ActiveMQBuffer dst, int length); + + /** + * Transfers this buffer's data to the specified destination starting at + * the specified absolute {@code index}. + * This method does not modify {@code readerIndex} or {@code writerIndex} + * of both the source (i.e. {@code this}) and the destination. + * + * @param dstIndex the first index of the destination + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0}, + * if the specified {@code dstIndex} is less than {@code 0}, + * if {@code index + length} is greater than + * {@code this.capacity}, or + * if {@code dstIndex + length} is greater than + * {@code dst.capacity} + */ + void getBytes(int index, ActiveMQBuffer dst, int dstIndex, int length); + + /** + * Transfers this buffer's data to the specified destination starting at + * the specified absolute {@code index}. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * if {@code index + dst.length} is greater than + * {@code this.capacity} + */ + void getBytes(int index, byte[] dst); + + /** + * Transfers this buffer's data to the specified destination starting at + * the specified absolute {@code index}. + * This method does not modify {@code readerIndex} or {@code writerIndex} + * of this buffer. + * + * @param dstIndex the first index of the destination + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0}, + * if the specified {@code dstIndex} is less than {@code 0}, + * if {@code index + length} is greater than + * {@code this.capacity}, or + * if {@code dstIndex + length} is greater than + * {@code dst.length} + */ + void getBytes(int index, byte[] dst, int dstIndex, int length); + + /** + * Transfers this buffer's data to the specified destination starting at + * the specified absolute {@code index} until the destination's position + * reaches its limit. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer while the destination's {@code position} will be increased. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * if {@code index + dst.remaining()} is greater than + * {@code this.capacity} + */ + void getBytes(int index, ByteBuffer dst); + + /** + * Gets a char at the specified absolute {@code index} in + * this buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 2} is greater than {@code this.capacity} + */ + char getChar(int index); + + /** + * Gets a float at the specified absolute {@code index} in + * this buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 4} is greater than {@code this.capacity} + */ + float getFloat(int index); + + /** + * Gets a double at the specified absolute {@code index} in + * this buffer. This method does not modify {@code readerIndex} or + * {@code writerIndex} of this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 8} is greater than {@code this.capacity} + */ + double getDouble(int index); + + /** + * Sets the specified byte at the specified absolute {@code index} in this + * buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 1} is greater than {@code this.capacity} + */ + void setByte(int index, byte value); + + /** + * Sets the specified 16-bit short integer at the specified absolute + * {@code index} in this buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 2} is greater than {@code this.capacity} + */ + void setShort(int index, short value); + + /** + * Sets the specified 32-bit integer at the specified absolute + * {@code index} in this buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 4} is greater than {@code this.capacity} + */ + void setInt(int index, int value); + + /** + * Sets the specified 64-bit long integer at the specified absolute + * {@code index} in this buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 8} is greater than {@code this.capacity} + */ + void setLong(int index, long value); + + /** + * Transfers the specified source buffer's data to this buffer starting at + * the specified absolute {@code index} until the destination becomes + * unreadable. This method is basically same with + * {@link #setBytes(int, ActiveMQBuffer, int, int)}, except that this + * method increases the {@code readerIndex} of the source buffer by + * the number of the transferred bytes while + * {@link #getBytes(int, ActiveMQBuffer, int, int)} does not. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * the source buffer (i.e. {@code this}). + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * if {@code index + src.readableBytes} is greater than + * {@code this.capacity} + */ + void setBytes(int index, ActiveMQBuffer src); + + /** + * Transfers the specified source buffer's data to this buffer starting at + * the specified absolute {@code index}. This method is basically same + * with {@link #setBytes(int, ActiveMQBuffer, int, int)}, except that this + * method increases the {@code readerIndex} of the source buffer by + * the number of the transferred bytes while + * {@link #getBytes(int, ActiveMQBuffer, int, int)} does not. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * the source buffer (i.e. {@code this}). + * + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0}, + * if {@code index + length} is greater than + * {@code this.capacity}, or + * if {@code length} is greater than {@code src.readableBytes} + */ + void setBytes(int index, ActiveMQBuffer src, int length); + + /** + * Transfers the specified source buffer's data to this buffer starting at + * the specified absolute {@code index}. + * This method does not modify {@code readerIndex} or {@code writerIndex} + * of both the source (i.e. {@code this}) and the destination. + * + * @param srcIndex the first index of the source + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0}, + * if the specified {@code srcIndex} is less than {@code 0}, + * if {@code index + length} is greater than + * {@code this.capacity}, or + * if {@code srcIndex + length} is greater than + * {@code src.capacity} + */ + void setBytes(int index, ActiveMQBuffer src, int srcIndex, int length); + + /** + * Transfers the specified source array's data to this buffer starting at + * the specified absolute {@code index}. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * if {@code index + src.length} is greater than + * {@code this.capacity} + */ + void setBytes(int index, byte[] src); + + /** + * Transfers the specified source array's data to this buffer starting at + * the specified absolute {@code index}. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0}, + * if the specified {@code srcIndex} is less than {@code 0}, + * if {@code index + length} is greater than + * {@code this.capacity}, or + * if {@code srcIndex + length} is greater than {@code src.length} + */ + void setBytes(int index, byte[] src, int srcIndex, int length); + + /** + * Transfers the specified source buffer's data to this buffer starting at + * the specified absolute {@code index} until the source buffer's position + * reaches its limit. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * if {@code index + src.remaining()} is greater than + * {@code this.capacity} + */ + void setBytes(int index, ByteBuffer src); + + /** + * Sets the specified char at the specified absolute + * {@code index} in this buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 2} is greater than {@code this.capacity} + */ + void setChar(int index, char value); + + /** + * Sets the specified float at the specified absolute + * {@code index} in this buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 4} is greater than {@code this.capacity} + */ + void setFloat(int index, float value); + + /** + * Sets the specified double at the specified absolute + * {@code index} in this buffer. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + * @throws IndexOutOfBoundsException + * if the specified {@code index} is less than {@code 0} or + * {@code index + 8} is greater than {@code this.capacity} + */ + void setDouble(int index, double value); + + /** + * Gets a byte at the current {@code readerIndex} and increases + * the {@code readerIndex} by {@code 1} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 1} + */ + byte readByte(); + + /** + * Gets an unsigned byte at the current {@code readerIndex} and increases + * the {@code readerIndex} by {@code 1} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 1} + */ + short readUnsignedByte(); + + /** + * Gets a 16-bit short integer at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 2} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 2} + */ + short readShort(); + + /** + * Gets an unsigned 16-bit short integer at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 2} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 2} + */ + int readUnsignedShort(); + + /** + * Gets a 32-bit integer at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 4} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 4} + */ + int readInt(); + + /** + * Gets an unsigned 32-bit integer at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 4} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 4} + */ + long readUnsignedInt(); + + /** + * Gets a 64-bit integer at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 8} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 8} + */ + long readLong(); + + /** + * Gets a char at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 2} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 2} + */ + char readChar(); + + /** + * Gets a float at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 4} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 4} + */ + float readFloat(); + + /** + * Gets a double at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 8} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 8} + */ + double readDouble(); + + /** + * Gets a boolean at the current {@code readerIndex} + * and increases the {@code readerIndex} by {@code 1} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.readableBytes} is less than {@code 1} + */ + boolean readBoolean(); + + /** + * Gets a SimpleString (potentially {@code null}) at the current {@code readerIndex} + */ + SimpleString readNullableSimpleString(); + + /** + * Gets a String (potentially {@code null}) at the current {@code readerIndex} + */ + String readNullableString(); + + /** + * Gets a non-null SimpleString at the current {@code readerIndex} + */ + SimpleString readSimpleString(); + + /** + * Gets a non-null String at the current {@code readerIndex} + */ + String readString(); + + /** + * Gets a UTF-8 String at the current {@code readerIndex} + */ + String readUTF(); + + /** + * Transfers this buffer's data to a newly created buffer starting at + * the current {@code readerIndex} and increases the {@code readerIndex} + * by the number of the transferred bytes (= {@code length}). + * The returned buffer's {@code readerIndex} and {@code writerIndex} are + * {@code 0} and {@code length} respectively. + * + * @param length the number of bytes to transfer + * + * @return the newly created buffer which contains the transferred bytes + * + * @throws IndexOutOfBoundsException + * if {@code length} is greater than {@code this.readableBytes} + */ + ActiveMQBuffer readBytes(int length); + + /** + * Returns a new slice of this buffer's sub-region starting at the current + * {@code readerIndex} and increases the {@code readerIndex} by the size + * of the new slice (= {@code length}). + * + * @param length the size of the new slice + * + * @return the newly created slice + * + * @throws IndexOutOfBoundsException + * if {@code length} is greater than {@code this.readableBytes} + */ + ActiveMQBuffer readSlice(int length); + + /** + * Transfers this buffer's data to the specified destination starting at + * the current {@code readerIndex} until the destination becomes + * non-writable, and increases the {@code readerIndex} by the number of the + * transferred bytes. This method is basically same with + * {@link #readBytes(ActiveMQBuffer, int, int)}, except that this method + * increases the {@code writerIndex} of the destination by the number of + * the transferred bytes while {@link #readBytes(ActiveMQBuffer, int, int)} + * does not. + * + * @throws IndexOutOfBoundsException + * if {@code dst.writableBytes} is greater than + * {@code this.readableBytes} + */ + void readBytes(ActiveMQBuffer dst); + + /** + * Transfers this buffer's data to the specified destination starting at + * the current {@code readerIndex} and increases the {@code readerIndex} + * by the number of the transferred bytes (= {@code length}). This method + * is basically same with {@link #readBytes(ActiveMQBuffer, int, int)}, + * except that this method increases the {@code writerIndex} of the + * destination by the number of the transferred bytes (= {@code length}) + * while {@link #readBytes(ActiveMQBuffer, int, int)} does not. + * + * @throws IndexOutOfBoundsException + * if {@code length} is greater than {@code this.readableBytes} or + * if {@code length} is greater than {@code dst.writableBytes} + */ + void readBytes(ActiveMQBuffer dst, int length); + + /** + * Transfers this buffer's data to the specified destination starting at + * the current {@code readerIndex} and increases the {@code readerIndex} + * by the number of the transferred bytes (= {@code length}). + * + * @param dstIndex the first index of the destination + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code dstIndex} is less than {@code 0}, + * if {@code length} is greater than {@code this.readableBytes}, or + * if {@code dstIndex + length} is greater than + * {@code dst.capacity} + */ + void readBytes(ActiveMQBuffer dst, int dstIndex, int length); + + /** + * Transfers this buffer's data to the specified destination starting at + * the current {@code readerIndex} and increases the {@code readerIndex} + * by the number of the transferred bytes (= {@code dst.length}). + * + * @throws IndexOutOfBoundsException + * if {@code dst.length} is greater than {@code this.readableBytes} + */ + void readBytes(byte[] dst); + + /** + * Transfers this buffer's data to the specified destination starting at + * the current {@code readerIndex} and increases the {@code readerIndex} + * by the number of the transferred bytes (= {@code length}). + * + * @param dstIndex the first index of the destination + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code dstIndex} is less than {@code 0}, + * if {@code length} is greater than {@code this.readableBytes}, or + * if {@code dstIndex + length} is greater than {@code dst.length} + */ + void readBytes(byte[] dst, int dstIndex, int length); + + /** + * Transfers this buffer's data to the specified destination starting at + * the current {@code readerIndex} until the destination's position + * reaches its limit, and increases the {@code readerIndex} by the + * number of the transferred bytes. + * + * @throws IndexOutOfBoundsException + * if {@code dst.remaining()} is greater than + * {@code this.readableBytes} + */ + void readBytes(ByteBuffer dst); + + /** + * Increases the current {@code readerIndex} by the specified + * {@code length} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code length} is greater than {@code this.readableBytes} + */ + void skipBytes(int length); + + /** + * Sets the specified byte at the current {@code writerIndex} + * and increases the {@code writerIndex} by {@code 1} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.writableBytes} is less than {@code 1} + */ + void writeByte(byte value); + + /** + * Sets the specified 16-bit short integer at the current + * {@code writerIndex} and increases the {@code writerIndex} by {@code 2} + * in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.writableBytes} is less than {@code 2} + */ + void writeShort(short value); + + /** + * Sets the specified 32-bit integer at the current {@code writerIndex} + * and increases the {@code writerIndex} by {@code 4} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.writableBytes} is less than {@code 4} + */ + void writeInt(int value); + + /** + * Sets the specified 64-bit long integer at the current + * {@code writerIndex} and increases the {@code writerIndex} by {@code 8} + * in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.writableBytes} is less than {@code 8} + */ + void writeLong(long value); + + /** + * Sets the specified char at the current {@code writerIndex} + * and increases the {@code writerIndex} by {@code 2} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.writableBytes} is less than {@code 2} + */ + void writeChar(char chr); + + /** + * Sets the specified float at the current {@code writerIndex} + * and increases the {@code writerIndex} by {@code 4} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.writableBytes} is less than {@code 4} + */ + void writeFloat(float value); + + /** + * Sets the specified double at the current {@code writerIndex} + * and increases the {@code writerIndex} by {@code 8} in this buffer. + * + * @throws IndexOutOfBoundsException + * if {@code this.writableBytes} is less than {@code 8} + */ + void writeDouble(double value); + + /** + * Sets the specified boolean at the current {@code writerIndex} + */ + void writeBoolean(boolean val); + + /** + * Sets the specified SimpleString (potentially {@code null}) at the current {@code writerIndex} + */ + void writeNullableSimpleString(SimpleString val); + + /** + * Sets the specified String (potentially {@code null}) at the current {@code writerIndex} + */ + void writeNullableString(String val); + + /** + * Sets the specified non-null SimpleString at the current {@code writerIndex} + */ + void writeSimpleString(SimpleString val); + + /** + * Sets the specified non-null String at the current {@code writerIndex} + */ + void writeString(String val); + + /** + * Sets the specified UTF-8 String at the current {@code writerIndex} + */ + + void writeUTF(String utf); + + /** + * Transfers the specified source buffer's data to this buffer starting at + * the current {@code writerIndex} and increases the {@code writerIndex} + * by the number of the transferred bytes (= {@code length}). This method + * is basically same with {@link #writeBytes(ActiveMQBuffer, int, int)}, + * except that this method increases the {@code readerIndex} of the source + * buffer by the number of the transferred bytes (= {@code length}) while + * {@link #writeBytes(ActiveMQBuffer, int, int)} does not. + * + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if {@code length} is greater than {@code this.writableBytes} or + * if {@code length} is greater then {@code src.readableBytes} + */ + void writeBytes(ActiveMQBuffer src, int length); + + /** + * Transfers the specified source buffer's data to this buffer starting at + * the current {@code writerIndex} and increases the {@code writerIndex} + * by the number of the transferred bytes (= {@code length}). + * + * @param srcIndex the first index of the source + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code srcIndex} is less than {@code 0}, + * if {@code srcIndex + length} is greater than + * {@code src.capacity}, or + * if {@code length} is greater than {@code this.writableBytes} + */ + void writeBytes(ActiveMQBuffer src, int srcIndex, int length); + + /** + * Transfers the specified source array's data to this buffer starting at + * the current {@code writerIndex} and increases the {@code writerIndex} + * by the number of the transferred bytes (= {@code src.length}). + * + * @throws IndexOutOfBoundsException + * if {@code src.length} is greater than {@code this.writableBytes} + */ + void writeBytes(byte[] src); + + /** + * Transfers the specified source array's data to this buffer starting at + * the current {@code writerIndex} and increases the {@code writerIndex} + * by the number of the transferred bytes (= {@code length}). + * + * @param srcIndex the first index of the source + * @param length the number of bytes to transfer + * + * @throws IndexOutOfBoundsException + * if the specified {@code srcIndex} is less than {@code 0}, + * if {@code srcIndex + length} is greater than + * {@code src.length}, or + * if {@code length} is greater than {@code this.writableBytes} + */ + void writeBytes(byte[] src, int srcIndex, int length); + + /** + * Transfers the specified source buffer's data to this buffer starting at + * the current {@code writerIndex} until the source buffer's position + * reaches its limit, and increases the {@code writerIndex} by the + * number of the transferred bytes. + * + * @throws IndexOutOfBoundsException + * if {@code src.remaining()} is greater than + * {@code this.writableBytes} + */ + void writeBytes(ByteBuffer src); + + /** + * Returns a copy of this buffer's readable bytes. Modifying the content + * of the returned buffer or this buffer does not affect each other at all. + * This method is identical to {@code buf.copy(buf.readerIndex(), buf.readableBytes())}. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + * + */ + ActiveMQBuffer copy(); + + /** + * Returns a copy of this buffer's sub-region. Modifying the content of + * the returned buffer or this buffer does not affect each other at all. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + */ + ActiveMQBuffer copy(int index, int length); + + /** + * Returns a slice of this buffer's readable bytes. Modifying the content + * of the returned buffer or this buffer affects each other's content + * while they maintain separate indexes and marks. This method is + * identical to {@code buf.slice(buf.readerIndex(), buf.readableBytes())}. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + */ + ActiveMQBuffer slice(); + + /** + * Returns a slice of this buffer's sub-region. Modifying the content of + * the returned buffer or this buffer affects each other's content while + * they maintain separate indexes and marks. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + */ + ActiveMQBuffer slice(int index, int length); + + /** + * Returns a buffer which shares the whole region of this buffer. + * Modifying the content of the returned buffer or this buffer affects + * each other's content while they maintain separate indexes and marks. + * This method is identical to {@code buf.slice(0, buf.capacity())}. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + */ + ActiveMQBuffer duplicate(); + + /** + * Converts this buffer's readable bytes into a NIO buffer. The returned + * buffer might or might not share the content with this buffer, while + * they have separate indexes and marks. This method is identical to + * {@code buf.toByteBuffer(buf.readerIndex(), buf.readableBytes())}. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + */ + ByteBuffer toByteBuffer(); + + /** + * Converts this buffer's sub-region into a NIO buffer. The returned + * buffer might or might not share the content with this buffer, while + * they have separate indexes and marks. + * This method does not modify {@code readerIndex} or {@code writerIndex} of + * this buffer. + */ + ByteBuffer toByteBuffer(int index, int length); +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/1bf2e41f/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffers.java ---------------------------------------------------------------------- diff --git a/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffers.java b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffers.java new file mode 100644 index 0000000..482e801 --- /dev/null +++ b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQBuffers.java @@ -0,0 +1,96 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat 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.activemq.api.core; + +import java.nio.ByteBuffer; + +import io.netty.buffer.Unpooled; +import org.apache.activemq.core.buffers.impl.ChannelBufferWrapper; + +/** + * Factory class to create instances of {@link ActiveMQBuffer}. + * @author <a href="mailto:tim....@jboss.com">Tim Fox</a> + */ +public final class ActiveMQBuffers +{ + /** + * Creates a <em>self-expanding</em> HornetQBuffer with the given initial size + * + * @param size the initial size of the created HornetQBuffer + * @return a self-expanding HornetQBuffer starting with the given size + */ + public static ActiveMQBuffer dynamicBuffer(final int size) + { + return new ChannelBufferWrapper(Unpooled.buffer(size)); + } + + /** + * Creates a <em>self-expanding</em> HornetQBuffer filled with the given byte array + * + * @param bytes the created buffer will be initially filled with this byte array + * @return a self-expanding HornetQBuffer filled with the given byte array + */ + public static ActiveMQBuffer dynamicBuffer(final byte[] bytes) + { + ActiveMQBuffer buff = dynamicBuffer(bytes.length); + + buff.writeBytes(bytes); + + return buff; + } + + /** + * Creates a HornetQBuffer wrapping an underlying NIO ByteBuffer + * + * The position on this buffer won't affect the position on the inner buffer + * + * @param underlying the underlying NIO ByteBuffer + * @return a HornetQBuffer wrapping the underlying NIO ByteBuffer + */ + public static ActiveMQBuffer wrappedBuffer(final ByteBuffer underlying) + { + ActiveMQBuffer buff = new ChannelBufferWrapper(Unpooled.wrappedBuffer(underlying)); + + buff.clear(); + + return buff; + } + + /** + * Creates a HornetQBuffer wrapping an underlying byte array + * + * @param underlying the underlying byte array + * @return a HornetQBuffer wrapping the underlying byte array + */ + public static ActiveMQBuffer wrappedBuffer(final byte[] underlying) + { + return new ChannelBufferWrapper(Unpooled.wrappedBuffer(underlying)); + } + + /** + * Creates a <em>fixed</em> HornetQBuffer of the given size + * + * @param size the size of the created HornetQBuffer + * @return a fixed HornetQBuffer with the given size + */ + public static ActiveMQBuffer fixedBuffer(final int size) + { + return new ChannelBufferWrapper(Unpooled.buffer(size, size)); + } + + private ActiveMQBuffers() + { + // Utility class + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/1bf2e41f/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQClusterSecurityException.java ---------------------------------------------------------------------- diff --git a/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQClusterSecurityException.java b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQClusterSecurityException.java new file mode 100644 index 0000000..01a30a0 --- /dev/null +++ b/activemq-commons/src/main/java/org/apache/activemq/api/core/ActiveMQClusterSecurityException.java @@ -0,0 +1,32 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat 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.activemq.api.core; + +/** + * Security exception thrown when the cluster user fails authentication. + */ +public final class ActiveMQClusterSecurityException extends ActiveMQException +{ + private static final long serialVersionUID = -5890578849781297933L; + + public ActiveMQClusterSecurityException() + { + super(ActiveMQExceptionType.CLUSTER_SECURITY_EXCEPTION); + } + + public ActiveMQClusterSecurityException(final String msg) + { + super(ActiveMQExceptionType.CLUSTER_SECURITY_EXCEPTION, msg); + } +}