01: package com.mockrunner.connector;
02:
03: import javax.resource.ResourceException;
04: import javax.resource.cci.InteractionSpec;
05: import javax.resource.cci.Record;
06:
07: /**
08: * Implementations of this interface can be addded to {@link InteractionHandler}.
09: * When one of the two <code>execute</code> methods of {@link com.mockrunner.mock.connector.cci.MockInteraction}
10: * are called, the {@link InteractionHandler} iterates through the implementors
11: * and dispatches the <code>execute</code> call to the first one which returns
12: * <code>true</code> for {@link #canHandle}.
13: * There are several implementations of this interface, e.g.
14: * {@link StreamableRecordByteArrayInteraction},
15: * {@link WSIFInteraction},
16: * {@link IndexedRecordInteraction},
17: * {@link MappedRecordInteraction}.
18: * Of course, you can also implement your own version and it may be necessary
19: * in many situations.
20: */
21: public interface InteractionImplementor {
22: /**
23: * Implementors should return <code>true</code> if this implementor can handle the request.
24: * Please note that for calls to {@link #execute(InteractionSpec, Record)},
25: * the second <code>Record</code> parameter is <code>null</code>.
26: * @param interactionSpec the <code>InteractionSpec</code> for the actual call
27: * @param actualRequest the request for the actual call
28: * @param actualResponse the response for the actual call, may be <code>null</code>
29: * @return <code>true</code> if this implementor will handle the request and
30: * will return the specified response, <code>false</code> otherwise
31: */
32: public boolean canHandle(InteractionSpec interactionSpec,
33: Record actualRequest, Record actualResponse);
34:
35: /**
36: * First version of the <code>Interaction.execute</code> methods.
37: * @param interactionSpec the interaction spec
38: * @param actualRequest the actual request
39: * @return the response according to the current request
40: */
41: public Record execute(InteractionSpec interactionSpec,
42: Record actualRequest) throws ResourceException;
43:
44: /**
45: * Second version of the <code>Interaction.execute</code> methods.
46: * @param interactionSpec the interaction spec
47: * @param actualRequest the actual request
48: * @param actualResponse the actual response
49: * @return <code>true</code> under normal conditions
50: */
51: public boolean execute(InteractionSpec interactionSpec,
52: Record actualRequest, Record actualResponse)
53: throws ResourceException;
54: }
|