Package org.apache.qpid.server.exchange
Class AbstractExchange<T extends AbstractExchange<T>>
- java.lang.Object
-
- org.apache.qpid.server.model.AbstractConfiguredObject<T>
-
- org.apache.qpid.server.exchange.AbstractExchange<T>
-
- All Implemented Interfaces:
DestinationReferrer
,MessageDestination
,MessageNode
,MessageSender
,ConfiguredObject<T>
,ContextProvider
,Exchange<T>
,PermissionedObject
,TaskExecutorProvider
- Direct Known Subclasses:
DirectExchangeImpl
,HeadersExchangeImpl
public abstract class AbstractExchange<T extends AbstractExchange<T>> extends AbstractConfiguredObject<T> implements Exchange<T>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractExchange.BindingIdentifier
-
Nested classes/interfaces inherited from class org.apache.qpid.server.model.AbstractConfiguredObject
AbstractConfiguredObject.CallableWithArgument<V,A>, AbstractConfiguredObject.ChainedListenableFuture<V>, AbstractConfiguredObject.ChainedSettableFuture<V>, AbstractConfiguredObject.DuplicateIdException, AbstractConfiguredObject.DuplicateNameException
-
Nested classes/interfaces inherited from interface org.apache.qpid.server.model.Exchange
Exchange.BehaviourOnUnknownDeclareArgument, Exchange.UnroutableMessageBehaviour
-
-
Field Summary
-
Fields inherited from class org.apache.qpid.server.model.AbstractConfiguredObject
SECURED_STRING_VALUE
-
Fields inherited from interface org.apache.qpid.server.model.ConfiguredObject
AWAIT_ATTAINMENT_TIMEOUT, CONTEXT, CREATED_BY, CREATED_TIME, DEFAULT_AWAIT_ATTAINMENT_TIMEOUT, DESCRIPTION, DESIRED_STATE, DURABLE, ID, LAST_UPDATED_BY, LAST_UPDATED_TIME, LIFETIME_POLICY, NAME, OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT, STATE, TYPE
-
Fields inherited from interface org.apache.qpid.server.model.Exchange
ALTERNATE_BINDING, CLASS_DESCRIPTION, CREATING_LINK_INFO, DURABLE_BINDINGS, ON_UNKNOWN_EXCHANGE_DECLARE_OPTION, UNKNOWN_EXCHANGE_DECLARE_ARGUMENT_BEHAVIOUR_NAME, UNROUTABLE_MESSAGE_BEHAVIOUR
-
-
Constructor Summary
Constructors Constructor Description AbstractExchange(Map<String,Object> attributes, QueueManagingVirtualHost<?> vhost)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
addBinding(String bindingKey, Queue<?> queue, Map<String,Object> arguments)
void
addReference(DestinationReferrer destinationReferrer)
void
authorisePublish(SecurityToken token, Map<String,Object> arguments)
boolean
bind(String destination, String bindingKey, Map<String,Object> arguments, boolean replaceExistingArguments)
void
close()
boolean
deleteBinding(String bindingKey, Queue<?> queue)
void
destinationRemoved(MessageDestination destination)
protected abstract <M extends ServerMessage<? extends StorableMessageMetaData>>
voiddoRoute(M message, String routingAddress, InstanceProperties instanceProperties, RoutingResult<M> result)
NamedAddressSpace
getAddressSpace()
AlternateBinding
getAlternateBinding()
MessageDestination
getAlternateBindingDestination()
long
getBindingCount()
Collection<Binding>
getBindings()
long
getByteRoutes()
long
getBytesDropped()
long
getBytesIn()
CreatingLinkInfo
getCreatingLinkInfo()
Collection<Binding>
getDurableBindings()
EventLogger
getEventLogger()
long
getMessagesDropped()
long
getMessagesIn()
long
getMsgRoutes()
long
getProducerCount()
Collection<Binding>
getPublishingLinks(MessageDestination destination)
Exchange.UnroutableMessageBehaviour
getUnroutableMessageBehaviour()
QueueManagingVirtualHost<?>
getVirtualHost()
boolean
hasBinding(String bindingKey, Queue<?> queue)
boolean
hasBindings()
Returns true if this exchange has at least one binding associated with it.boolean
isAutoDelete()
boolean
isBound(String bindingKey)
Determines whether a message is routing to any queue using a specific _routing keyboolean
isBound(String bindingKey, Map<String,Object> arguments)
boolean
isBound(String bindingKey, Map<String,Object> arguments, Queue<?> queue)
Determines whether a message would be isBound to a particular queue using a specific routing key and argumentsboolean
isBound(String bindingKey, Queue<?> queue)
Determines whether a message would be isBound to a particular queue using a specific routing keyboolean
isBound(Map<String,Object> arguments)
boolean
isBound(Map<String,Object> arguments, Queue<?> queue)
boolean
isBound(Queue<?> queue)
void
linkAdded(MessageSender sender, PublishingLink link)
void
linkRemoved(MessageSender sender, PublishingLink link)
protected void
logCreated(Map<String,Object> attributes, Outcome outcome)
protected void
logDeleted(Outcome outcome)
protected void
logOperation(String operation)
protected void
logRecovered(Outcome outcome)
protected void
logUpdated(Map<String,Object> attributes, Outcome outcome)
protected abstract void
onBind(AbstractExchange.BindingIdentifier binding, Map<String,Object> arguments)
protected abstract void
onBindingUpdated(AbstractExchange.BindingIdentifier binding, Map<String,Object> newArguments)
protected void
onCreate()
protected com.google.common.util.concurrent.ListenableFuture<Void>
onDelete()
protected void
onOpen()
protected abstract void
onUnbind(AbstractExchange.BindingIdentifier binding)
void
onValidate()
Validation performed for configured object creation and opening.void
removeReference(DestinationReferrer destinationReferrer)
void
replaceBinding(String bindingKey, Queue<?> queue, Map<String,Object> arguments)
void
resetStatistics()
<M extends ServerMessage<? extends StorableMessageMetaData>>
RoutingResult<M>route(M message, String routingAddress, InstanceProperties instanceProperties)
Routes a messageString
toString()
boolean
unbind(String destination, String bindingKey)
protected void
validateChange(ConfiguredObject<?> proxyForValidation, Set<String> changedAttributes)
protected void
validateOnCreate()
-
Methods inherited from class org.apache.qpid.server.model.AbstractConfiguredObject
addChangeListener, addChildAsync, addFutureCallback, applyToChildren, asObjectRecord, attainState, attributesAsString, attributeSet, authorise, authorise, authorise, authoriseCreateChild, awaitChildClassToAttainState, awaitChildClassToAttainState, beforeClose, beforeDelete, changeAttributes, childAdded, childRemoved, closeAsync, closeChildren, create, createAsync, createChild, createChildAsync, decryptSecrets, delete, deleteAsync, deleteChildren, deleteNoChecks, doAfter, doAfter, doAfter, doAfter, doAfter, doAfter, doAfterAlways, doAfterAlways, doCreation, doOnConfigThread, doOpening, doResolution, doSync, doSync, doValidation, findConfiguredObject, forceUpdateAllSecureAttributes, getAccessControl, getActualAttributes, getAncestor, getAttainedChildById, getAttainedChildByName, getAttribute, getAttributeNames, getCategoryClass, getChildById, getChildByName, getChildExecutor, getChildren, getContext, getContextKeys, getContextValue, getContextValue, getCreatedBy, getCreatedTime, getDescription, getDesiredState, getId, getLastOpenedTime, getLastUpdatedBy, getLastUpdatedTime, getLifetimePolicy, getModel, getName, getObjectFactory, getParent, getState, getStatistics, getStatistics, getSubjectWithAddedSystemRights, getSystemPrincipal, getSystemTaskControllerContext, getSystemTaskSubject, getSystemTaskSubject, getTaskExecutor, getType, getTypeClass, getUserPreferences, handleExceptionOnOpen, hasEncrypter, isDurable, isSystemProcess, isSystemSubject, managesChildStorage, newToken, notifyStateChanged, onClose, onExceptionInOpen, onResolve, open, openAsync, postResolve, postResolveChildren, postSetAttributes, registerWithParents, removeChangeListener, removeContextVariable, rethrowRuntimeExceptionsOnOpen, runTask, setAttributes, setAttributesAsync, setContextVariable, setEncrypter, setState, setUserPreferences, start, startAsync, stop, updateModel, validateChildDelete
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.qpid.server.model.ConfiguredObject
addChangeListener, asObjectRecord, authorise, authorise, authorise, closeAsync, createChild, createChildAsync, decryptSecrets, delete, deleteAsync, findConfiguredObject, getActualAttributes, getAttainedChildById, getAttainedChildByName, getAttribute, getAttributeNames, getCategoryClass, getChildById, getChildByName, getChildExecutor, getChildren, getContext, getCreatedBy, getCreatedTime, getDescription, getDesiredState, getId, getLastOpenedTime, getLastUpdatedBy, getLastUpdatedTime, getLifetimePolicy, getModel, getName, getObjectFactory, getParent, getState, getStatistics, getStatistics, getType, getTypeClass, getUserPreferences, hasEncrypter, isDurable, managesChildStorage, newToken, open, openAsync, removeChangeListener, removeContextVariable, setAttributes, setAttributesAsync, setContextVariable, setUserPreferences
-
Methods inherited from interface org.apache.qpid.server.model.ContextProvider
getContextKeys, getContextValue, getContextValue
-
Methods inherited from interface org.apache.qpid.server.message.MessageDestination
getName, isDurable
-
Methods inherited from interface org.apache.qpid.server.model.TaskExecutorProvider
getTaskExecutor
-
-
-
-
Constructor Detail
-
AbstractExchange
public AbstractExchange(Map<String,Object> attributes, QueueManagingVirtualHost<?> vhost)
-
-
Method Detail
-
onValidate
public void onValidate()
Description copied from class:AbstractConfiguredObject
Validation performed for configured object creation and opening.- Overrides:
onValidate
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
validateChange
protected void validateChange(ConfiguredObject<?> proxyForValidation, Set<String> changedAttributes)
- Overrides:
validateChange
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
validateOnCreate
protected void validateOnCreate()
- Overrides:
validateOnCreate
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
onCreate
protected void onCreate()
- Overrides:
onCreate
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
onOpen
protected void onOpen()
- Overrides:
onOpen
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
getEventLogger
public EventLogger getEventLogger()
- Specified by:
getEventLogger
in interfaceExchange<T extends AbstractExchange<T>>
-
isAutoDelete
public boolean isAutoDelete()
- Specified by:
isAutoDelete
in interfaceExchange<T extends AbstractExchange<T>>
- Returns:
- true if the exchange will be deleted after all queues have been detached
-
destinationRemoved
public void destinationRemoved(MessageDestination destination)
- Specified by:
destinationRemoved
in interfaceMessageSender
-
getUnroutableMessageBehaviour
public Exchange.UnroutableMessageBehaviour getUnroutableMessageBehaviour()
- Specified by:
getUnroutableMessageBehaviour
in interfaceExchange<T extends AbstractExchange<T>>
-
toString
public String toString()
- Overrides:
toString
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
getVirtualHost
public QueueManagingVirtualHost<?> getVirtualHost()
- Specified by:
getVirtualHost
in interfaceExchange<T extends AbstractExchange<T>>
-
isBound
public boolean isBound(String bindingKey, Map<String,Object> arguments, Queue<?> queue)
Description copied from interface:Exchange
Determines whether a message would be isBound to a particular queue using a specific routing key and arguments- Specified by:
isBound
in interfaceExchange<T extends AbstractExchange<T>>
- Returns:
-
isBound
public boolean isBound(String bindingKey, Queue<?> queue)
Description copied from interface:Exchange
Determines whether a message would be isBound to a particular queue using a specific routing key- Specified by:
isBound
in interfaceExchange<T extends AbstractExchange<T>>
- Returns:
-
isBound
public boolean isBound(String bindingKey)
Description copied from interface:Exchange
Determines whether a message is routing to any queue using a specific _routing key- Specified by:
isBound
in interfaceExchange<T extends AbstractExchange<T>>
- Returns:
-
isBound
public boolean isBound(Queue<?> queue)
- Specified by:
isBound
in interfaceExchange<T extends AbstractExchange<T>>
-
isBound
public boolean isBound(Map<String,Object> arguments, Queue<?> queue)
- Specified by:
isBound
in interfaceExchange<T extends AbstractExchange<T>>
-
isBound
public boolean isBound(Map<String,Object> arguments)
- Specified by:
isBound
in interfaceExchange<T extends AbstractExchange<T>>
-
isBound
public boolean isBound(String bindingKey, Map<String,Object> arguments)
- Specified by:
isBound
in interfaceExchange<T extends AbstractExchange<T>>
-
hasBindings
public boolean hasBindings()
Description copied from interface:Exchange
Returns true if this exchange has at least one binding associated with it.- Specified by:
hasBindings
in interfaceExchange<T extends AbstractExchange<T>>
- Returns:
-
getAlternateBinding
public AlternateBinding getAlternateBinding()
- Specified by:
getAlternateBinding
in interfaceExchange<T extends AbstractExchange<T>>
-
getAlternateBindingDestination
public MessageDestination getAlternateBindingDestination()
- Specified by:
getAlternateBindingDestination
in interfaceMessageDestination
-
removeReference
public void removeReference(DestinationReferrer destinationReferrer)
- Specified by:
removeReference
in interfaceMessageDestination
-
addReference
public void addReference(DestinationReferrer destinationReferrer)
- Specified by:
addReference
in interfaceMessageDestination
-
getBindings
public Collection<Binding> getBindings()
- Specified by:
getBindings
in interfaceExchange<T extends AbstractExchange<T>>
-
onBindingUpdated
protected abstract void onBindingUpdated(AbstractExchange.BindingIdentifier binding, Map<String,Object> newArguments) throws AMQInvalidArgumentException
- Throws:
AMQInvalidArgumentException
-
onBind
protected abstract void onBind(AbstractExchange.BindingIdentifier binding, Map<String,Object> arguments) throws AMQInvalidArgumentException
- Throws:
AMQInvalidArgumentException
-
onUnbind
protected abstract void onUnbind(AbstractExchange.BindingIdentifier binding)
-
getBindingCount
public long getBindingCount()
- Specified by:
getBindingCount
in interfaceExchange<T extends AbstractExchange<T>>
-
getProducerCount
public long getProducerCount()
- Specified by:
getProducerCount
in interfaceExchange<T extends AbstractExchange<T>>
-
route
public <M extends ServerMessage<? extends StorableMessageMetaData>> RoutingResult<M> route(M message, String routingAddress, InstanceProperties instanceProperties)
Description copied from interface:MessageDestination
Routes a message- Specified by:
route
in interfaceMessageDestination
- Parameters:
message
- the message to be routedroutingAddress
- the routing addressinstanceProperties
- the instance properties
-
doRoute
protected abstract <M extends ServerMessage<? extends StorableMessageMetaData>> void doRoute(M message, String routingAddress, InstanceProperties instanceProperties, RoutingResult<M> result)
-
bind
public boolean bind(String destination, String bindingKey, Map<String,Object> arguments, boolean replaceExistingArguments)
- Specified by:
bind
in interfaceExchange<T extends AbstractExchange<T>>
-
getPublishingLinks
public Collection<Binding> getPublishingLinks(MessageDestination destination)
- Specified by:
getPublishingLinks
in interfaceExchange<T extends AbstractExchange<T>>
- Specified by:
getPublishingLinks
in interfaceMessageSender
-
getDurableBindings
public Collection<Binding> getDurableBindings()
- Specified by:
getDurableBindings
in interfaceExchange<T extends AbstractExchange<T>>
-
getCreatingLinkInfo
public CreatingLinkInfo getCreatingLinkInfo()
- Specified by:
getCreatingLinkInfo
in interfaceExchange<T extends AbstractExchange<T>>
-
unbind
public boolean unbind(String destination, String bindingKey)
- Specified by:
unbind
in interfaceExchange<T extends AbstractExchange<T>>
-
getMessagesIn
public long getMessagesIn()
- Specified by:
getMessagesIn
in interfaceExchange<T extends AbstractExchange<T>>
-
getMsgRoutes
public long getMsgRoutes()
-
getMessagesDropped
public long getMessagesDropped()
- Specified by:
getMessagesDropped
in interfaceExchange<T extends AbstractExchange<T>>
-
getBytesIn
public long getBytesIn()
- Specified by:
getBytesIn
in interfaceExchange<T extends AbstractExchange<T>>
-
getByteRoutes
public long getByteRoutes()
-
getBytesDropped
public long getBytesDropped()
- Specified by:
getBytesDropped
in interfaceExchange<T extends AbstractExchange<T>>
-
addBinding
public boolean addBinding(String bindingKey, Queue<?> queue, Map<String,Object> arguments) throws AMQInvalidArgumentException
- Specified by:
addBinding
in interfaceExchange<T extends AbstractExchange<T>>
- Throws:
AMQInvalidArgumentException
-
replaceBinding
public void replaceBinding(String bindingKey, Queue<?> queue, Map<String,Object> arguments) throws AMQInvalidArgumentException
- Specified by:
replaceBinding
in interfaceExchange<T extends AbstractExchange<T>>
- Throws:
AMQInvalidArgumentException
-
onDelete
protected com.google.common.util.concurrent.ListenableFuture<Void> onDelete()
- Overrides:
onDelete
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
deleteBinding
public boolean deleteBinding(String bindingKey, Queue<?> queue)
- Specified by:
deleteBinding
in interfaceExchange<T extends AbstractExchange<T>>
-
hasBinding
public boolean hasBinding(String bindingKey, Queue<?> queue)
- Specified by:
hasBinding
in interfaceExchange<T extends AbstractExchange<T>>
-
getAddressSpace
public NamedAddressSpace getAddressSpace()
- Specified by:
getAddressSpace
in interfaceMessageDestination
-
authorisePublish
public void authorisePublish(SecurityToken token, Map<String,Object> arguments) throws AccessControlException
- Specified by:
authorisePublish
in interfaceMessageDestination
- Throws:
AccessControlException
-
logOperation
protected void logOperation(String operation)
- Overrides:
logOperation
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
linkAdded
public void linkAdded(MessageSender sender, PublishingLink link)
- Specified by:
linkAdded
in interfaceMessageDestination
-
linkRemoved
public void linkRemoved(MessageSender sender, PublishingLink link)
- Specified by:
linkRemoved
in interfaceMessageDestination
-
close
public void close()
- Specified by:
close
in interfaceConfiguredObject<T extends AbstractExchange<T>>
- Overrides:
close
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
resetStatistics
public void resetStatistics()
- Specified by:
resetStatistics
in interfaceExchange<T extends AbstractExchange<T>>
-
logCreated
protected void logCreated(Map<String,Object> attributes, Outcome outcome)
- Overrides:
logCreated
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
logRecovered
protected void logRecovered(Outcome outcome)
- Overrides:
logRecovered
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
logDeleted
protected void logDeleted(Outcome outcome)
- Overrides:
logDeleted
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
logUpdated
protected void logUpdated(Map<String,Object> attributes, Outcome outcome)
- Overrides:
logUpdated
in classAbstractConfiguredObject<T extends AbstractExchange<T>>
-
-