1 package com.sourceforge.jpatterns.patterns.bhv.chain; 2 3 /** 4 * This class is served as handler of the messages by types and by my implementations of {@link IChainMessage} specified. It could 5 * also see not only the implementation of the message but also its type and composition of the inout params. It allows to provide 6 * output params (in that view IChainMessage is Data Trasnfer Object). 7 * 8 * todo: method for checking the permissions on the changing inputs/outputs 9 * todo: method answering the questions: forward/include/ next chain ??? 10 * todo: method saying if it rewriting output/ does this extend the input. 11 * 12 * todo: !!! we could chain the handlers using appropriate parents' handlers of this type of message or could chain the handlers 13 * of this chain item 14 * todo: IHandlersChain running all the hadnlers of this chain item for appropriate type of message and then passing the control 15 * above. 16 * 17 * 18 * dfvgsdg 19 * $Author:: zmicer $<br/> 20 */ 21 public interface IChainHandler 22 { 23 /** 24 * @return the type of the chain handler. This type is useful when we need to divide some instances of the same implementation 25 * on the groups. Could be null if this info is not valuable at the context of the implementation of the handler. 26 */ 27 String getType(); 28 29 /** 30 * Answers the question if the specified message fits this handler (could be handled by it). The specifics of this info is 31 * specified at the configuration of system (it is implementation specific info). 32 * 33 * @param message for which we need to answer the question above. Can not be null (otherwise 34 * <code>IllegalArgumentException</code> would appear). 35 * 36 * @return <code>true</code> if message could handle the message and <code>false</code> otherwise. 37 */ 38 boolean doesMessageFit(String message); 39 40 /** 41 * Answers the question if the specified message fits this handler (could be handled by it). The specifics of this info is 42 * specified at the configuration of system (it is implementation specific info). 43 * 44 * @param message for which we need to answer the question above. Can not be null (otherwise 45 * <code>IllegalArgumentException</code> would appear). 46 * 47 * @return <code>true</code> if message could handle the message and <code>false</code> otherwise. 48 */ 49 boolean doesMessageFit(IChainMessage message); 50 51 /** 52 * Handle the message. 53 * t 54 * todo: think of the return type - status etc?? 55 * todo: think if this method operating with string is usefull??? where it could be used??? 56 * 57 * @param message which we need to handle. Can not be null (otherwise <code>IllegalArgumentException</code> would appear). 58 * 59 * @throws UnsupportedOperationException in the case it can not handle the message (not permissions/illegal type of message etc.) 60 */ 61 void handleMessage(String message) throws UnsupportedOperationException; 62 63 /** 64 * Handle the message. The chain item is specified too to allow handler to perform chaining the handlers ot to call chain methods 65 * of the above chain items etc. 66 * todo: see IHandlersChain 67 * 68 * todo: think of the return type - status etc?? 69 * todo: think if this method operating with string is usefull??? where it could be used??? 70 * 71 * @param message which we need to handle. Can not be null (otherwise <code>IllegalArgumentException</code> would appear). 72 * @param chainItem the current chain item calling this 73 * 74 * @throws UnsupportedOperationException in the case it can not handle the message (not permissions/illegal type of message etc.) 75 */ 76 void handleMessage(String message, IHierarchyItem chainItem) throws UnsupportedOperationException; 77 78 /** 79 * Handle the message. The chain item is specified too to allow handler to perform chaining the handlers ot to call chain methods 80 * of the above chain items etc. 81 * todo: see IHandlersChain 82 * 83 * @param message which we need to handle. Can not be null (otherwise <code>IllegalArgumentException</code> would appear). 84 * 85 * @throws UnsupportedOperationException in the case it can not handle the message (not permissions/illegal type of message etc.) 86 */ 87 void handleMessage(IChainMessage message, IHierarchyItem chainItem) throws UnsupportedOperationException; 88 89 }