IMAPCommand.java
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.commons.net.imap;
- /**
- * IMAPCommand stores IMAP command codes.
- */
- public enum IMAPCommand {
- // These enums must either use the same name as the IMAP command
- // or must provide the correct string as the parameter.
- // Commands valid in any state:
- /**
- * Valid in any state.
- */
- CAPABILITY(0),
- /**
- * Valid in any state.
- */
- NOOP(0),
- /**
- * Valid in any state.
- */
- LOGOUT(0),
- // Commands valid in Not Authenticated state
- /**
- * Valid in Not Authenticated state
- */
- STARTTLS(0),
- /**
- * Valid in Not Authenticated state
- */
- AUTHENTICATE(1),
- /**
- * Valid in Not Authenticated state
- */
- LOGIN(2),
- XOAUTH(1),
- // commands valid in authenticated state
- /**
- * Valid in authenticated state.
- */
- SELECT(1),
- /**
- * Valid in authenticated state.
- */
- EXAMINE(1),
- /**
- * Valid in authenticated state.
- */
- CREATE(1),
- /**
- * Valid in authenticated state.
- */
- DELETE(1),
- /**
- * Valid in authenticated state.
- */
- RENAME(2),
- /**
- * Valid in authenticated state.
- */
- SUBSCRIBE(1),
- /**
- * Valid in authenticated state.
- */
- UNSUBSCRIBE(1),
- /**
- * Valid in authenticated state.
- */
- LIST(2),
- /**
- * Valid in authenticated state.
- */
- LSUB(2),
- /**
- * Valid in authenticated state.
- */
- STATUS(2), // P2 = list in ()
- /**
- * Valid in authenticated state.
- */
- APPEND(2, 4), // mbox [(flags)] [date-time] literal
- // commands valid in selected state (substate of authenticated)
- /**
- * Valid in selected state (substate of authenticated).
- */
- CHECK(0),
- /**
- * Valid in selected state (substate of authenticated).
- */
- CLOSE(0),
- /**
- * Valid in selected state (substate of authenticated).
- */
- EXPUNGE(0),
- /**
- * Valid in selected state (substate of authenticated).
- */
- SEARCH(1, Integer.MAX_VALUE),
- /**
- * Valid in selected state (substate of authenticated).
- */
- FETCH(2),
- /**
- * Valid in selected state (substate of authenticated).
- */
- STORE(3),
- /**
- * Valid in selected state (substate of authenticated).
- */
- COPY(2),
- /**
- * Valid in selected state (substate of authenticated).
- */
- UID(2, Integer.MAX_VALUE);
- /**
- * Gets the IMAP protocol string command corresponding to a command code.
- *
- * @param command the {@link IMAPCommand} whose command string is required. Must not be null.
- * @return The IMAP protocol string command corresponding to a command code.
- */
- public static final String getCommand(final IMAPCommand command) {
- return command.getIMAPCommand();
- }
- private final String imapCommand;
- @SuppressWarnings("unused") // not yet used
- private final int minParamCount;
- @SuppressWarnings("unused") // not yet used
- private final int maxParamCount;
- IMAPCommand() {
- this(null);
- }
- IMAPCommand(final int paramCount) {
- this(null, paramCount, paramCount);
- }
- IMAPCommand(final int minCount, final int maxCount) {
- this(null, minCount, maxCount);
- }
- IMAPCommand(final String name) {
- this(name, 0);
- }
- IMAPCommand(final String name, final int paramCount) {
- this(name, paramCount, paramCount);
- }
- IMAPCommand(final String name, final int minCount, final int maxCount) {
- this.imapCommand = name;
- this.minParamCount = minCount;
- this.maxParamCount = maxCount;
- }
- /**
- * Gets the IMAP protocol string command for this command
- *
- * @return The IMAP protocol string command corresponding to this command
- */
- public String getIMAPCommand() {
- return imapCommand != null ? imapCommand : name();
- }
- }