001 /*
002 * Created on 19-Apr-2004
003 */
004 package ca.uhn.hl7v2.protocol.impl;
005
006 import java.util.ArrayList;
007 import java.util.List;
008
009 import ca.uhn.hl7v2.protocol.AcceptValidator;
010 import ca.uhn.hl7v2.protocol.ApplicationRouter;
011 import ca.uhn.hl7v2.protocol.ProcessorContext;
012 import ca.uhn.hl7v2.protocol.SafeStorage;
013 import ca.uhn.hl7v2.protocol.TransportLayer;
014
015 /**
016 * Default implementation of <code>ProcessorContext</code>.
017 *
018 * @author <a href="mailto:bryan.tripp@uhn.on.ca">Bryan Tripp</a>
019 * @version $Revision: 1.1 $ updated on $Date: 2007-02-19 02:24:26 $ by $Author: jamesagnew $
020 */
021 public class ProcessorContextImpl implements ProcessorContext {
022
023 private final ApplicationRouter myRouter;
024 private final TransportLayer myLocallyDrivenTransport;
025 private final TransportLayer myRemotelyDrivenTransport;
026 private final SafeStorage mySafeStorage;
027 private final List<AcceptValidator> myValidators;
028 private final List<String> myMetadataFields;
029
030 /**
031 * Creates a new instance that uses the given resources.
032 *
033 * @param theRouter
034 * @param theTransport a <code>TransportLayer</code> used for both locally-initiated
035 * and remotely-initiated message exchanges
036 * @param theStorage
037 */
038 public ProcessorContextImpl(
039 ApplicationRouter theRouter,
040 TransportLayer theTransport,
041 SafeStorage theStorage) {
042
043 myRouter = theRouter;
044 myRemotelyDrivenTransport = theTransport;
045 myLocallyDrivenTransport = theTransport;
046 mySafeStorage = theStorage;
047
048 myValidators = new ArrayList<AcceptValidator>(8);
049 myMetadataFields = new ArrayList<String>(30);
050 }
051
052 /**
053 * Creates a new instance that uses the given resources.
054 *
055 * @param theRouter
056 * @param theLocallyDrivenTransport a <code>TransportLayer</code> used for locally-initiated
057 * and message exchanges
058 * @param theRemotelyDrivenTransport a <code>TransportLayer</code> used for remotely-initiated
059 * and message exchanges
060 * @param theStorage
061 */
062 public ProcessorContextImpl(
063 ApplicationRouter theRouter,
064 TransportLayer theLocallyDrivenTransport,
065 TransportLayer theRemotelyDrivenTransport,
066 SafeStorage theStorage) {
067
068 myRouter = theRouter;
069 myRemotelyDrivenTransport = theRemotelyDrivenTransport;
070 myLocallyDrivenTransport = theLocallyDrivenTransport;
071 mySafeStorage = theStorage;
072
073 myValidators = new ArrayList<AcceptValidator>(8);
074 myMetadataFields = new ArrayList<String>(30);
075 }
076
077 /**
078 * @see ca.uhn.hl7v2.protocol.ProcessorContext#getRouter()
079 */
080 public ApplicationRouter getRouter() {
081 return myRouter;
082 }
083
084 /**
085 * @see ca.uhn.hl7v2.protocol.ProcessorContext#getRemotelyDrivenTransportLayer()
086 */
087 public TransportLayer getRemotelyDrivenTransportLayer() {
088 return myRemotelyDrivenTransport;
089 }
090
091 /**
092 * @see ca.uhn.hl7v2.protocol.ProcessorContext#getLocallyDrivenTransportLayer()
093 */
094 public TransportLayer getLocallyDrivenTransportLayer() {
095 return myLocallyDrivenTransport;
096 }
097
098 /**
099 * @see ca.uhn.hl7v2.protocol.ProcessorContext#getValidators()
100 */
101 public AcceptValidator[] getValidators() {
102 return myValidators.toArray(new AcceptValidator[0]);
103 }
104
105 /**
106 * Adds a new validator to the list of those returned by
107 * <code>getValidators()</code>.
108 *
109 * @param theValidator the validator to add
110 */
111 public void addValidator(AcceptValidator theValidator) {
112 myValidators.add(theValidator);
113 }
114
115 /**
116 * @see ca.uhn.hl7v2.protocol.ProcessorContext#getSafeStorage()
117 */
118 public SafeStorage getSafeStorage() {
119 return mySafeStorage;
120 }
121
122 /**
123 * @see ca.uhn.hl7v2.protocol.ProcessorContext#getMetadataFields()
124 */
125 public List<String> getMetadataFields() {
126 return myMetadataFields;
127 }
128
129 }