/** * */ package fr.cedrik.email.pop3.commands; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ServiceLoader; import fr.cedrik.email.pop3.Context; import fr.cedrik.email.pop3.POP3Command; import fr.cedrik.email.pop3.ResponseStatus; import fr.cedrik.email.pop3.State; /** * @author Cédrik LIME */ public class CAPA extends BasePOP3Command implements POP3Command { public CAPA() { } @Override public boolean isValid(Context context) { return context.state == State.AUTHORIZATION || context.state == State.TRANSACTION; } @Override public Iterator<String> call(Context context) throws IOException { List<String> result = new ArrayList<String>(16); result.add(ResponseStatus.POSITIVE.toString("capability list follows")); ServiceLoader<POP3Command> commands = ServiceLoader.load(POP3Command.class); for (POP3Command command : commands) { // FIXME Each capability name MAY be followed by a single space and a space-separated list of parameters. result.add(command.getClass().getSimpleName()); } // hack for additional information result.add("LOGIN-DELAY 30"); result.add("IMPLEMENTATION iNotes"); result.add("RESP-CODES"); result.add("AUTH-RESP-CODE"); return result.iterator(); } }