Coverage Report - com.sourceforge.jpatterns.patterns.bhv.chain.IChainMessage
 
Classes in this File Line Coverage Branch Coverage Complexity
IChainMessage
N/A 
N/A 
1
 
 1  
 package com.sourceforge.jpatterns.patterns.bhv.chain;
 2  
 
 3  
 import java.io.Serializable;
 4  
 
 5  
 /**
 6  
  * This interface is going to be used as the DTO between different actors of "chain of responsibility" patterns implemented here. It
 7  
  * could be used at both "hierarchical" and "chainable" implementations of this patterns. todo: check this statement
 8  
  * <br/>
 9  
  * It identifies all the necessary methods for working with the chain of responsibility.
 10  
  * <ul>
 11  
  * <li>identifying the type of message</li>
 12  
  * <li>allow to pass the input objects</li>
 13  
  * <li>allows to check the output of chain</li>
 14  
  * </ul>
 15  
  * <p/>
 16  
  * Also the important feature is it allows to identify the handlers/hierarchy items which added/extended/initialized the inputs
 17  
  * and outputs. todo: check this statement
 18  
  * <p/>
 19  
  * todo: what about rmi/ejb/jta/jms communication? COuld this message used here??
 20  
  * todo: why we need it cloneable???
 21  
  * todo: which other interfaces it should extend
 22  
  *
 23  
  * todo: think over forwards/includes at the chain handlers etc.
 24  
  * 
 25  
  * $Author:: zmicer             $<br/>
 26  
  */
 27  
 public interface IChainMessage extends Serializable, Cloneable
 28  
 {
 29  
     /**
 30  
      * @return the type of message. Can not be null (otherwise <code>IllegalArgumentException</code> would appear).
 31  
      */
 32  
     String getType();
 33  
 
 34  
     /**
 35  
      * @return returns the constant allowing us to determine the status of message (if it is under construction or was proceed by the
 36  
      *         certain handlers/items etc ) todo: check this statement, introduce constants + introduce configuration os the system
 37  
      *         to do it
 38  
      */
 39  
     String getStatus();
 40  
 
 41  
     /**
 42  
      * The type of message. Can not be null (otherwise <code>IllegalArgumentException</code> would appear).
 43  
      * <br/>
 44  
      * The method allowing us to setup the item of the message (in simply words to modify the state of object is intended just to be
 45  
      * used at the initialization of the message). At the base class of this interface the status would be analyzed using the
 46  
      * {@link IChainMessage#getStatus()} method to understand if we could change the status.
 47  
      * <br/>
 48  
      * So it would be allowed only if the message is mutatable (configuration of the system allows us to do it - e.g. some handler
 49  
      * changing the type of the message during sending it to the another handler/item. todo: check this statement) or
 50  
      * it is under construction (was not send and was not processed yet).
 51  
      *
 52  
      * @throws IllegalStateException in the case the message is not at the appropriate state to be set with the typ
 53  
      */
 54  
     void setType(String type) throws IllegalStateException;
 55  
 
 56  
     /**
 57  
      * Get unout param by its name.
 58  
      * todo: method allowing to determine inouts param by the id/items/handler could(shoul????) be added
 59  
      * todo: should we allow to remove the input params?? system configuration???
 60  
      * todo: where input params could be changed - at the handlers/items/inner runners etc??
 61  
      * todo: permissions for reading/writing here???
 62  
      * <p/>
 63  
      * Note: the configuration system of implementation may restrict the usage of this method (it is unpermissed)
 64  
      *
 65  
      * @param name name of the input param. Can not be null (otherwise <code>IllegalArgumentException</code> would appear).
 66  
      *
 67  
      * @return Object, some informatino which was put as input param
 68  
      *
 69  
      * @throws UnsupportedOperationException in the case the message could not return the input params
 70  
      *
 71  
      * @java5 consider java5 here
 72  
      */
 73  
     Object getInputParam(String name) throws UnsupportedOperationException;
 74  
 
 75  
     /**
 76  
      * Get the info which was put to that <code>IChainMessage</code> object.
 77  
      * todo: all the todos of above mentioned method have power here.
 78  
      * <p/>
 79  
      * <p/>
 80  
      * Note: the configuration system of implementation may restrict the usage of this method (it is unpermissed)
 81  
      *
 82  
      * @param param the name of param using which the object should be obtained. Can not be null (otherwise
 83  
      *              <code>IllegalArgumentException</code> would appear).
 84  
      *
 85  
      * @return the Object, output result.
 86  
      *
 87  
      * @throws UnsupportedOperationException in the case the message could not return the input params
 88  
      *
 89  
      * @java5 consider java5 here
 90  
      */
 91  
     Object getOutputInfo(String param) throws UnsupportedOperationException;
 92  
 }