// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/Action.java
// public interface Action<T extends Action<T>> extends ValueObject<T> {
// 	
// 	/**
// 	 * アクションを実行する。
// 	 * 
// 	 * @param actionContext {@link ActionContext}
// 	 */
// 	void execute(ActionContext actionContext);
// 	
// }
// 
// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/impl/EchoActionImpl.java
// public final class EchoActionImpl implements Action<EchoActionImpl> {
// 	
// 	private final String text;
// 	
// 
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param text 出力したい文字列
// 	 */
// 	public EchoActionImpl(String text) {
// 		Validate.notNull(text);
// 		this.text = text;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj) {
// 			return true;
// 		}
// 		if (obj == null) {
// 			return false;
// 		}
// 		if (getClass() != obj.getClass()) {
// 			return false;
// 		}
// 		EchoActionImpl other = (EchoActionImpl) obj;
// 		return sameValueAs(other);
// 	}
// 	
// 	@Override
// 	public void execute(ActionContext actionContext) {
// 		Validate.notNull(actionContext);
// 		actionContext.getLogger().info(text);
// 	}
// 	
// 	/**
// 	 * 出力したい文字列を取得する。
// 	 * 
// 	 * @return 出力したい文字列
// 	 */
// 	public String getText() {
// 		return text;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		return new HashCodeBuilder().append(text).toHashCode();
// 	}
// 	
// 	@Override
// 	public boolean sameValueAs(EchoActionImpl other) {
// 		return new EqualsBuilder().append(text, other.text).isEquals();
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this,
// 				ToStringStyle.MULTI_LINE_STYLE);
// 	}
// }
// 
// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/impl/SqlActionImpl.java
// public final class SqlActionImpl implements Action<SqlActionImpl> {
// 	
// 	private final String sql;
// 	
// 
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param sql 実行するSQL
// 	 */
// 	public SqlActionImpl(String sql) {
// 		Validate.notNull(sql);
// 		this.sql = sql;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj) {
// 			return true;
// 		}
// 		if (obj == null) {
// 			return false;
// 		}
// 		if (getClass() != obj.getClass()) {
// 			return false;
// 		}
// 		SqlActionImpl other = (SqlActionImpl) obj;
// 		return sameValueAs(other);
// 	}
// 	
// 	@Override
// 	public void execute(ActionContext actionContext) {
// 		Validate.notNull(actionContext);
// 		Statement statement = null;
// 		try {
// 			statement = actionContext.getConnection().createStatement();
// 			if (statement.executeUpdate(sql) > 0) {
// 				actionContext.getLogger().debug("sql = " + sql);
// 			}
// 		} catch (SQLException e) {
// 			throw new SQLRuntimeException(e);
// 		} finally {
// 			CloseableUtil.close(statement);
// 		}
// 	}
// 	
// 	/**
// 	 * SQLを取得する。
// 	 * 
// 	 * @return SQL
// 	 */
// 	public String getSql() {
// 		return sql;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		return new HashCodeBuilder().append(sql).toHashCode();
// 	}
// 	
// 	@Override
// 	public boolean sameValueAs(SqlActionImpl other) {
// 		return new EqualsBuilder().append(sql, other.sql).isEquals();
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this,
// 				ToStringStyle.MULTI_LINE_STYLE);
// 	}
// 	
// }


import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import jp.tricreo.schemagenerator.domain.model.Action;
import jp.tricreo.schemagenerator.domain.model.impl.EchoActionImpl;
import jp.tricreo.schemagenerator.domain.model.impl.SqlActionImpl;
import org.junit.Test;

package jp.tricreo.schemagenerator.domain.lifecycle.factory.impl;



/**
 * {@link ActionFactoryImpl}のためのテスト。
 * 
 * @version $Id$
 * @author junichi
 */
public class ActionFactoryImplTest {
	
	/**
	 * Actionを生成できること。
	 */
	@Test
	public void test01_Actionを生成できること() {
		ActionFactoryImpl actionFactoryImpl = new ActionFactoryImpl();

// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/Action.java
// public interface Action<T extends Action<T>> extends ValueObject<T> {
// 	
// 	/**
// 	 * アクションを実行する。
// 	 * 
// 	 * @param actionContext {@link ActionContext}
// 	 */
// 	void execute(ActionContext actionContext);
// 	
// }
// 
// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/impl/EchoActionImpl.java
// public final class EchoActionImpl implements Action<EchoActionImpl> {
// 	
// 	private final String text;
// 	
// 
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param text 出力したい文字列
// 	 */
// 	public EchoActionImpl(String text) {
// 		Validate.notNull(text);
// 		this.text = text;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj) {
// 			return true;
// 		}
// 		if (obj == null) {
// 			return false;
// 		}
// 		if (getClass() != obj.getClass()) {
// 			return false;
// 		}
// 		EchoActionImpl other = (EchoActionImpl) obj;
// 		return sameValueAs(other);
// 	}
// 	
// 	@Override
// 	public void execute(ActionContext actionContext) {
// 		Validate.notNull(actionContext);
// 		actionContext.getLogger().info(text);
// 	}
// 	
// 	/**
// 	 * 出力したい文字列を取得する。
// 	 * 
// 	 * @return 出力したい文字列
// 	 */
// 	public String getText() {
// 		return text;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		return new HashCodeBuilder().append(text).toHashCode();
// 	}
// 	
// 	@Override
// 	public boolean sameValueAs(EchoActionImpl other) {
// 		return new EqualsBuilder().append(text, other.text).isEquals();
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this,
// 				ToStringStyle.MULTI_LINE_STYLE);
// 	}
// }
// 
// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/impl/SqlActionImpl.java
// public final class SqlActionImpl implements Action<SqlActionImpl> {
// 	
// 	private final String sql;
// 	
// 
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param sql 実行するSQL
// 	 */
// 	public SqlActionImpl(String sql) {
// 		Validate.notNull(sql);
// 		this.sql = sql;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj) {
// 			return true;
// 		}
// 		if (obj == null) {
// 			return false;
// 		}
// 		if (getClass() != obj.getClass()) {
// 			return false;
// 		}
// 		SqlActionImpl other = (SqlActionImpl) obj;
// 		return sameValueAs(other);
// 	}
// 	
// 	@Override
// 	public void execute(ActionContext actionContext) {
// 		Validate.notNull(actionContext);
// 		Statement statement = null;
// 		try {
// 			statement = actionContext.getConnection().createStatement();
// 			if (statement.executeUpdate(sql) > 0) {
// 				actionContext.getLogger().debug("sql = " + sql);
// 			}
// 		} catch (SQLException e) {
// 			throw new SQLRuntimeException(e);
// 		} finally {
// 			CloseableUtil.close(statement);
// 		}
// 	}
// 	
// 	/**
// 	 * SQLを取得する。
// 	 * 
// 	 * @return SQL
// 	 */
// 	public String getSql() {
// 		return sql;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		return new HashCodeBuilder().append(sql).toHashCode();
// 	}
// 	
// 	@Override
// 	public boolean sameValueAs(SqlActionImpl other) {
// 		return new EqualsBuilder().append(sql, other.sql).isEquals();
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this,
// 				ToStringStyle.MULTI_LINE_STYLE);
// 	}
// 	
// }


// Path: src/test/java/jp/tricreo/schemagenerator/domain/lifecycle/factory/impl/ActionFactoryImplTest.java
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import jp.tricreo.schemagenerator.domain.model.Action;
import jp.tricreo.schemagenerator.domain.model.impl.EchoActionImpl;
import jp.tricreo.schemagenerator.domain.model.impl.SqlActionImpl;
import org.junit.Test;

package jp.tricreo.schemagenerator.domain.lifecycle.factory.impl;



/**
 * {@link ActionFactoryImpl}のためのテスト。
 * 
 * @version $Id$
 * @author junichi
 */
public class ActionFactoryImplTest {
	
	/**
	 * Actionを生成できること。
	 */
	@Test
	public void test01_Actionを生成できること() {
		ActionFactoryImpl actionFactoryImpl = new ActionFactoryImpl();

		Action<?> newAction =
