OSDN Git Service

CVS最新版の全ファイルを追加
[spring-ext/ozacc-mail.git] / src / test / com / dumbster / smtp / SmtpActionType.java
1 /*\r
2  * Dumbster: a dummy SMTP server.\r
3  * Copyright (C) 2003, Jason Paul Kitchen\r
4  * lilnottsman@yahoo.com\r
5  *\r
6  * This library is free software; you can redistribute it and/or\r
7  * modify it under the terms of the GNU Lesser General Public\r
8  * License as published by the Free Software Foundation; either\r
9  * version 2.1 of the License, or (at your option) any later version.\r
10  *\r
11  * This library is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
14  * Lesser General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU Lesser General Public\r
17  * License along with this library; if not, write to the Free Software\r
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
19  */\r
20 package com.dumbster.smtp;\r
21 \r
22 /**\r
23  * Represents an SMTP action or command.\r
24  */\r
25 public class SmtpActionType {\r
26 \r
27         /** Internal value for the action type. */\r
28         private byte value;\r
29 \r
30         /** Internal representation of the CONNECT action. */\r
31         private static final byte CONNECT_BYTE = 1;\r
32 \r
33         /** Internal representation of the EHLO action. */\r
34         private static final byte EHLO_BYTE = 2;\r
35 \r
36         /** Internal representation of the MAIL FROM action. */\r
37         private static final byte MAIL_BYTE = 3;\r
38 \r
39         /** Internal representation of the RCPT action. */\r
40         private static final byte RCPT_BYTE = 4;\r
41 \r
42         /** Internal representation of the DATA action. */\r
43         private static final byte DATA_BYTE = 5;\r
44 \r
45         /** Internal representation of the DATA END (.) action. */\r
46         private static final byte DATA_END_BYTE = 6;\r
47 \r
48         /** Internal representation of the QUIT action. */\r
49         private static final byte QUIT_BYTE = 7;\r
50 \r
51         /** Internal representation of an unrecognized action: body text gets this action type. */\r
52         private static final byte UNREC_BYTE = 8;\r
53 \r
54         /** Internal representation of the blank line action: separates headers and body text. */\r
55         private static final byte BLANK_LINE_BYTE = 9;\r
56 \r
57         /** Internal representation of the stateless RSET action. */\r
58         private static final byte RSET_BYTE = -1;\r
59 \r
60         /** Internal representation of the stateless VRFY action. */\r
61         private static final byte VRFY_BYTE = -2;\r
62 \r
63         /** Internal representation of the stateless EXPN action. */\r
64         private static final byte EXPN_BYTE = -3;\r
65 \r
66         /** Internal representation of the stateless HELP action. */\r
67         private static final byte HELP_BYTE = -4;\r
68 \r
69         /** Internal representation of the stateless NOOP action. */\r
70         private static final byte NOOP_BYTE = -5;\r
71 \r
72         /** CONNECT action. */\r
73         public static final SmtpActionType CONNECT = new SmtpActionType(CONNECT_BYTE);\r
74 \r
75         /** EHLO action. */\r
76         public static final SmtpActionType EHLO = new SmtpActionType(EHLO_BYTE);\r
77 \r
78         /** MAIL action. */\r
79         public static final SmtpActionType MAIL = new SmtpActionType(MAIL_BYTE);\r
80 \r
81         /** RCPT action. */\r
82         public static final SmtpActionType RCPT = new SmtpActionType(RCPT_BYTE);\r
83 \r
84         /** DATA action. */\r
85         public static final SmtpActionType DATA = new SmtpActionType(DATA_BYTE);\r
86 \r
87         /** "." action. */\r
88         public static final SmtpActionType DATA_END = new SmtpActionType(DATA_END_BYTE);\r
89 \r
90         /** Body text action. */\r
91         public static final SmtpActionType UNRECOG = new SmtpActionType(UNREC_BYTE);\r
92 \r
93         /** QUIT action. */\r
94         public static final SmtpActionType QUIT = new SmtpActionType(QUIT_BYTE);\r
95 \r
96         /** Header/body separator action. */\r
97         public static final SmtpActionType BLANK_LINE = new SmtpActionType(BLANK_LINE_BYTE);\r
98 \r
99         /** Stateless RSET action. */\r
100         public static final SmtpActionType RSET = new SmtpActionType(RSET_BYTE);\r
101 \r
102         /** Stateless VRFY action. */\r
103         public static final SmtpActionType VRFY = new SmtpActionType(VRFY_BYTE);\r
104 \r
105         /** Stateless EXPN action. */\r
106         public static final SmtpActionType EXPN = new SmtpActionType(EXPN_BYTE);\r
107 \r
108         /** Stateless HELP action. */\r
109         public static final SmtpActionType HELP = new SmtpActionType(HELP_BYTE);\r
110 \r
111         /** Stateless NOOP action. */\r
112         public static final SmtpActionType NOOP = new SmtpActionType(NOOP_BYTE);\r
113 \r
114         /**\r
115          * Create a new SMTP action type. Private to ensure no invalid values.\r
116          * @param value one of the _BYTE values\r
117          */\r
118         private SmtpActionType(byte value) {\r
119                 this.value = value;\r
120         }\r
121 \r
122         /**\r
123          * Indicates whether the action is stateless or not.\r
124          * @return true iff the action is stateless\r
125          */\r
126         public boolean isStateless() {\r
127                 return value < 0;\r
128         }\r
129 \r
130         /**\r
131          * String representation of this SMTP action type.\r
132          * @return a String\r
133          */\r
134         public String toString() {\r
135                 switch (value) {\r
136                         case CONNECT_BYTE:\r
137                                 return "Connect";\r
138                         case EHLO_BYTE:\r
139                                 return "EHLO";\r
140                         case MAIL_BYTE:\r
141                                 return "MAIL";\r
142                         case RCPT_BYTE:\r
143                                 return "RCPT";\r
144                         case DATA_BYTE:\r
145                                 return "DATA";\r
146                         case DATA_END_BYTE:\r
147                                 return ".";\r
148                         case QUIT_BYTE:\r
149                                 return "QUIT";\r
150                         case RSET_BYTE:\r
151                                 return "RSET";\r
152                         case VRFY_BYTE:\r
153                                 return "VRFY";\r
154                         case EXPN_BYTE:\r
155                                 return "EXPN";\r
156                         case HELP_BYTE:\r
157                                 return "HELP";\r
158                         case NOOP_BYTE:\r
159                                 return "NOOP";\r
160                         case UNREC_BYTE:\r
161                                 return "Unrecognized command / data";\r
162                         case BLANK_LINE_BYTE:\r
163                                 return "Blank line";\r
164                         default:\r
165                                 return "Unknown";\r
166                 }\r
167         }\r
168 }