History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/net/ftp/FtpReplyCode.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/net/ftp/FtpReplyCode.java+248−0
@@ -0,0 +1,248 @@
1+/*
2+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+package sun.net.ftp;
26+
27+/**
28+ * This class describes a FTP protocol reply code and associates a meaning
29+ * to the numerical value according to the various RFCs (RFC 959 in
30+ * particular).
31+ *
32+ */
33+public enum FtpReplyCode {
34+
35+ RESTART_MARKER(110),
36+ SERVICE_READY_IN(120),
37+ DATA_CONNECTION_ALREADY_OPEN(125),
38+ FILE_STATUS_OK(150),
39+ COMMAND_OK(200),
40+ NOT_IMPLEMENTED(202),
41+ SYSTEM_STATUS(211),
42+ DIRECTORY_STATUS(212),
43+ FILE_STATUS(213),
44+ HELP_MESSAGE(214),
45+ NAME_SYSTEM_TYPE(215),
46+ SERVICE_READY(220),
47+ SERVICE_CLOSING(221),
48+ DATA_CONNECTION_OPEN(225),
49+ CLOSING_DATA_CONNECTION(226),
50+ ENTERING_PASSIVE_MODE(227),
51+ ENTERING_EXT_PASSIVE_MODE(229),
52+ LOGGED_IN(230),
53+ SECURELY_LOGGED_IN(232),
54+ SECURITY_EXCHANGE_OK(234),
55+ SECURITY_EXCHANGE_COMPLETE(235),
56+ FILE_ACTION_OK(250),
57+ PATHNAME_CREATED(257),
58+ NEED_PASSWORD(331),
59+ NEED_ACCOUNT(332),
60+ NEED_ADAT(334),
61+ NEED_MORE_ADAT(335),
62+ FILE_ACTION_PENDING(350),
63+ SERVICE_NOT_AVAILABLE(421),
64+ CANT_OPEN_DATA_CONNECTION(425),
65+ CONNECTION_CLOSED(426),
66+ NEED_SECURITY_RESOURCE(431),
67+ FILE_ACTION_NOT_TAKEN(450),
68+ ACTION_ABORTED(451),
69+ INSUFFICIENT_STORAGE(452),
70+ COMMAND_UNRECOGNIZED(500),
71+ INVALID_PARAMETER(501),
72+ BAD_SEQUENCE(503),
73+ NOT_IMPLEMENTED_FOR_PARAMETER(504),
74+ NOT_LOGGED_IN(530),
75+ NEED_ACCOUNT_FOR_STORING(532),
76+ PROT_LEVEL_DENIED(533),
77+ REQUEST_DENIED(534),
78+ FAILED_SECURITY_CHECK(535),
79+ UNSUPPORTED_PROT_LEVEL(536),
80+ PROT_LEVEL_NOT_SUPPORTED_BY_SECURITY(537),
81+ FILE_UNAVAILABLE(550),
82+ PAGE_TYPE_UNKNOWN(551),
83+ EXCEEDED_STORAGE(552),
84+ FILE_NAME_NOT_ALLOWED(553),
85+ PROTECTED_REPLY(631),
86+ UNKNOWN_ERROR(999);
87+ private final int value;
88+
89+ FtpReplyCode(int val) {
90+ this.value = val;
91+ }
92+
93+ /**
94+ * Returns the numerical value of the code.
95+ *
96+ * @return the numerical value.
97+ */
98+ public int getValue() {
99+ return value;
100+ }
101+
102+ /**
103+ * Determines if the code is a Positive Preliminary response.
104+ * This means beginning with a 1 (which means a value between 100 and 199)
105+ *
106+ * @return <code>true</code> if the reply code is a positive preliminary
107+ * response.
108+ */
109+ public boolean isPositivePreliminary() {
110+ return value >= 100 && value < 200;
111+ }
112+
113+ /**
114+ * Determines if the code is a Positive Completion response.
115+ * This means beginning with a 2 (which means a value between 200 and 299)
116+ *
117+ * @return <code>true</code> if the reply code is a positive completion
118+ * response.
119+ */
120+ public boolean isPositiveCompletion() {
121+ return value >= 200 && value < 300;
122+ }
123+
124+ /**
125+ * Determines if the code is a positive internediate response.
126+ * This means beginning with a 3 (which means a value between 300 and 399)
127+ *
128+ * @return <code>true</code> if the reply code is a positive intermediate
129+ * response.
130+ */
131+ public boolean isPositiveIntermediate() {
132+ return value >= 300 && value < 400;
133+ }
134+
135+ /**
136+ * Determines if the code is a transient negative response.
137+ * This means beginning with a 4 (which means a value between 400 and 499)
138+ *
139+ * @return <code>true</code> if the reply code is a transient negative
140+ * response.
141+ */
142+ public boolean isTransientNegative() {
143+ return value >= 400 && value < 500;
144+ }
145+
146+ /**
147+ * Determines if the code is a permanent negative response.
148+ * This means beginning with a 5 (which means a value between 500 and 599)
149+ *
150+ * @return <code>true</code> if the reply code is a permanent negative
151+ * response.
152+ */
153+ public boolean isPermanentNegative() {
154+ return value >= 500 && value < 600;
155+ }
156+
157+ /**
158+ * Determines if the code is a protected reply response.
159+ * This means beginning with a 6 (which means a value between 600 and 699)
160+ *
161+ * @return <code>true</code> if the reply code is a protected reply
162+ * response.
163+ */
164+ public boolean isProtectedReply() {
165+ return value >= 600 && value < 700;
166+ }
167+
168+ /**
169+ * Determines if the code is a syntax related response.
170+ * This means the second digit is a 0.
171+ *
172+ * @return <code>true</code> if the reply code is a syntax related
173+ * response.
174+ */
175+ public boolean isSyntax() {
176+ return ((value / 10) - ((value / 100) * 10)) == 0;
177+ }
178+
179+ /**
180+ * Determines if the code is an information related response.
181+ * This means the second digit is a 1.
182+ *
183+ * @return <code>true</code> if the reply code is an information related
184+ * response.
185+ */
186+ public boolean isInformation() {
187+ return ((value / 10) - ((value / 100) * 10)) == 1;
188+ }
189+
190+ /**
191+ * Determines if the code is a connection related response.
192+ * This means the second digit is a 2.
193+ *
194+ * @return <code>true</code> if the reply code is a connection related
195+ * response.
196+ */
197+ public boolean isConnection() {
198+ return ((value / 10) - ((value / 100) * 10)) == 2;
199+ }
200+
201+ /**
202+ * Determines if the code is an authentication related response.
203+ * This means the second digit is a 3.
204+ *
205+ * @return <code>true</code> if the reply code is an authentication related
206+ * response.
207+ */
208+ public boolean isAuthentication() {
209+ return ((value / 10) - ((value / 100) * 10)) == 3;
210+ }
211+
212+ /**
213+ * Determines if the code is an unspecified type of response.
214+ * This means the second digit is a 4.
215+ *
216+ * @return <code>true</code> if the reply code is an unspecified type of
217+ * response.
218+ */
219+ public boolean isUnspecified() {
220+ return ((value / 10) - ((value / 100) * 10)) == 4;
221+ }
222+
223+ /**
224+ * Determines if the code is a file system related response.
225+ * This means the second digit is a 5.
226+ *
227+ * @return <code>true</code> if the reply code is a file system related
228+ * response.
229+ */
230+ public boolean isFileSystem() {
231+ return ((value / 10) - ((value / 100) * 10)) == 5;
232+ }
233+
234+ /**
235+ * Static utility method to convert a value into a FtpReplyCode.
236+ *
237+ * @param v the value to convert
238+ * @return the <code>FtpReplyCode</code> associated with the value.
239+ */
240+ public static FtpReplyCode find(int v) {
241+ for (FtpReplyCode code : FtpReplyCode.values()) {
242+ if (code.getValue() == v) {
243+ return code;
244+ }
245+ }
246+ return UNKNOWN_ERROR;
247+ }
248+}