// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/ClientException.java
// public class ClientException extends Exception {
//   private static final long serialVersionUID = -7032182229500031385L;
// 
//   public ClientException() {
//     super();
//   }
// 
//   public ClientException(Throwable cause) {
//     super(cause);
//   }
// 
//   public ClientException(String reason) {
//     super(reason);
//   }
// 
//   public ClientException(String reason, Throwable cause) {
//     super(reason, cause);
//   }
// }
// 
// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/CommandFactory.java
// public interface CommandFactory {
//   public Command getCommand(int commandID);
// 
//   public void createCommand(int commandID, Command command);
// }


import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import jp.co.rakuten.rit.roma.client.ClientException;
import jp.co.rakuten.rit.roma.client.CommandFactory;
package jp.co.rakuten.rit.roma.client.commands;



public class CommandFactoryImpl implements CommandFactory {
  // protected HashMap<Integer, Command> commands = new HashMap<Integer, Command>();
  protected Map<Integer, Command> commands = new ConcurrentHashMap<Integer, Command>();

// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/ClientException.java
// public class ClientException extends Exception {
//   private static final long serialVersionUID = -7032182229500031385L;
// 
//   public ClientException() {
//     super();
//   }
// 
//   public ClientException(Throwable cause) {
//     super(cause);
//   }
// 
//   public ClientException(String reason) {
//     super(reason);
//   }
// 
//   public ClientException(String reason, Throwable cause) {
//     super(reason, cause);
//   }
// }
// 
// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/CommandFactory.java
// public interface CommandFactory {
//   public Command getCommand(int commandID);
// 
//   public void createCommand(int commandID, Command command);
// }


// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/commands/CommandFactoryImpl.java
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import jp.co.rakuten.rit.roma.client.ClientException;
import jp.co.rakuten.rit.roma.client.CommandFactory;

package jp.co.rakuten.rit.roma.client.commands;



public class CommandFactoryImpl implements CommandFactory {
  // protected HashMap<Integer, Command> commands = new HashMap<Integer, Command>();
  protected Map<Integer, Command> commands = new ConcurrentHashMap<Integer, Command>();

  public CommandFactoryImpl() throws ClientException {