org.jboss.messaging.core.plugin.postoffice
Class DefaultPostOffice

java.lang.Object
  extended byorg.jboss.messaging.core.plugin.JDBCSupport
      extended byorg.jboss.messaging.core.plugin.postoffice.DefaultPostOffice
All Implemented Interfaces:
MessagingComponent, PostOffice
Direct Known Subclasses:
DefaultClusteredPostOffice

public class DefaultPostOffice
extends JDBCSupport
implements PostOffice

Version:
$Revision: 2726 $ $Id: DefaultPostOffice.java 2726 2007-05-24 19:25:06Z timfox $
Author:
Tim Fox, Clebert Suconic, Ovidiu Feodorov

Nested Class Summary
 
Nested classes inherited from class org.jboss.messaging.core.plugin.JDBCSupport
JDBCSupport.TransactionWrapper
 
Field Summary
protected  ConditionFactory conditionFactory
           
protected  java.util.Map conditionMap
           
protected  int currentNodeId
           
protected  FilterFactory filterFactory
           
protected  ReadWriteLock lock
           
protected  MessageStore ms
           
protected  java.util.Map nameMaps
           
protected  PersistenceManager pm
           
protected  TransactionRepository tr
           
 
Fields inherited from class org.jboss.messaging.core.plugin.JDBCSupport
ds, sqlProperties
 
Constructor Summary
DefaultPostOffice()
           
DefaultPostOffice(javax.sql.DataSource ds, TransactionManager tm, java.util.Properties sqlProperties, boolean createTablesOnStartup, int nodeId, java.lang.String officeName, MessageStore ms, PersistenceManager pm, TransactionRepository tr, FilterFactory filterFactory, ConditionFactory conditionFactory)
           
 
Method Summary
protected  void addBinding(Binding binding)
           
protected  void addToConditionMap(Binding binding)
           
protected  void addToNameMap(Binding binding)
           
 Binding bindQueue(Condition condition, Queue queue)
           
protected  Binding createBinding(int nodeID, Condition condition, java.lang.String queueName, long channelID, Filter filter, boolean durable, boolean isClustered)
           
protected  Binding createBinding(int nodeID, Condition condition, java.lang.String queueName, long channelID, java.lang.String filterString, boolean durable, boolean isClustered)
           
protected  boolean deleteBinding(int parameterNodeId, java.lang.String queueName)
           
 Binding getBindingforChannelId(long channelId)
           
 Binding getBindingForQueueName(java.lang.String queueName)
          Get the binding for the specified queue name.
 java.util.Collection getBindingsForCondition(Condition condition)
          List the bindings that match the specified condition
protected  java.util.Map getDefaultDDLStatements()
           
protected  java.util.Map getDefaultDMLStatements()
           
 java.lang.String getOfficeName()
           
protected  void insertBinding(Binding binding)
           
protected  Binding internalGetBindingForQueueName(java.lang.String queueName)
          Internal methods (e.g.
 boolean isLocal()
           
protected  java.util.Collection listBindingsForConditionInternal(Condition condition, boolean localOnly)
           
protected  void loadBindings(boolean nonClusteredOnly)
           
 java.lang.String printBindingInformation()
           
protected  Binding removeBinding(int nodeId, java.lang.String queueName)
           
protected  void removeFromConditionMap(Binding binding)
           
protected  Binding removeFromNameMap(int nodeId, java.lang.String queueName)
           
 boolean route(MessageReference ref, Condition condition, Transaction tx)
          Route a reference.
 void start()
           
 void stop()
           
 void stop(boolean sendNotification)
           
 java.lang.String toString()
           
 Binding unbindQueue(java.lang.String queueName)
           
 
Methods inherited from class org.jboss.messaging.core.plugin.JDBCSupport
closeConnection, closeResultSet, closeStatement, getSQLStatement, ignoreVerificationOnStartup
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ms

protected MessageStore ms

pm

protected PersistenceManager pm

tr

protected TransactionRepository tr

filterFactory

protected FilterFactory filterFactory

conditionFactory

protected ConditionFactory conditionFactory

currentNodeId

protected int currentNodeId

nameMaps

protected java.util.Map nameMaps

conditionMap

protected java.util.Map conditionMap

lock

protected ReadWriteLock lock
Constructor Detail

DefaultPostOffice

public DefaultPostOffice()

DefaultPostOffice

public DefaultPostOffice(javax.sql.DataSource ds,
                         TransactionManager tm,
                         java.util.Properties sqlProperties,
                         boolean createTablesOnStartup,
                         int nodeId,
                         java.lang.String officeName,
                         MessageStore ms,
                         PersistenceManager pm,
                         TransactionRepository tr,
                         FilterFactory filterFactory,
                         ConditionFactory conditionFactory)
Method Detail

start

public void start()
           throws java.lang.Exception
Specified by:
start in interface MessagingComponent
Overrides:
start in class JDBCSupport
Throws:
java.lang.Exception

stop

public void stop()
          throws java.lang.Exception
Specified by:
stop in interface MessagingComponent
Overrides:
stop in class JDBCSupport
Throws:
java.lang.Exception

stop

public void stop(boolean sendNotification)
          throws java.lang.Exception
Throws:
java.lang.Exception

getOfficeName

public java.lang.String getOfficeName()
Specified by:
getOfficeName in interface PostOffice

bindQueue

public Binding bindQueue(Condition condition,
                         Queue queue)
                  throws java.lang.Exception
Specified by:
bindQueue in interface PostOffice
Throws:
java.lang.Exception

unbindQueue

public Binding unbindQueue(java.lang.String queueName)
                    throws java.lang.Throwable
Specified by:
unbindQueue in interface PostOffice
Throws:
java.lang.Throwable

getBindingsForCondition

public java.util.Collection getBindingsForCondition(Condition condition)
                                             throws java.lang.Exception
Description copied from interface: PostOffice
List the bindings that match the specified condition

Specified by:
getBindingsForCondition in interface PostOffice
Throws:
java.lang.Exception

getBindingForQueueName

public Binding getBindingForQueueName(java.lang.String queueName)
                               throws java.lang.Exception
Description copied from interface: PostOffice
Get the binding for the specified queue name.

Specified by:
getBindingForQueueName in interface PostOffice
Throws:
java.lang.Exception

route

public boolean route(MessageReference ref,
                     Condition condition,
                     Transaction tx)
              throws java.lang.Exception
Description copied from interface: PostOffice
Route a reference.

Specified by:
route in interface PostOffice
Parameters:
condition - - the message will be routed to a queue if specified condition matches the condition of the binding.
tx - - the transaction or null if not in the context of a transaction.
Returns:
true if reference was accepted by at least one queue.
Throws:
java.lang.Exception

isLocal

public boolean isLocal()
Specified by:
isLocal in interface PostOffice
Returns:
true if it is a non clustered post office

getBindingforChannelId

public Binding getBindingforChannelId(long channelId)
                               throws java.lang.Exception
Specified by:
getBindingforChannelId in interface PostOffice
Throws:
java.lang.Exception

printBindingInformation

public java.lang.String printBindingInformation()

toString

public java.lang.String toString()

internalGetBindingForQueueName

protected Binding internalGetBindingForQueueName(java.lang.String queueName)
Internal methods (e.g. failOver) will already hold a lock and will need to call getBindingForQueueNames() without a lock. (Also... I dind't move this method to the protected section of the code as this is related to getBindingForQueueNames).


listBindingsForConditionInternal

protected java.util.Collection listBindingsForConditionInternal(Condition condition,
                                                                boolean localOnly)
                                                         throws java.lang.Exception
Throws:
java.lang.Exception

loadBindings

protected void loadBindings(boolean nonClusteredOnly)
                     throws java.lang.Exception
Throws:
java.lang.Exception

createBinding

protected Binding createBinding(int nodeID,
                                Condition condition,
                                java.lang.String queueName,
                                long channelID,
                                java.lang.String filterString,
                                boolean durable,
                                boolean isClustered)
                         throws java.lang.Exception
Throws:
java.lang.Exception

createBinding

protected Binding createBinding(int nodeID,
                                Condition condition,
                                java.lang.String queueName,
                                long channelID,
                                Filter filter,
                                boolean durable,
                                boolean isClustered)

insertBinding

protected void insertBinding(Binding binding)
                      throws java.lang.Exception
Throws:
java.lang.Exception

deleteBinding

protected boolean deleteBinding(int parameterNodeId,
                                java.lang.String queueName)
                         throws java.lang.Exception
Throws:
java.lang.Exception

addBinding

protected void addBinding(Binding binding)

removeBinding

protected Binding removeBinding(int nodeId,
                                java.lang.String queueName)

addToNameMap

protected void addToNameMap(Binding binding)

addToConditionMap

protected void addToConditionMap(Binding binding)

removeFromNameMap

protected Binding removeFromNameMap(int nodeId,
                                    java.lang.String queueName)

removeFromConditionMap

protected void removeFromConditionMap(Binding binding)

getDefaultDMLStatements

protected java.util.Map getDefaultDMLStatements()
Overrides:
getDefaultDMLStatements in class JDBCSupport

getDefaultDDLStatements

protected java.util.Map getDefaultDDLStatements()
Overrides:
getDefaultDDLStatements in class JDBCSupport


Copyright © 2006 JBoss Inc. All Rights Reserved.