package org.mailster.smtp.core.commands; import org.mailster.smtp.core.commands.impl.AuthCommand; import org.mailster.smtp.core.commands.impl.DataCommand; import org.mailster.smtp.core.commands.impl.EhloCommand; import org.mailster.smtp.core.commands.impl.HeloCommand; import org.mailster.smtp.core.commands.impl.HelpCommand; import org.mailster.smtp.core.commands.impl.MailCommand; import org.mailster.smtp.core.commands.impl.NoopCommand; import org.mailster.smtp.core.commands.impl.QuitCommand; import org.mailster.smtp.core.commands.impl.ReceiptCommand; import org.mailster.smtp.core.commands.impl.ResetCommand; import org.mailster.smtp.core.commands.impl.StartTLSCommand; /** * Enumerates all the internal {@link Command} available. * * @author De Oliveira Edouard <doe_wanted@yahoo.fr> */ public enum BuiltinCommandRegistry { AUTH(AuthCommand.class), DATA(DataCommand.class), EHLO(EhloCommand.class), HELO(HeloCommand.class), HELP(HelpCommand.class), MAIL(MailCommand.class), NOOP(NoopCommand.class), QUIT(QuitCommand.class), RCPT(ReceiptCommand.class), RSET(ResetCommand.class), STARTTLS(StartTLSCommand.class); private Command instance; private BuiltinCommandRegistry(Class<? extends Command> c) { try { this.instance = c.newInstance(); } catch (Exception e) { throw new RuntimeException(e); } } public Command getCommand() { return instance; } }