01: // Copyright © 2006-2007 ASERT. Released under the Canoo Webtest license.
02: package com.canoo.webtest.plugins.emailtest;
03:
04: import javax.mail.Message;
05: import javax.mail.MessagingException;
06:
07: import com.canoo.webtest.engine.Context;
08: import com.canoo.webtest.engine.ContextHelper;
09: import com.canoo.webtest.engine.StepFailedException;
10: import com.canoo.webtest.interfaces.IContentFilter;
11:
12: /**
13: * Helper class for filtering Email content.
14: */
15: public abstract class AbstractEmailFilter extends
16: AbstractMessageOperationStep implements IContentFilter {
17: private static final String DUMMY_FILTER_URLSTR = "http://dummyEmailFilterUrl";
18:
19: protected AbstractEmailFilter() {
20: super (false);
21: }
22:
23: protected void performOperation(final Message message)
24: throws MessagingException {
25: final Context context = getContext();
26: try {
27: filterContent(message);
28: } catch (final MessagingException e) {
29: throw new StepFailedException(
30: "Error performing operation: " + e.getMessage(),
31: this );
32: } finally {
33: context.saveResponseAsCurrent(context.getCurrentResponse());
34: context.getConfig().setResultpath(
35: getContext().getConfig().getWebTestResultDir());
36: context.saveResponseAsCurrent(context.getCurrentResponse());
37: }
38: }
39:
40: protected abstract void filterContent(Message message)
41: throws MessagingException;
42:
43: /**
44: * @webtest.parameter required="no"
45: * skip="yes"
46: * description="A shorthand: <em>save='prefixName'</em> is the same as
47: * <em>savePrefix='prefixName' saveResponse='true'</em>."
48: */
49: public void setSave(final String prefix) {
50: // nothing as StepExecutionListener reads it from attributes
51: // but needs to be here to allow Ant to "set" it
52: }
53:
54: /**
55: * @webtest.parameter required="no"
56: * default="the 'savePrefix' parameter as specified in <config>."
57: * description="A name prefix can be specified for making a permanent copy of
58: * received responses. A unique number and the file extension (depending on the
59: * MIME-Type) will be appended. The <em>resultpath</em> attribute of the
60: * <config> element is used for determining the location of the saved result."
61: */
62: public void setSavePrefix(final String prefix) {
63: // nothing as StepExecutionListener reads it from attributes
64: // but needs to be here to allow Ant to "set" it
65: }
66:
67: /**
68: * @webtest.parameter required="no"
69: * description="Whether to make a permanent copy of received responses.
70: * Overrides the default value set in the <config> element."
71: */
72: public void setSaveResponse(final String response) {
73: // nothing as StepExecutionListener reads it from attributes
74: // but needs to be here to allow Ant to "set" it
75: }
76:
77: /**
78: * Place the content as the current response
79: *
80: * @param responseBytes
81: * @param contentType
82: */
83: protected void defineAsCurrentResponse(final byte[] responseBytes,
84: final String contentType) {
85: ContextHelper.defineAsCurrentResponse(getContext(),
86: responseBytes, contentType, DUMMY_FILTER_URLSTR);
87: }
88:
89: /**
90: * Place the content as the current response
91: *
92: * @param response
93: * @param contentType
94: */
95: protected void defineAsCurrentResponse(final String response,
96: final String contentType) {
97: defineAsCurrentResponse(response.getBytes(), contentType);
98: }
99: }
|