001    /*
002     * Created on 16-Apr-2004
003     */
004    package ca.uhn.hl7v2.protocol;
005    
006    import java.util.List;
007    
008    /**
009     * The operational context of a <code>Processor</code>.  This defines 
010     * certain resources that are not part of the <code>Processor</code>, 
011     * but are needed in order to implement it, and may vary between  
012     * deployments.  
013     * 
014     * @author <a href="mailto:bryan.tripp@uhn.on.ca">Bryan Tripp</a>
015     * @version $Revision: 1.1 $ updated on $Date: 2007/02/19 02:24:38 $ by $Author: jamesagnew $
016     */
017    public interface ProcessorContext {
018    
019        /**
020         * @return the router that directs unsolicited inbound messages to 
021         *      the appropriate <code>Application</code>  
022         */
023        public ApplicationRouter getRouter();
024    
025        /**
026         * @return the object responsible for transport of remotely initiated message 
027         *      exchanges (normally with a remote server)
028         */    
029        public TransportLayer getRemotelyDrivenTransportLayer();
030        
031        
032        /**
033         * @return the object responsible for transport of locally initiated message 
034         *      exchanges (normally with a remote server)
035         */    
036        public TransportLayer getLocallyDrivenTransportLayer();
037    
038        /**
039         * @return the validators that determine whether a message can be 
040         *      accepted for routing to the appropriate application 
041         */    
042        public AcceptValidator[] getValidators();
043        
044        /**
045         * Adds a new validator to the list of those returned by 
046         * <code>getValidators()</code>.  
047         *  
048         * @param theValidator the validator to add 
049         */
050        public void addValidator(AcceptValidator theValidator);    
051        
052        /**
053         * @return a store for messages while they are being routed to the 
054         *      appropriate application 
055         */
056        public SafeStorage getSafeStorage();
057        
058        /**
059         * Returns the list of fields that are to be included as metadata whenever a <code>Message</code>
060         * is converted to a <code>Transportable</code>.  Each field is a String <code>Terser</code>
061         * path.  
062         *  
063         * @param theMetadataFields list of <code>Terser</code> paths of metadata fields 
064         */
065        public List getMetadataFields();
066        
067    }