org.objectweb.joram.mom.dest
Class Destination

java.lang.Object
  extended by fr.dyade.aaa.agent.Agent
      extended by org.objectweb.joram.mom.dest.Destination
All Implemented Interfaces:
AgentMBean, java.io.Serializable, DestinationMBean
Direct Known Subclasses:
Queue, Topic

public abstract class Destination
extends Agent
implements DestinationMBean

The Destination class implements the common behavior of MOM destinations.

See Also:
Serialized Form

Field Summary
static java.lang.String[] _rights
           
protected  java.util.Hashtable clients
          Table of the destination readers and writers.
 long creationDate
          date of creation.
protected  AgentId dmqId
          Identifier of the dead message queue this destination must send its dead messages to, if any.
protected  boolean freeReading
          true if the READ access is granted to everybody.
protected  boolean freeWriting
          true if the WRITE access is granted to everybody.
static org.objectweb.util.monolog.api.Logger logger
           
protected  long nbMsgsDeliverSinceCreation
           
protected  long nbMsgsReceiveSinceCreation
           
protected  long nbMsgsSentToDMQSinceCreation
           
static int READ
          READ access value.
static int READWRITE
          READ and WRITE access value.
protected  WakeUpTask task
           
static java.lang.String WAKEUP_PERIOD
           
static int WRITE
          WRITE access value.
 
Fields inherited from class fr.dyade.aaa.agent.Agent
emptyString, fixed, logmon
 
Constructor Summary
  Destination()
          Empty constructor for newInstance().
protected Destination(java.lang.String name, boolean fixed, int stamp)
          Constructor with parameters for fixing the destination and specifying its identifier.
 
Method Summary
 void agentFinalize(boolean lastTime)
          Finalizes the agent before it is garbaged.
protected  void agentInitialize(boolean firstTime)
          Gives this agent an opportunity to initialize after having been deployed, and each time it is loaded into memory.
protected  void clientMessages(AgentId from, ClientMessages not)
          Method implementing the reaction to a ClientMessages notification holding messages sent by a client.
 void delete()
          Permits this agent to destroy itself.
protected  void deleteNot(AgentId from, DeleteNot not)
          Method implementing the reaction to a DeleteNot notification requesting the deletion of the destination.
protected abstract  void doClientMessages(AgentId from, ClientMessages not)
           
protected abstract  void doDeleteNot(DeleteNot not)
           
protected abstract  void doRightRequest(AgentId user, int right)
          This method is needed for right revocation.
protected abstract  void doUnknownAgent(UnknownAgent not)
           
protected  void forward(AgentId to, Notification not)
           
 java.lang.String getCreationDate()
          Returns this destination creation time through a String of the form: dow mon dd hh:mm:ss zzz yyyy.
 long getCreationTimeInMillis()
          Returns this destination creation time as a long.
 java.lang.String getDestinationId()
          Returns the unique identifier of the destination.
 AgentId getDMQAgentId()
           
 java.lang.String getDMQId()
          Return the unique identifier of DMQ set for this destination if any.
protected  java.util.Hashtable getJMXStatistics()
          Returns values of all valid JMX attributes about the destination.
 java.lang.String getMBeanName()
           
 long getNbMsgsDeliverSinceCreation()
          Returns the number of messages delivered since creation time of this destination.
abstract  long getNbMsgsReceiveSinceCreation()
          Returns the number of messages received since creation time of this destination.
 long getNbMsgsSentToDMQSinceCreation()
          Returns the number of erroneous messages forwarded to the DMQ since creation time of this destination..
 long getPeriod()
          Returns the period value of this destination, -1 if not set.
 java.lang.String getRight(java.lang.String userid)
          Returns a string representation of rights set on this destination for a particular user.
 java.lang.String[] getRights()
          Returns a string representation of the rights set on this destination.
protected  void getRights(AgentId from, GetRightsRequestNot not)
          Method implementing the reaction to a GetRightsRequest notification requesting the rights about this destination.
abstract  byte getType()
          Returns the type of this destination: Queue or Topic.
protected  void handleAdminRequestNot(AgentId from, FwdAdminRequestNot not)
           
protected  void handleDeniedMessage(java.lang.String msgId, AgentId replyTo)
          Method used to do specific actions when a message is denied because of a lack of rights.
protected abstract  void initialize(boolean firstTime)
          Initializes the destination.
protected  boolean interceptorsAvailable()
           
protected  boolean isAdministrator(AgentId client)
          Checks the administering permission of a given client agent.
 boolean isFreeReading()
          Tests if this destination is free for reading.
 boolean isFreeWriting()
          Tests if this destination is free for writing.
protected  boolean isLocal(AgentId id)
           
protected  boolean isReader(AgentId client)
          Checks the reading permission of a given client agent.
protected  boolean isValidJMXAttribute(java.lang.String attrName)
          This method allows to exclude some JMX attribute of getJMXStatistics method.
protected  boolean isWriter(AgentId client)
          Checks the writing permission of a given client agent.
protected  void postProcess(ClientMessages msgs)
          This method is needed to add processing after the standard handling.
protected  ClientMessages preProcess(AgentId from, ClientMessages msgs)
          This method is needed to add processing before the standard handling.
protected  void processAdminCommand(AdminCommandRequest request, AgentId replyTo, java.lang.String requestMsgId)
          Proccess an admin command.
protected  Message processInterceptors(Message msg)
          Interceptors process
protected  void processSetRight(AgentId user, int right)
          set user right.
protected  java.util.Properties processStartHandler(java.util.Properties prop)
          Start the acquisition queue/topic handler.
protected  java.util.Properties processStopHandler(java.util.Properties prop)
          Stop the acquisition queue/topic handler.
 void react(AgentId from, Notification not)
          Distributes the received notifications to the appropriate reactions.
protected  void replyToTopic(AdminReply reply, AgentId replyTo, java.lang.String requestMsgId, java.lang.String replyMsgId)
           
protected  void requestGroupNot(AgentId from, RequestGroupNot not)
           
 void setAdminId(AgentId adminId)
          Sets the administrator of the destination.
 void setFreeReading(boolean on)
          Sets the FreeReading attribute for this destination.
 void setFreeWriting(boolean on)
          Sets the FreeWriting attribute for this destination.
 void setPeriod(long period)
          Sets or unsets the period for this destination.
 void setProperties(java.util.Properties prop)
          Configures a Destination.
protected  void setRight(SetRight request, AgentId replyTo, java.lang.String requestMsgId, java.lang.String replyMsgId)
          Method implementing the reaction to a SetRightRequest notification requesting rights to be set for a user.
protected  void unknownAgent(AgentId from, UnknownAgent not)
          Method implementing the reaction to an UnknownAgent notification.
protected  void updateProperties(java.util.Properties prop)
          Update properties configuration.
abstract  void wakeUpNot(WakeUpNot not)
           
 
Methods inherited from class fr.dyade.aaa.agent.Agent
delete, delete, deploy, deploy, getAgentId, getCommitTime, getId, getLogTopic, getName, getReactNb, getReactTime, isDeployed, isFixed, needToBeCommited, save, sendTo, sendTo, sendTo, setName, setNoSave, setSave, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.objectweb.joram.mom.dest.DestinationMBean
getName, toString
 
Methods inherited from interface fr.dyade.aaa.agent.AgentMBean
getAgentId, getCommitTime, getReactNb, getReactTime, isFixed
 

Field Detail

logger

public static org.objectweb.util.monolog.api.Logger logger

WAKEUP_PERIOD

public static final java.lang.String WAKEUP_PERIOD
See Also:
Constant Field Values

task

protected transient WakeUpTask task

freeReading

protected boolean freeReading
true if the READ access is granted to everybody.


freeWriting

protected boolean freeWriting
true if the WRITE access is granted to everybody.


clients

protected java.util.Hashtable clients
Table of the destination readers and writers.


READ

public static int READ
READ access value.


WRITE

public static int WRITE
WRITE access value.


READWRITE

public static int READWRITE
READ and WRITE access value.


dmqId

protected AgentId dmqId
Identifier of the dead message queue this destination must send its dead messages to, if any.


creationDate

public long creationDate
date of creation.


nbMsgsReceiveSinceCreation

protected long nbMsgsReceiveSinceCreation

nbMsgsDeliverSinceCreation

protected long nbMsgsDeliverSinceCreation

nbMsgsSentToDMQSinceCreation

protected long nbMsgsSentToDMQSinceCreation

_rights

public static java.lang.String[] _rights
Constructor Detail

Destination

public Destination()
Empty constructor for newInstance().


Destination

protected Destination(java.lang.String name,
                      boolean fixed,
                      int stamp)
Constructor with parameters for fixing the destination and specifying its identifier. It is uniquely used by the AdminTopic agent.

Method Detail

getType

public abstract byte getType()
Returns the type of this destination: Queue or Topic.

Returns:
the type of this destination.
See Also:
DestinationConstants.TOPIC_TYPE, DestinationConstants.QUEUE_TYPE

agentInitialize

protected void agentInitialize(boolean firstTime)
                        throws java.lang.Exception
Gives this agent an opportunity to initialize after having been deployed, and each time it is loaded into memory.

Overrides:
agentInitialize in class Agent
Parameters:
firstTime - true when first called by the factory
Throws:
java.lang.Exception - unspecialized exception

agentFinalize

public void agentFinalize(boolean lastTime)
Finalizes the agent before it is garbaged.

Overrides:
agentFinalize in class Agent
Parameters:
lastTime - true when last called by the factory on agent deletion.

getMBeanName

public java.lang.String getMBeanName()

react

public void react(AgentId from,
                  Notification not)
           throws java.lang.Exception
Distributes the received notifications to the appropriate reactions.

Overrides:
react in class Agent
Parameters:
from - agent sending notification
not - notification to react to
Throws:
java.lang.Exception

setAdminId

public final void setAdminId(AgentId adminId)
Sets the administrator of the destination.

Parameters:
adminId - Identifier of the administrator of the destination.

setProperties

public void setProperties(java.util.Properties prop)
                   throws RequestException
Configures a Destination.

Parameters:
prop - The initial set of properties.
Throws:
RequestException

initialize

protected abstract void initialize(boolean firstTime)
Initializes the destination.

Parameters:
firstTime - true when first called by the factory

isLocal

protected boolean isLocal(AgentId id)

getPeriod

public long getPeriod()
Returns the period value of this destination, -1 if not set.

Specified by:
getPeriod in interface DestinationMBean
Returns:
the period value of this destination; -1 if not set.

setPeriod

public void setPeriod(long period)
Sets or unsets the period for this destination.

Specified by:
setPeriod in interface DestinationMBean
Parameters:
period - The period value to be set or -1 for unsetting previous value (ignore 0).

wakeUpNot

public abstract void wakeUpNot(WakeUpNot not)

setRight

protected void setRight(SetRight request,
                        AgentId replyTo,
                        java.lang.String requestMsgId,
                        java.lang.String replyMsgId)
Method implementing the reaction to a SetRightRequest notification requesting rights to be set for a user.

Parameters:
not - The notification describing the security modifications.

doRightRequest

protected abstract void doRightRequest(AgentId user,
                                       int right)
This method is needed for right revocation. It allows to remove request or subscription from users no longer authorized.

Parameters:
user - The user about right modification.
right - The right modification.

processSetRight

protected void processSetRight(AgentId user,
                               int right)
                        throws RequestException
set user right.

Throws:
RequestException

getRights

protected void getRights(AgentId from,
                         GetRightsRequestNot not)
                  throws AccessException
Method implementing the reaction to a GetRightsRequest notification requesting the rights about this destination.

Throws:
AccessException - If the requester is not the administrator.

getRights

public java.lang.String[] getRights()
Returns a string representation of the rights set on this destination.

Specified by:
getRights in interface DestinationMBean
Returns:
the rights set on this destination.

getRight

public java.lang.String getRight(java.lang.String userid)
Returns a string representation of rights set on this destination for a particular user. The user is pointed out by its unique identifier.

Specified by:
getRight in interface DestinationMBean
Parameters:
userid - The user's unique identifier.
Returns:
the rights set on this destination.

isValidJMXAttribute

protected boolean isValidJMXAttribute(java.lang.String attrName)
This method allows to exclude some JMX attribute of getJMXStatistics method. It must be overloaded in subclass.

Parameters:
attrName - name of attribute to test.
Returns:
true if the attribute is a valid one.

getJMXStatistics

protected final java.util.Hashtable getJMXStatistics()
Returns values of all valid JMX attributes about the destination.

Returns:
a Hashtable containing the values of all valid JMX attributes about the destination. The keys are the name of corresponding attributes.

clientMessages

protected void clientMessages(AgentId from,
                              ClientMessages not)
                       throws AccessException
Method implementing the reaction to a ClientMessages notification holding messages sent by a client.

If the sender is not a writer on the destination the messages are sent to the DMQ and an exception is thrown. Otherwise, the processing of the received messages is performed in subclasses.

Throws:
AccessException - If the sender is not a WRITER on the destination.

handleDeniedMessage

protected void handleDeniedMessage(java.lang.String msgId,
                                   AgentId replyTo)
Method used to do specific actions when a message is denied because of a lack of rights.


unknownAgent

protected void unknownAgent(AgentId from,
                            UnknownAgent not)
Method implementing the reaction to an UnknownAgent notification.

If the unknown agent is the DMQ, its identifier is set to null. If it is a client of the destination, it is removed. Specific processing is also done in subclasses.


deleteNot

protected void deleteNot(AgentId from,
                         DeleteNot not)
Method implementing the reaction to a DeleteNot notification requesting the deletion of the destination.

The processing is done in subclasses if the sender is an administrator.


requestGroupNot

protected void requestGroupNot(AgentId from,
                               RequestGroupNot not)

isReader

protected boolean isReader(AgentId client)
Checks the reading permission of a given client agent.

Parameters:
client - AgentId of the client requesting a reading permission.

isWriter

protected boolean isWriter(AgentId client)
Checks the writing permission of a given client agent.

Parameters:
client - AgentId of the client requesting a writing permission.

isAdministrator

protected boolean isAdministrator(AgentId client)
Checks the administering permission of a given client agent.

Parameters:
client - AgentId of the client requesting an admin permission.

doClientMessages

protected abstract void doClientMessages(AgentId from,
                                         ClientMessages not)

doUnknownAgent

protected abstract void doUnknownAgent(UnknownAgent not)

doDeleteNot

protected abstract void doDeleteNot(DeleteNot not)

delete

public void delete()
Description copied from class: Agent
Permits this agent to destroy itself. If necessary, this method should be overloaded to work properly.

Specified by:
delete in interface AgentMBean
Specified by:
delete in interface DestinationMBean
Overrides:
delete in class Agent

preProcess

protected ClientMessages preProcess(AgentId from,
                                    ClientMessages msgs)
This method is needed to add processing before the standard handling. It is used in subclass of Queue and Topic. The incoming messages can be modified or deleted during the processing.

Parameters:
from - The sender of the message
msgs - The incoming messages.
Returns:
The incoming messages after processing.

postProcess

protected void postProcess(ClientMessages msgs)
This method is needed to add processing after the standard handling. It is used in subclass of Queue and Topic. The incoming messages can be modified or deleted during the processing.

Parameters:
from - The sender of the message
msgs - The incoming messages.

getDestinationId

public final java.lang.String getDestinationId()
Returns the unique identifier of the destination.

Specified by:
getDestinationId in interface DestinationMBean
Returns:
the unique identifier of the destination.

isFreeReading

public boolean isFreeReading()
Tests if this destination is free for reading.

Specified by:
isFreeReading in interface DestinationMBean
Returns:
true if anyone can receive messages from this destination; false otherwise.

setFreeReading

public void setFreeReading(boolean on)
Sets the FreeReading attribute for this destination.

Specified by:
setFreeReading in interface DestinationMBean
Parameters:
on - if true anyone can receive message from this destination.

isFreeWriting

public boolean isFreeWriting()
Tests if this destination is free for writing.

Specified by:
isFreeWriting in interface DestinationMBean
Returns:
true if anyone can send messages to this destination; false otherwise.

setFreeWriting

public void setFreeWriting(boolean on)
Sets the FreeWriting attribute for this destination.

Specified by:
setFreeWriting in interface DestinationMBean
Parameters:
on - if true anyone can send message to this destination.

getDMQId

public java.lang.String getDMQId()
Return the unique identifier of DMQ set for this destination if any.

Specified by:
getDMQId in interface DestinationMBean
Returns:
the unique identifier of DMQ set for this destination if any; null otherwise.

getDMQAgentId

public AgentId getDMQAgentId()

getCreationTimeInMillis

public long getCreationTimeInMillis()
Returns this destination creation time as a long.

Specified by:
getCreationTimeInMillis in interface DestinationMBean
Returns:
the destination creation time as UTC milliseconds from the epoch.

getCreationDate

public java.lang.String getCreationDate()
Returns this destination creation time through a String of the form: dow mon dd hh:mm:ss zzz yyyy.

Specified by:
getCreationDate in interface DestinationMBean
Returns:
the destination creation time.

getNbMsgsReceiveSinceCreation

public abstract long getNbMsgsReceiveSinceCreation()
Returns the number of messages received since creation time of this destination.

Specified by:
getNbMsgsReceiveSinceCreation in interface DestinationMBean
Returns:
the number of messages received since creation time.

getNbMsgsDeliverSinceCreation

public long getNbMsgsDeliverSinceCreation()
Returns the number of messages delivered since creation time of this destination. It includes messages all delivered messages to a consumer, already acknowledged or not.

Specified by:
getNbMsgsDeliverSinceCreation in interface DestinationMBean
Returns:
the number of messages delivered since creation time.

getNbMsgsSentToDMQSinceCreation

public long getNbMsgsSentToDMQSinceCreation()
Returns the number of erroneous messages forwarded to the DMQ since creation time of this destination..

Specified by:
getNbMsgsSentToDMQSinceCreation in interface DestinationMBean
Returns:
the number of erroneous messages forwarded to the DMQ.

replyToTopic

protected void replyToTopic(AdminReply reply,
                            AgentId replyTo,
                            java.lang.String requestMsgId,
                            java.lang.String replyMsgId)

forward

protected final void forward(AgentId to,
                             Notification not)

handleAdminRequestNot

protected void handleAdminRequestNot(AgentId from,
                                     FwdAdminRequestNot not)
Parameters:
from -
not -

processAdminCommand

protected void processAdminCommand(AdminCommandRequest request,
                                   AgentId replyTo,
                                   java.lang.String requestMsgId)
Proccess an admin command.

Parameters:
request - The administration request.
replyTo - The destination to reply.
requestMsgId - The JMS message id needed to reply.

updateProperties

protected void updateProperties(java.util.Properties prop)
                         throws java.lang.Exception
Update properties configuration. (overload in specific destination)

Parameters:
prop - properties to update.
Throws:
java.lang.Exception

processStartHandler

protected java.util.Properties processStartHandler(java.util.Properties prop)
                                            throws java.lang.Exception
Start the acquisition queue/topic handler.

Parameters:
prop - properties for start if needed (can be null)
Returns:
properties for the reply.
Throws:
java.lang.Exception

processStopHandler

protected java.util.Properties processStopHandler(java.util.Properties prop)
                                           throws java.lang.Exception
Stop the acquisition queue/topic handler.

Parameters:
prop - properties for start if needed (can be null)
Returns:
properties for the reply.
Throws:
java.lang.Exception

processInterceptors

protected Message processInterceptors(Message msg)
Interceptors process

Parameters:
msg - the message
Returns:
message potentially modified by the interceptors (message can be null)

interceptorsAvailable

protected boolean interceptorsAvailable()
Returns:
true if interceptors set


Copyright © 2011 ScalAgent D.T.. All Rights Reserved.