blob: 2455a1a22ab4689d92caf2916b3ec60bfef0df27 [file] [log] [blame]
/*
* 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:
CAPABILITY(0),
NOOP(0),
LOGOUT(0),
// Commands valid in Not Authenticated state
STARTTLS(0),
AUTHENTICATE(1),
LOGIN(2),
XOAUTH(1),
// commands valid in authenticated state
SELECT(1),
EXAMINE(1),
CREATE(1),
DELETE(1),
RENAME(2),
SUBSCRIBE(1),
UNSUBSCRIBE(1),
LIST(2),
LSUB(2),
STATUS(2), // P2 = list in ()
APPEND(2,4), // mbox [(flags)] [date-time] literal
// commands valid in selected state (substate of authenticated)
CHECK(0),
CLOSE(0),
EXPUNGE(0),
SEARCH(1, Integer.MAX_VALUE),
FETCH(2),
STORE(3),
COPY(2),
UID(2, Integer.MAX_VALUE),
;
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(String name){
this(name, 0);
}
IMAPCommand(int paramCount){
this(null, paramCount, paramCount);
}
IMAPCommand(int minCount, int maxCount){
this(null, minCount, maxCount);
}
IMAPCommand(String name, int paramCount){
this(name, paramCount, paramCount);
}
IMAPCommand(String name, int minCount, int maxCount){
this.imapCommand = name;
this.minParamCount = minCount;
this.maxParamCount = maxCount;
}
/**
* Get the IMAP protocol string command corresponding to a command code.
*
* @param command the IMAPCommand whose command string is required.
* @return The IMAP protocol string command corresponding to a command code.
*/
public static final String getCommand(IMAPCommand command) {
return command.getIMAPCommand();
}
/**
* Get 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();
}
}
/* kate: indent-width 4; replace-tabs on; */