From d750dab7987c4ea9272475fa7be33db98b5a8daf Mon Sep 17 00:00:00 2001 From: Danny van Heumen Date: Mon, 17 Nov 2014 23:12:00 +0100 Subject: [PATCH] Improved the Command - CommandFactory implementation. * Moved from 'init' method to constructor. * Expected format for the constructor described in the Command interface comments. * Distinguish between exceptions that occur during construction of the command, log these and inform the user of an error; and exception occurring during the execution of the command. * Better error handling for commands. To do: * Add 'help' method to the Command interface. * Catch IllegalArgumentException and automatically display help() information to the user. --- .../impl/protocol/irc/ChatRoomIrcImpl.java | 12 ++++ .../impl/protocol/irc/Command.java | 40 ++++++----- .../impl/protocol/irc/CommandFactory.java | 54 +++++++++----- .../impl/protocol/irc/MessageManager.java | 18 ++++- ...rationSetBasicInstantMessagingIrcImpl.java | 8 +++ .../impl/protocol/irc/command/Join.java | 7 +- .../impl/protocol/irc/command/Me.java | 7 +- .../impl/protocol/irc/command/Mode.java | 3 +- .../impl/protocol/irc/command/Msg.java | 3 +- .../impl/protocol/irc/command/Nick.java | 3 +- .../irc/exception/BadCommandException.java | 70 +++++++++++++++++++ .../impl/protocol/irc/CommandFactoryTest.java | 46 ++++-------- .../impl/protocol/irc/command/JoinTest.java | 23 ++---- .../impl/protocol/irc/command/MeTest.java | 20 ++---- .../impl/protocol/irc/command/ModeTest.java | 23 ++---- .../impl/protocol/irc/command/MsgTest.java | 26 ++----- .../impl/protocol/irc/command/NickTest.java | 23 ++---- 17 files changed, 216 insertions(+), 170 deletions(-) create mode 100644 src/net/java/sip/communicator/impl/protocol/irc/exception/BadCommandException.java diff --git a/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomIrcImpl.java b/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomIrcImpl.java index 9761591a7..ac6364449 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomIrcImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomIrcImpl.java @@ -1012,6 +1012,18 @@ public void sendMessage(final Message message) .UNSUPPORTED_OPERATION, e.getMessage(), new Date(), message); } + catch (BadCommandException e) + { + LOGGER.error("An error occurred while constructing " + + "the command. This is most likely due to a bug " + + "in the implementation of the command. Message: " + + message + "'", e); + this.fireMessageDeliveryFailedEvent( + ChatRoomMessageDeliveryFailedEvent.INTERNAL_ERROR, + "Command cannot be executed. This is most likely due " + + "to a bug in the implementation.", new Date(), + message); + } } else { diff --git a/src/net/java/sip/communicator/impl/protocol/irc/Command.java b/src/net/java/sip/communicator/impl/protocol/irc/Command.java index f9fa97ba5..dd0534abe 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/Command.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/Command.java @@ -6,35 +6,39 @@ */ package net.java.sip.communicator.impl.protocol.irc; +import net.java.sip.communicator.impl.protocol.irc.exception.*; + /** * Interface for the implementation of individual IRC commands. * * This interface defines the format for the implementation of commands that can * be called for via the messaging input field. * - * A command is instantiated for each encounter. {@link #init} will be upon - * instantiation to set up the state before actually performing the command. - * Then {@link #execute} is called in order to execute the command. + * A new command object is instantiated for each encounter. Then + * {@link #execute} is called to execute the command. + * + * Instantiation will be done by the CommandFactory. The CommandFactory expects + * to find a constructor with the following types as arguments (in order): + *
    + *
  1. {@link ProtocolProviderServiceIrcImpl}
  2. + *
  3. {@link IrcConnection}
  4. + *
+ * + * If no suitable constructor is found, an {@link BadCommandException} will be + * thrown. + * + * For more advanced IRC commands, one can register listeners with the + * underlying IRC client. This way you can intercept IRC messages as they are + * received. Using this method you can send messages, receive replies and act on + * (other) events. + * + * FIXME Additionally, describe the AbstractIrcMessageListener type once this + * implementation is merged with Jitsi main line. * * @author Danny van Heumen */ public interface Command { - /** - * Initialize this instance of a command. Initialization may include - * registering listeners for the current connection such that a command can - * act upon the server's response. - * - * {@link #init} is guaranteed to be called before the command gets - * executed and thus can be used to initialize any dependencies or listeners - * that are required for the command to be executed. - * - * @param provider the protocol provider service - * @param connection the IRC connection instance - */ - void init(ProtocolProviderServiceIrcImpl provider, - IrcConnection connection); - /** * Execute the command using the full line. * diff --git a/src/net/java/sip/communicator/impl/protocol/irc/CommandFactory.java b/src/net/java/sip/communicator/impl/protocol/irc/CommandFactory.java index bf836903e..52661562b 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/CommandFactory.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/CommandFactory.java @@ -6,6 +6,7 @@ */ package net.java.sip.communicator.impl.protocol.irc; +import java.lang.reflect.*; import java.util.*; import java.util.Map.Entry; @@ -15,6 +16,9 @@ /** * Command factory. * + * TODO Consider implementing 1 "management" command for querying the registered + * commands at runtime and maybe some other things. Not very urgent, though. + * * @author Danny van Heumen */ public class CommandFactory @@ -134,9 +138,12 @@ public static synchronized void unregisterCommand( * @param command the command to look up and instantiate * @return returns a command instance * @throws UnsupportedCommandException in case command cannot be found + * @throws BadCommandException In case of a incompatible command or bad + * implementation. */ public Command createCommand(final String command) - throws UnsupportedCommandException + throws UnsupportedCommandException, + BadCommandException { if (command == null || command.isEmpty()) { @@ -148,29 +155,40 @@ public Command createCommand(final String command) { throw new UnsupportedCommandException(command); } - final Command cmd; try { - // FIXME change to construct with provider and connection instance, - // remove init() method from interface - cmd = type.newInstance(); - cmd.init(this.provider, this.connection); - return cmd; + Constructor cmdCtor = + type.getConstructor(ProtocolProviderServiceIrcImpl.class, + IrcConnection.class); + return cmdCtor.newInstance(this.provider, this.connection); + } + catch (NoSuchMethodException e) + { + throw new BadCommandException(command, type, + "There is no compatible constructor for instantiating this " + + "command.", e); + } + catch (InstantiationException e) + { + throw new BadCommandException(command, type, + "Unable to instantiate this command class.", e); + } + catch (IllegalAccessException e) + { + throw new BadCommandException(command, type, + "Unable to access the constructor of this command class.", e); } - catch (InstantiationException ex) + catch (InvocationTargetException e) { - throw new IllegalStateException( - "A bad command implementation has been registered. It fails" - + " to instantiate.", - ex); + throw new BadCommandException(command, type, + "An exception occurred while executing the constructor.", e); } - catch (IllegalAccessException ex) + catch (IllegalArgumentException e) { - throw new IllegalStateException( - "A bad command implementation has been registered. It does " - + "not allow access to its constructor and therefore cannot" - + " be instantiated.", - ex); + throw new BadCommandException(command, type, + "Invalid arguments were passed to the " + + "constructor. This may be a bug in the CommandFactory " + + "implementation.", e); } } } diff --git a/src/net/java/sip/communicator/impl/protocol/irc/MessageManager.java b/src/net/java/sip/communicator/impl/protocol/irc/MessageManager.java index a2fec4e39..ba3240228 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/MessageManager.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/MessageManager.java @@ -24,6 +24,8 @@ * TODO Implement messaging service for offline messages and such. (MemoServ - * message relaying services) * + * TODO move IRC commands to separate package + * * @author Danny van Heumen */ public class MessageManager @@ -141,9 +143,12 @@ public MessageManager(final IrcConnection connection, final IRCApi irc, * @param chatroom the chat room * @param message the command message * @throws UnsupportedCommandException for unknown or unsupported commands + * @throws BadCommandException in case of incompatible command or bad + * implementation */ public void command(final ChatRoomIrcImpl chatroom, final String message) - throws UnsupportedCommandException + throws UnsupportedCommandException, + BadCommandException { if (!this.connectionState.isConnected()) { @@ -158,9 +163,11 @@ public void command(final ChatRoomIrcImpl chatroom, final String message) * @param contact the chat room * @param message the command message * @throws UnsupportedCommandException for unknown or unsupported commands + * @throws BadCommandException in case of a bad command implementation */ public void command(final Contact contact, final MessageIrcImpl message) - throws UnsupportedCommandException + throws UnsupportedCommandException, + BadCommandException { if (!this.connectionState.isConnected()) { @@ -174,9 +181,14 @@ public void command(final Contact contact, final MessageIrcImpl message) * * @param source Source contact or chat room from which the message is sent. * @param message Command message + * @throws UnsupportedCommandException in case a suitable command could not + * be found + * @throws BadCommandException in case of an incompatible command or a bad + * implementation */ private void command(final String source, final String message) - throws UnsupportedCommandException + throws UnsupportedCommandException, + BadCommandException { final String msg = message.toLowerCase(); final int end = msg.indexOf(' '); diff --git a/src/net/java/sip/communicator/impl/protocol/irc/OperationSetBasicInstantMessagingIrcImpl.java b/src/net/java/sip/communicator/impl/protocol/irc/OperationSetBasicInstantMessagingIrcImpl.java index efbc63d5a..6def900d0 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/OperationSetBasicInstantMessagingIrcImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/OperationSetBasicInstantMessagingIrcImpl.java @@ -134,6 +134,14 @@ public void sendInstantMessage(final Contact to, final Message original) MessageDeliveryFailedEvent .UNSUPPORTED_OPERATION); } + catch (BadCommandException e) + { + LOGGER.error("Error during command execution. " + + "This is most likely due to a bug in the " + + "implementation of the command.", e); + fireMessageDeliveryFailed(message, to, + MessageDeliveryFailedEvent.INTERNAL_ERROR); + } } else { diff --git a/src/net/java/sip/communicator/impl/protocol/irc/command/Join.java b/src/net/java/sip/communicator/impl/protocol/irc/command/Join.java index cf2aa7795..5d92d1667 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/command/Join.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/command/Join.java @@ -24,7 +24,7 @@ public class Join implements Command /** * Instance of the IRC connection. */ - private IrcConnection connection; + private final IrcConnection connection; /** * Initialization of the /join command. Join a channel. @@ -32,9 +32,8 @@ public class Join implements Command * @param provider the provider instance * @param connection the IRC connection instance */ - @Override - public void init(final ProtocolProviderServiceIrcImpl provider, - final IrcConnection connection) + public Join(final ProtocolProviderServiceIrcImpl provider, + final IrcConnection connection) { if (connection == null) { diff --git a/src/net/java/sip/communicator/impl/protocol/irc/command/Me.java b/src/net/java/sip/communicator/impl/protocol/irc/command/Me.java index 2c2e9bff8..52997e19a 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/command/Me.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/command/Me.java @@ -15,7 +15,7 @@ * @author Danny van Heumen */ public class Me - implements Command + implements Command { /** * Me command prefix index. @@ -25,7 +25,7 @@ public class Me /** * IRC connection instance. */ - private IrcConnection connection; + private final IrcConnection connection; /** * Initialization of the /me command. @@ -33,8 +33,7 @@ public class Me * @param provider the provider instance * @param connection the connection instance */ - @Override - public void init(final ProtocolProviderServiceIrcImpl provider, + public Me(final ProtocolProviderServiceIrcImpl provider, final IrcConnection connection) { if (connection == null) diff --git a/src/net/java/sip/communicator/impl/protocol/irc/command/Mode.java b/src/net/java/sip/communicator/impl/protocol/irc/command/Mode.java index 57ab19ffb..1d70e6e81 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/command/Mode.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/command/Mode.java @@ -31,8 +31,7 @@ public class Mode implements Command * @param provider the provider instance * @param connection the connection instance */ - @Override - public void init(final ProtocolProviderServiceIrcImpl provider, + public Mode(final ProtocolProviderServiceIrcImpl provider, final IrcConnection connection) { if (connection == null) diff --git a/src/net/java/sip/communicator/impl/protocol/irc/command/Msg.java b/src/net/java/sip/communicator/impl/protocol/irc/command/Msg.java index 03dda0b41..2bfec0eee 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/command/Msg.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/command/Msg.java @@ -31,8 +31,7 @@ public class Msg implements Command * @param provider the provider instance * @param connection the connection instance */ - @Override - public void init(final ProtocolProviderServiceIrcImpl provider, + public Msg(final ProtocolProviderServiceIrcImpl provider, final IrcConnection connection) { if (connection == null) diff --git a/src/net/java/sip/communicator/impl/protocol/irc/command/Nick.java b/src/net/java/sip/communicator/impl/protocol/irc/command/Nick.java index 7d3d257e0..3cc99c540 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/command/Nick.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/command/Nick.java @@ -26,8 +26,7 @@ public class Nick implements Command * @param provider the provider instance * @param connection the connection instance */ - @Override - public void init(final ProtocolProviderServiceIrcImpl provider, + public Nick(final ProtocolProviderServiceIrcImpl provider, final IrcConnection connection) { if (connection == null) diff --git a/src/net/java/sip/communicator/impl/protocol/irc/exception/BadCommandException.java b/src/net/java/sip/communicator/impl/protocol/irc/exception/BadCommandException.java new file mode 100644 index 000000000..89668f4df --- /dev/null +++ b/src/net/java/sip/communicator/impl/protocol/irc/exception/BadCommandException.java @@ -0,0 +1,70 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.impl.protocol.irc.exception; + +import net.java.sip.communicator.impl.protocol.irc.*; + +/** + * Exception indicating a bad command implementation. + * + * @author Danny van Heumen + */ +public class BadCommandException + extends Exception +{ + /** + * Serialization id. + */ + private static final long serialVersionUID = 1L; + + /** + * The command name used to look up the type. + */ + private final String command; + + /** + * The command type that caused the exception. + */ + private Class type; + + /** + * Constructor. + * + * @param command the command + * @param type the command implementation + * @param message the error message + * @param e the cause + */ + public BadCommandException(final String command, + final Class type, final String message, + final Throwable e) + { + super("An error occurred while preparing command '" + command + "' (" + + type.getCanonicalName() + "): " + message, e); + this.command = command; + } + + /** + * Get the command. + * + * @return returns the name of the failed command + */ + public String getCommand() + { + return this.command; + } + + /** + * Get the type of the implementation. + * + * @return returns the type that implements the command + */ + public Class getType() + { + return this.type; + } +} diff --git a/test/net/java/sip/communicator/impl/protocol/irc/CommandFactoryTest.java b/test/net/java/sip/communicator/impl/protocol/irc/CommandFactoryTest.java index 2b5c6b4f1..a47f0d460 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/CommandFactoryTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/CommandFactoryTest.java @@ -23,19 +23,7 @@ public void testRegisterNullCommand() { try { - CommandFactory.registerCommand(null, new Command() - { - @Override - public void init(ProtocolProviderServiceIrcImpl provider, - IrcConnection connection) - { - } - - @Override - public void execute(String source, String line) - { - } - }.getClass()); + CommandFactory.registerCommand(null, Test.class); Assert.fail(); } catch (IllegalArgumentException e) @@ -82,12 +70,6 @@ public void testUnregisterMultipleAmongOtherTypes() { Command anotherType = new Command() { - @Override - public void init(ProtocolProviderServiceIrcImpl provider, - IrcConnection connection) - { - } - @Override public void execute(String source, String line) { @@ -124,9 +106,7 @@ public void testUnregisterOneAmongMultipleSameType() public static class Test implements Command { - - @Override - public void init(ProtocolProviderServiceIrcImpl provider, + public Test(ProtocolProviderServiceIrcImpl provider, IrcConnection connection) { } @@ -177,7 +157,7 @@ public void testConstruction() new CommandFactory(provider, connection); } - public void testNonExistingCommand() + public void testNonExistingCommand() throws BadCommandException { ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); IrcConnection connection = EasyMock.createMock(IrcConnection.class); @@ -194,7 +174,7 @@ public void testNonExistingCommand() } } - public void testCreateNullCommandName() throws UnsupportedCommandException + public void testCreateNullCommandName() throws UnsupportedCommandException, BadCommandException { ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); IrcConnection connection = EasyMock.createMock(IrcConnection.class); @@ -213,7 +193,7 @@ public void testCreateNullCommandName() throws UnsupportedCommandException CommandFactory.unregisterCommand(Test.class, null); } - public void testCreateEmptyCommandName() throws UnsupportedCommandException + public void testCreateEmptyCommandName() throws UnsupportedCommandException, BadCommandException { ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); IrcConnection connection = EasyMock.createMock(IrcConnection.class); @@ -235,7 +215,7 @@ public void testCreateEmptyCommandName() throws UnsupportedCommandException } } - public void testExistingCommand() throws UnsupportedCommandException + public void testExistingCommand() throws UnsupportedCommandException, BadCommandException { ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); IrcConnection connection = EasyMock.createMock(IrcConnection.class); @@ -268,7 +248,7 @@ public void testUnreachableCommand() throws UnsupportedCommandException factory.createCommand("test"); Assert.fail(); } - catch (IllegalStateException e) + catch (BadCommandException e) { } finally @@ -290,7 +270,7 @@ public void testBadCommand() throws UnsupportedCommandException factory.createCommand("test"); Assert.fail(); } - catch (IllegalStateException e) + catch (BadCommandException e) { } finally @@ -299,11 +279,9 @@ public void testBadCommand() throws UnsupportedCommandException } } - private static class Unreachable implements Command + private static final class Unreachable implements Command { - - @Override - public void init(ProtocolProviderServiceIrcImpl provider, + private Unreachable(ProtocolProviderServiceIrcImpl provider, IrcConnection connection) { } @@ -316,5 +294,9 @@ public void execute(String source, String line) public abstract static class BadImplementation implements Command { + public BadImplementation(ProtocolProviderServiceIrcImpl provider, + IrcConnection connection) + { + } } } diff --git a/test/net/java/sip/communicator/impl/protocol/irc/command/JoinTest.java b/test/net/java/sip/communicator/impl/protocol/irc/command/JoinTest.java index e2cc5a63e..1e56f5508 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/command/JoinTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/command/JoinTest.java @@ -17,18 +17,12 @@ public class JoinTest extends TestCase { - public void testConstruction() - { - new Join(); - } - public void testGoodInit() { IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Join join = new Join(); - join.init(null, connection); + new Join(null, connection); } public void testBadInit() @@ -36,10 +30,9 @@ public void testBadInit() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); EasyMock.replay(provider); - Join join = new Join(); try { - join.init(provider, null); + new Join(provider, null); Assert.fail(); } catch (IllegalArgumentException e) @@ -52,8 +45,7 @@ public void testEmptyJoin() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Join join = new Join(); - join.init(null, connection); + Join join = new Join(null, connection); join.execute("#test", "/join"); } @@ -62,8 +54,7 @@ public void testJoinEmptyChannelNoPassword() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Join join = new Join(); - join.init(null, connection); + Join join = new Join(null, connection); try { join.execute("#test", "/join "); @@ -83,8 +74,7 @@ public void testJoinWithChannelNoPassword() EasyMock.expectLastCall(); EasyMock.replay(connection, client); - Join join = new Join(); - join.init(null, connection); + Join join = new Join(null, connection); join.execute("#test", "/join #test"); } @@ -97,8 +87,7 @@ public void testJoinWithChannelWithPassword() EasyMock.expectLastCall(); EasyMock.replay(connection, client); - Join join = new Join(); - join.init(null, connection); + Join join = new Join(null, connection); join.execute("#test", "/join #test top-secret"); } } diff --git a/test/net/java/sip/communicator/impl/protocol/irc/command/MeTest.java b/test/net/java/sip/communicator/impl/protocol/irc/command/MeTest.java index 7bb410b66..5987d859e 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/command/MeTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/command/MeTest.java @@ -16,18 +16,12 @@ public class MeTest extends TestCase { - public void testConstruction() - { - new Me(); - } - public void testGoodInit() { IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Me me = new Me(); - me.init(null, connection); + Me me = new Me(null, connection); } public void testBadInit() @@ -35,10 +29,9 @@ public void testBadInit() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); EasyMock.replay(provider); - Me me = new Me(); try { - me.init(provider, null); + Me me = new Me(provider, null); Assert.fail(); } catch (IllegalArgumentException e) @@ -52,8 +45,7 @@ public void testNoMessage() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Me me = new Me(); - me.init(provider, connection); + Me me = new Me(provider, connection); me.execute("#test", "/me"); } @@ -63,8 +55,7 @@ public void testZeroLengthMessage() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Me me = new Me(); - me.init(provider, connection); + Me me = new Me(provider, connection); try { me.execute("#test", "/me "); @@ -85,8 +76,7 @@ public void testSendMessage() EasyMock.expectLastCall(); EasyMock.replay(provider, connection, client); - Me me = new Me(); - me.init(provider, connection); + Me me = new Me(provider, connection); me.execute("#test", "/me says hello world!"); } } diff --git a/test/net/java/sip/communicator/impl/protocol/irc/command/ModeTest.java b/test/net/java/sip/communicator/impl/protocol/irc/command/ModeTest.java index 1a9aa95fe..fd6b910c3 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/command/ModeTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/command/ModeTest.java @@ -17,18 +17,12 @@ public class ModeTest extends TestCase { - public void testConstruction() - { - new Mode(); - } - public void testGoodInit() { IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Mode mode = new Mode(); - mode.init(null, connection); + Mode mode = new Mode(null, connection); } public void testBadInit() @@ -37,10 +31,9 @@ public void testBadInit() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); EasyMock.replay(provider); - Mode mode = new Mode(); try { - mode.init(provider, null); + Mode mode = new Mode(provider, null); Assert.fail(); } catch (IllegalArgumentException e) @@ -53,8 +46,7 @@ public void testEmptyCommand() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Mode mode = new Mode(); - mode.init(null, connection); + Mode mode = new Mode(null, connection); mode.execute("#test", "/mode"); } @@ -63,8 +55,7 @@ public void testEmptyModeLine() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Mode mode = new Mode(); - mode.init(null, connection); + Mode mode = new Mode(null, connection); mode.execute("#test", "/mode "); } @@ -73,8 +64,7 @@ public void testSpacesModeLine() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Mode mode = new Mode(); - mode.init(null, connection); + Mode mode = new Mode(null, connection); try { mode.execute("#test", "/mode "); @@ -93,8 +83,7 @@ public void testCorrectModeCommand() EasyMock.expectLastCall(); EasyMock.replay(connection, client); - Mode mode = new Mode(); - mode.init(null, connection); + Mode mode = new Mode(null, connection); mode.execute("#test", "/mode +o ThaDud3"); } } diff --git a/test/net/java/sip/communicator/impl/protocol/irc/command/MsgTest.java b/test/net/java/sip/communicator/impl/protocol/irc/command/MsgTest.java index 5e45794e3..67adf1d90 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/command/MsgTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/command/MsgTest.java @@ -19,18 +19,12 @@ public class MsgTest extends TestCase { - public void testConstruction() - { - new Msg(); - } - public void testGoodInit() { IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Msg msg = new Msg(); - msg.init(null, connection); + new Msg(null, connection); } public void testBadInit() @@ -38,10 +32,9 @@ public void testBadInit() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); EasyMock.replay(provider); - Msg msg = new Msg(); try { - msg.init(provider, null); + new Msg(provider, null); Assert.fail("Should not reach this, expected IAE."); } catch (IllegalArgumentException e) @@ -55,8 +48,7 @@ public void testMessageNoNickNoMsg() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Msg msg = new Msg(); - msg.init(provider, connection); + Msg msg = new Msg(provider, connection); msg.execute("#test", "/msg"); } @@ -66,8 +58,7 @@ public void testMessageZeroLengthMsg() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Msg msg = new Msg(); - msg.init(provider, connection); + Msg msg = new Msg(provider, connection); try { msg.execute("#test", "/msg "); @@ -84,8 +75,7 @@ public void testMessageZeroLengthNickMsg() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Msg msg = new Msg(); - msg.init(provider, connection); + Msg msg = new Msg(provider, connection); try { msg.execute("#test", "/msg "); @@ -102,8 +92,7 @@ public void testMessageNickZeroLengthMsg() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Msg msg = new Msg(); - msg.init(provider, connection); + Msg msg = new Msg(provider, connection); try { msg.execute("#test", "/msg target "); @@ -124,8 +113,7 @@ public void testPrivateMessage() EasyMock.expectLastCall(); EasyMock.replay(provider, connection); - Msg msg = new Msg(); - msg.init(provider, connection); + Msg msg = new Msg(provider, connection); msg.execute("#test", "/msg target This is my target message."); } } diff --git a/test/net/java/sip/communicator/impl/protocol/irc/command/NickTest.java b/test/net/java/sip/communicator/impl/protocol/irc/command/NickTest.java index 1400c3374..494f86e46 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/command/NickTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/command/NickTest.java @@ -23,18 +23,12 @@ public NickTest(String testName) super(testName); } - public void testConstruction() - { - new Nick(); - } - public void testNullProviderInit() { IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(connection); - Nick nick = new Nick(); - nick.init(null, connection); + new Nick(null, connection); } public void testNullConnectionInit() @@ -43,10 +37,9 @@ public void testNullConnectionInit() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); EasyMock.replay(provider); - Nick nick = new Nick(); try { - nick.init(provider, null); + new Nick(provider, null); Assert.fail("Should not reach this as we expected an IAE for null" + " connection."); } @@ -63,8 +56,7 @@ public void testEmptyNickCommand() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Nick nick = new Nick(); - nick.init(provider, connection); + Nick nick = new Nick(provider, connection); nick.execute("#test", "/nick"); } @@ -75,8 +67,7 @@ public void testEmptyNickCommandWithSpace() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Nick nick = new Nick(); - nick.init(provider, connection); + Nick nick = new Nick(provider, connection); nick.execute("#test", "/nick "); } @@ -87,8 +78,7 @@ public void testEmptyNickCommandWithDoubleSpace() IrcConnection connection = EasyMock.createMock(IrcConnection.class); EasyMock.replay(provider, connection); - Nick nick = new Nick(); - nick.init(provider, connection); + Nick nick = new Nick(provider, connection); nick.execute("#test", "/nick "); } @@ -104,8 +94,7 @@ public void testNickCommandWithNickAndSpace() EasyMock.expectLastCall(); EasyMock.replay(provider, connection, idmgr); - Nick nick = new Nick(); - nick.init(provider, connection); + Nick nick = new Nick(provider, connection); nick.execute("#test", "/nick myNewN1ck "); } }