- 浏览: 43752 次
- 性别:
- 来自: 武汉
-
文章分类
最新评论
-
ty1989:
楼主,你的demo搞定了吗?能不能分享下搞定后的源码
zuul网关的oauth2应用demo,请大神帮我改写(源码参见附件) -
qinshang007:
你好,为什么每次注释掉serviceRegistryDao b ...
cas使用配置 -
jeve:
看似不错,得多看源码
springside
appfuse ftl
dao层全部文件,Service全部文件,web层部分文件,model层部分文件
dao文件夹:
dao.ftl
package ${basepackage}.dao; <#assign classbody> <#assign pojoName = pojo.importType(pojo.getDeclarationName())> <#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> import ${pojo.packageName}.${pojoName}; import java.util.List; import com.launch.mycar.core.util.PagingHelper; /** * An interface that provides a data management interface to the ${pojoName} table. */ public interface ${pojoName}Dao extends ${pojo.importType("${appfusepackage}.dao.GenericDao")}<${pojoName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> { public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}); public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}(); public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower}); public void delete${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}); public ${pojoName} save${pojoName}(${pojoName} ${pojoNameLower}); public ${pojoName} update${pojoName}(${pojoName} ${pojoNameLower}); public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}); </#assign> ${pojo.generateImports() } ${classbody} }
dao-bean.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <!--${pojo.shortName}Dao-START--> <#if daoframework == "hibernate"> <bean id="${pojoNameLower}Dao" class="${basepackage}.dao.hibernate.${pojo.shortName}DaoHibernate"/> <#elseif daoframework == "ibatis"> <bean id="${pojoNameLower}Dao" class="${basepackage}.dao.ibatis.${pojo.shortName}DaoiBatis"/> <#elseif daoframework == "jpa"> <bean id="${pojoNameLower}Dao" class="${basepackage}.dao.jpa.${pojo.shortName}DaoJpa"/> </#if> <!--${pojo.shortName}Dao-END--> <!-- Add new DAOs here -->
dao-test.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)> package ${basepackage}.dao; import ${appfusepackage}.dao.BaseDaoTestCase; import ${basepackage}.model.${pojo.shortName}; import org.springframework.dao.DataAccessException; import static org.junit.Assert.*; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.NotTransactional; import org.springframework.test.annotation.ExpectedException; import java.util.List; public class ${pojo.shortName}DaoTest extends BaseDaoTestCase { @Autowired private ${pojo.shortName}Dao ${pojoNameLower}Dao; @Test @ExpectedException(DataAccessException.class) public void testAddAndRemove${pojo.shortName}() { ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}(); // enter all required fields <#foreach field in pojo.getAllPropertiesIterator()> <#foreach column in field.getColumnIterator()> <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#lt/> ${pojoNameLower}.set${pojo.getPropertyName(field)}(${data.getValueForJavaTest(column)}); </#if> </#foreach> </#foreach> log.debug("adding ${pojoNameLower}..."); ${pojoNameLower} = ${pojoNameLower}Dao.save(${pojoNameLower}); <#lt/><#if daoframework == "daoframework">flush();</#if><#rt/> ${pojoNameLower} = ${pojoNameLower}Dao.get(${pojoNameLower}.${getIdMethodName}()); assertNotNull(${pojoNameLower}.${getIdMethodName}()); log.debug("removing ${pojoNameLower}..."); ${pojoNameLower}Dao.remove(${pojoNameLower}.${getIdMethodName}()); <#lt/><#if daoframework == "daoframework">flush();</#if><#rt/> // should throw DataAccessException ${pojoNameLower}Dao.get(${pojoNameLower}.${getIdMethodName}()); } }
sample-data.ftl
<!--${pojo.shortName}-START--> <table name="${clazz.table.name}"> <#foreach field in pojo.getAllPropertiesIterator()> <#if !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#foreach column in field.getColumnIterator()> <column>${column.name}</column> </#foreach> <#elseif c2h.isManyToOne(field)> <#foreach column in field.getColumnIterator()> <column>${column.name}</column> </#foreach> </#if> </#foreach> <#assign rows = 1 .. 3> <#foreach num in rows> <row> <#foreach field in pojo.getAllPropertiesIterator()> <#if !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#foreach column in field.getColumnIterator()> <value description="${column.name}"><#rt/> <#if field.equals(pojo.identifierProperty)> <#lt/>-${num}<#rt/> <#elseif field.equals(pojo.versionProperty)> <#if field.value.typeName.equals("timestamp")> 2000-01-01 00:00:00<#t/> <#else> 1<#rt/> </#if> <#else> <#lt/>${data.getTestValueForDbUnit(column)}<#rt/> </#if> <#lt/></value> </#foreach> <#elseif c2h.isManyToOne(field)> <#foreach column in field.getColumnIterator()> <value description="${column.name}"><#rt/> <#lt/>-${num}<#rt/> <#lt/></value> </#foreach> </#if> </#foreach> </row> </#foreach> </table> <!--${pojo.shortName}-END--> </dataset>
dao/ibatis包:
compass-gps.ftl
<!-- CompassGps allows to perform index operation based on the select statements defined in iBatis --> <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop"> <property name="compass" ref="compass"/> <property name="gpsDevices"> <list> <bean class="org.compass.gps.device.ibatis.SqlMapClientGpsDevice"> <property name="name" value="ibatis"/> <property name="sqlMapClient" ref="sqlMapClient"/> <property name="selectStatementsIds"> <list> <value>getUsers</value> </list> </property> </bean> </list> </property> </bean> <!-- Add new DAOs here -->
select-ids.ftl
<value>get${util.getPluralForWord(pojo.shortName)}</value> <value>getUsers</value>
dao-impl.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign pojoName = pojo.importType(pojo.getDeclarationName())> package ${basepackage}.dao.ibatis; import ${basepackage}.model.${pojo.shortName}; import ${basepackage}.dao.${pojo.shortName}Dao; import ${appfusepackage}.dao.ibatis.GenericDaoiBatis; import org.springframework.stereotype.Repository; import java.util.List; import com.launch.mycar.core.util.PagingHelper; @Repository("${pojoNameLower}Dao") public class ${pojo.shortName}DaoiBatis extends GenericDaoiBatis<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> implements ${pojo.shortName}Dao { public ${pojo.shortName}DaoiBatis() { super(${pojo.shortName}.class); } public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}) { return super.get(${pojo.identifierProperty.name}); } public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}() { return super.getAll(); } public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower}) { int size = this.getObjectTotal("query${util.getPluralForWord(pojo.shortName)}", ${pojoNameLower}); pageNo = PagingHelper.getAvailablePageNo(size, pageSize, pageNo); int offset = (pageNo - 1) * pageSize; List ${util.getPluralForWord(pojoNameLower)} = getSqlMapClientTemplate().queryForList("query${util.getPluralForWord(pojo.shortName)}", ${pojoNameLower}, offset, pageSize); return new PagingHelper(size, pageSize, pageNo, ${util.getPluralForWord(pojoNameLower)}); } public void delete${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}) { super.remove(${pojo.identifierProperty.name}); } public ${pojoName} save${pojoName}(${pojoName} ${pojoNameLower}) { return super.save(${pojoNameLower}); } public ${pojoName} update${pojoName}(${pojoName} ${pojoNameLower}) { return super.save(${pojoNameLower}); } public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}) { return super.exists(${pojo.identifierProperty.name}); } }
sql-map.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign table_name = clazz.table.name> <#assign numProperties = 0> <#foreach field in pojo.getAllPropertiesIterator()> <#foreach column in field.getColumnIterator()> <#if field.equals(pojo.identifierProperty)> <#assign idColumn = column.name> <#assign idField = field.name> <#else><#assign numProperties = numProperties + 1> </#if> </#foreach> </#foreach> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="${pojo.shortName}SQL"> <typeAlias alias="${pojoNameLower}" type="${basepackage}.model.${pojo.shortName}"/> <parameterMap id="addParam" class="${pojoNameLower}"> <#foreach field in pojo.getAllPropertiesIterator()><#rt/> <#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)><#rt/> <parameter property="${field.name}" jdbcType="${data.getJdbcType(field.value.typeName)}" javaType="${field.value.typeName}"/> </#if> </#foreach><#rt/> </parameterMap> <parameterMap id="updateParam" class="${pojoNameLower}"> <#foreach field in pojo.getAllPropertiesIterator()><#rt/> <#if field.equals(pojo.identifierProperty)> <parameter property="${idField}" jdbcType="${data.getJdbcType(field.value.typeName)}" javaType="${field.value.typeName}"/> </#if> <#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <parameter property="${field.name}" jdbcType="${data.getJdbcType(field.value.typeName)}" javaType="${field.value.typeName}"/> </#if> </#foreach><#rt/> </parameterMap> <resultMap id="${pojoNameLower}Result" class="${pojoNameLower}"> <#foreach field in pojo.getAllPropertiesIterator()><#rt/> <#foreach column in field.getColumnIterator()><#rt/> <#assign columnName = column.name> </#foreach> <#if field.equals(pojo.identifierProperty)> <result property="${field.name}" column="${idColumn}"/> <#elseif !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <result property="${field.name}" column="${columnName}"/> </#if> </#foreach> </resultMap> <select id="query${util.getPluralForWord(pojo.shortName)}" resultMap="${pojoNameLower}Result"> <![CDATA[ select * from ${table_name} ]]> </select> <select id="get${pojo.shortName}" parameterClass="${pojo.identifierProperty.value.typeName}" resultMap="${pojoNameLower}Result"> <![CDATA[ select * from ${table_name} where ${idColumn} = #${idField}# ]]> </select> <insert id="save${pojo.shortName}" parameterClass="${pojoNameLower}"> <selectKey resultClass="${pojo.identifierProperty.value.typeName}" keyProperty="${idField}" type="pre"> SELECT SEQ_${clazz.table.name}.NEXTVAL AS ${idField} FROM DUAL </selectKey> <![CDATA[ <#assign fIdx = 1> insert into ${table_name} (${idColumn},<#rt/> <#lt><#foreach field in pojo.getAllPropertiesIterator()> <#list field.getColumnIterator() as column><#rt/> <#assign columnName = column.name> </#list> <#lt/><#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#lt/>${columnName}<#if fIdx lt numProperties>, </#if><#assign fIdx = fIdx+1></#if><#rt/> <#lt/></#foreach>) values (#${idField}#,<#rt/><#assign fIdx = 1> <#foreach field in pojo.getAllPropertiesIterator()> <#lt/><#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#lt/>#${field.name}#<#if fIdx lt numProperties>, </#if><#assign fIdx = fIdx+1></#if><#rt/> <#lt/></#foreach>) ]]> </insert> <update id="update${pojo.shortName}" parameterClass="${pojoNameLower}"> <![CDATA[ update ${table_name} set <#assign fIdx = 1> <#foreach field in pojo.getAllPropertiesIterator()> <#list field.getColumnIterator() as column> <#assign columnName = column.name> </#list> <#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#lt/> ${columnName} = #${field.name}#<#if fIdx lt numProperties>, </#if><#assign fIdx = fIdx+1> </#if> </#foreach> where ${idColumn} = #${idField}# ]]> </update> <delete id="delete${pojo.shortName}" parameterClass="${pojo.identifierProperty.value.typeName}"> <![CDATA[ delete from ${table_name} where ${idColumn} = #${idField}# ]]> </delete> </sqlMap>
hibernate.cfg.ftl
<!-- NOTE: If you're working offline, you might have to change the DOCTYPE to the following: <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">--> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <mapping class="${appfusepackage}.model.User"/> <mapping class="${appfusepackage}.model.Role"/> </session-factory> </hibernate-configuration>
sql-map-config.ftl
<!--${pojo.shortName}-START--> <sqlMap resource="sqlmaps/${pojo.shortName}SQL.xml"/> <!--${pojo.shortName}-END--> </sqlMapConfig>
model包:
Ejb3PropertyGetAnnotation.ftl
<#if ejb3><#rt/> <#if pojo.hasIdentifierProperty()><#rt/> <#if property.equals(clazz.identifierProperty)><#rt/> <#lt/>${pojo.generateAnnIdGenerator()} <#lt/> @SearchableId <#lt/>${pojo.generateAnnColumnAnnotation(property)} <#lt/> @${pojo.importType("javax.persistence.GeneratedValue")}(strategy = GenerationType.SEQUENCE, generator="SEQ_${clazz.table.name}") <#lt/> @${pojo.importType("javax.persistence.SequenceGenerator")}(name="SEQ_${clazz.table.name}", sequenceName="SEQ_${clazz.table.name}", allocationSize=1)<#rt/> </#if><#rt/> </#if><#rt/> <#if c2h.isManyToOne(property)><#rt/> <#--TODO support @OneToOne true and false--> <#lt/>${pojo.generateManyToOneAnnotation(property)} <#--TODO support optional and targetEntity--> <#lt/>${pojo.generateJoinColumnsAnnotation(property, cfg)} <#elseif c2h.isCollection(property)><#rt/> <#lt/>${pojo.generateCollectionAnnotation(property, cfg)} <#else><#rt/> <#if !property.equals(clazz.identifierProperty)><#rt/> <#lt/>${pojo.generateAnnColumnAnnotation(property)} <#lt/> @SearchableProperty </#if><#rt/> </#if><#rt/> </#if><#rt/>
Ejb3TypeDeclaration.ftl
<#if ejb3?if_exists><#rt/> <#if pojo.isComponent()><#rt/> <#lt>@${pojo.importType("javax.persistence.Embeddable")} <#else><#rt/> <#lt>@${pojo.importType("javax.persistence.Entity")} <#lt>@${pojo.importType("javax.persistence.Table")}(name="${clazz.table.name}")<#rt/> </#if> </#if>
GetPropertyAnnotation.ftl
<#include "Ejb3PropertyGetAnnotation.ftl"/>
Pojo.ftl
${pojo.getPackageDeclaration()} <#assign classbody> <#include "PojoTypeDeclaration.ftl"/> { <#if !pojo.isInterface()> <#include "PojoFields.ftl"/> <#--include "PojoConstructors.ftl"/--> <#include "PojoPropertyAccessors.ftl"/> <#include "PojoEqualsHashcode.ftl"/> <#include "PojoToString.ftl"/> <#else> <#include "PojoInterfacePropertyAccessors.ftl"/> </#if> <#include "PojoExtraClassCode.ftl"/> } </#assign> import ${appfusepackage}.model.BaseObject; import org.compass.annotations.Searchable; import org.compass.annotations.SearchableComponent; import org.compass.annotations.SearchableId; import org.compass.annotations.SearchableProperty; ${pojo.generateImports()} import javax.persistence.GenerationType; import javax.xml.bind.annotation.XmlRootElement; import java.io.Serializable; ${classbody}
PojoFields.ftl
<#foreach field in pojo.getAllPropertiesIterator()><#rt/> <#if pojo.getMetaAttribAsBool(field, "gen-property", true)><#rt/> ${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>; </#if><#rt/> </#foreach><#rt/>
PojoTypeDeclaration.ftl
<#include "Ejb3TypeDeclaration.ftl"/> @Searchable @XmlRootElement ${pojo.getClassModifiers()} ${pojo.getDeclarationType()} ${pojo.getDeclarationName()} extends BaseObject implements Serializable
service包:
generic-beans.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <!--${pojo.shortName}Manager-START--> <bean id="${pojoNameLower}Manager" class="${appfusepackage}.service.impl.GenericManagerImpl"> <constructor-arg> <#if daoframework == "hibernate"> <bean class="${appfusepackage}.dao.hibernate.GenericDaoHibernate"> <constructor-arg value="${pojo.packageName}.${pojo.shortName}"/> </bean> <#elseif daoframework == "ibatis"> <bean class="${appfusepackage}.dao.ibatis.GenericDaoiBatis"> <constructor-arg value="${pojo.packageName}.${pojo.shortName}"/> </bean> <#elseif daoframework == "jpa"> <bean class="${appfusepackage}.dao.jpa.GenericDaoJpa"> <constructor-arg value="${pojo.packageName}.${pojo.shortName}"/> </bean> </#if> </constructor-arg> </bean> <!--${pojo.shortName}Manager-END--> <!-- Add new Managers here -->
manager.ftl
package ${basepackage}.service; import ${appfusepackage}.service.GenericManager; import ${basepackage}.model.${pojo.shortName}; import java.util.List; import com.launch.mycar.core.util.PagingHelper; <#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign pojoName = pojo.importType(pojo.getDeclarationName())> public interface ${pojo.shortName}Manager extends GenericManager<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> { public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}); public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}(); public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower}); public void remove${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}); public ${pojoName} create${pojoName}(${pojoName} ${pojoNameLower}); public ${pojoName} edit${pojoName}(${pojoName} ${pojoNameLower}); public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}); }
manager-bean.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <!--${pojo.shortName}Manager-START--> <bean id="${pojoNameLower}Manager" class="${basepackage}.service.impl.${pojo.shortName}ManagerImpl"> <constructor-arg ref="${pojoNameLower}Dao"/> </bean> <!--${pojo.shortName}Manager-END--> <!-- Add new Managers here -->
manager-impl.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign pojoName = pojo.importType(pojo.getDeclarationName())> package ${basepackage}.service.impl; import ${basepackage}.dao.${pojo.shortName}Dao; import ${basepackage}.model.${pojo.shortName}; import ${basepackage}.service.${pojo.shortName}Manager; import ${appfusepackage}.service.impl.GenericManagerImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import com.launch.mycar.core.util.PagingHelper; @Service("${pojoNameLower}Manager") public class ${pojo.shortName}ManagerImpl extends GenericManagerImpl<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> implements ${pojo.shortName}Manager { ${pojo.shortName}Dao ${pojoNameLower}Dao; @Autowired public ${pojo.shortName}ManagerImpl(${pojo.shortName}Dao ${pojoNameLower}Dao) { super(${pojoNameLower}Dao); this.${pojoNameLower}Dao = ${pojoNameLower}Dao; } public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}) { return super.get(${pojo.identifierProperty.name}); } public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}() { return super.getAll(); } public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower}) { return ${pojoNameLower}Dao.query${util.getPluralForWord(pojo.shortName)}(pageNo, pageSize, ${pojoNameLower}); } public void remove${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}) { super.remove(${pojo.identifierProperty.name}); } public ${pojoName} create${pojoName}(${pojoName} ${pojoNameLower}) { return super.save(${pojoNameLower}); } public ${pojoName} edit${pojoName}(${pojoName} ${pojoNameLower}) { return super.save(${pojoNameLower}); } public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name}) { return super.exists(${pojo.identifierProperty.name}); } }
manager-test.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)> <#assign setIdMethodName = 'set' + pojo.getPropertyName(pojo.identifierProperty)> <#assign identifierType = pojo.getJavaTypeName(pojo.identifierProperty, jdk5)> package ${basepackage}.service.impl; import java.util.ArrayList; import java.util.List; import ${basepackage}.dao.${pojo.shortName}Dao; import ${basepackage}.model.${pojo.shortName}; import ${appfusepackage}.service.impl.BaseManagerMockTestCase; import org.jmock.Expectations; import org.junit.Before; import org.junit.After; import org.junit.Test; import static org.junit.Assert.*; public class ${pojo.shortName}ManagerImplTest extends BaseManagerMockTestCase { private ${pojo.shortName}ManagerImpl manager = null; private ${pojo.shortName}Dao dao = null; @Before public void setUp() { dao = context.mock(${pojo.shortName}Dao.class); manager = new ${pojo.shortName}ManagerImpl(dao); } @After public void tearDown() { manager = null; } @Test public void testGet${pojo.shortName}() { log.debug("testing get..."); final ${identifierType} ${pojo.identifierProperty.name} = 7L; final ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}(); // set expected behavior on dao context.checking(new Expectations() {{ one(dao).get(with(equal(${pojo.identifierProperty.name}))); will(returnValue(${pojoNameLower})); }}); ${pojo.shortName} result = manager.get(${pojo.identifierProperty.name}); assertSame(${pojoNameLower}, result); } @Test public void testGet${util.getPluralForWord(pojo.shortName)}() { log.debug("testing getAll..."); final List ${util.getPluralForWord(pojoNameLower)} = new ArrayList(); // set expected behavior on dao context.checking(new Expectations() {{ one(dao).getAll(); will(returnValue(${util.getPluralForWord(pojoNameLower)})); }}); List result = manager.getAll(); assertSame(${util.getPluralForWord(pojoNameLower)}, result); } @Test public void testSave${pojo.shortName}() { log.debug("testing save..."); final ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}(); // enter all required fields <#foreach field in pojo.getAllPropertiesIterator()> <#foreach column in field.getColumnIterator()> <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#lt/> ${pojoNameLower}.set${pojo.getPropertyName(field)}(${data.getValueForJavaTest(column)}); </#if> </#foreach> </#foreach> // set expected behavior on dao context.checking(new Expectations() {{ one(dao).save(with(same(${pojoNameLower}))); }}); manager.save(${pojoNameLower}); } @Test public void testRemove${pojo.shortName}() { log.debug("testing remove..."); final ${identifierType} ${pojo.identifierProperty.name} = -11L; // set expected behavior on dao context.checking(new Expectations() {{ one(dao).remove(with(equal(${pojo.identifierProperty.name}))); }}); manager.remove(${pojo.identifierProperty.name}); } }
web包:
web/struts包:
action.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)> <#assign setIdMethodName = 'set' + pojo.getPropertyName(pojo.identifierProperty)> <#assign identifierType = pojo.getJavaTypeName(pojo.identifierProperty, jdk5)> <#assign pojoName = pojo.importType(pojo.getDeclarationName())> package ${basepackage}.webapp.action; import com.opensymphony.xwork2.Preparable; <#if genericcore> import ${appfusepackage}.service.GenericManager; <#else> import ${basepackage}.service.${pojo.shortName}Manager; </#if> import ${basepackage}.model.${pojo.shortName}; import ${basepackage}.webapp.action.BaseAction; import com.launch.mycar.core.webapp.Constants; import com.launch.mycar.core.util.PagingHelper; import java.util.List; public class ${pojo.shortName}Action extends BaseAction implements Preparable { <#if genericcore> private GenericManager<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> ${pojoNameLower}Manager; <#else> private ${pojo.shortName}Manager ${pojoNameLower}Manager; </#if> private ${pojo.shortName} ${pojoNameLower}; private ${identifierType} ${pojo.identifierProperty.name}; <#if genericcore> public void set${pojo.shortName}Manager(GenericManager<${pojo.shortName}, ${identifierType}> ${pojoNameLower}Manager) { <#else> public void set${pojo.shortName}Manager(${pojo.shortName}Manager ${pojoNameLower}Manager) { </#if> this.${pojoNameLower}Manager = ${pojoNameLower}Manager; } /** * Grab the entity from the database before populating with request parameters */ public void prepare() { if (getRequest().getMethod().equalsIgnoreCase("post")) { // prevent failures on new String ${pojoNameLower}Id = getRequest().getParameter("${pojoNameLower}.${pojo.identifierProperty.name}"); if (${pojoNameLower}Id != null && !${pojoNameLower}Id.equals("")) { ${pojoNameLower} = ${pojoNameLower}Manager.get(new ${identifierType}(${pojoNameLower}Id)); } } } public void ${setIdMethodName}(${identifierType} ${pojo.identifierProperty.name}) { this.${pojo.identifierProperty.name} = ${pojo.identifierProperty.name}; } public ${identifierType} ${getIdMethodName}(){ return this.${pojo.identifierProperty.name}; } public ${pojo.shortName} get${pojo.shortName}() { return ${pojoNameLower}; } public void set${pojo.shortName}(${pojo.shortName} ${pojoNameLower}) { this.${pojoNameLower} = ${pojoNameLower}; } public String remove${pojoName}() { ${pojoNameLower}Manager.remove${pojoName}(${pojoNameLower}.${getIdMethodName}()); saveMessage(getText("${pojoNameLower}.remove")); return SUCCESS; } public String edit${pojoName}() { if (${pojo.identifierProperty.name} != null) { ${pojoNameLower} = ${pojoNameLower}Manager.get${pojoName}(${pojo.identifierProperty.name}); } else { ${pojoNameLower} = new ${pojo.shortName}(); } return SUCCESS; } public String query${util.getPluralForWord(pojo.shortName)}() { PagingHelper ${util.getPluralForWord(pojoNameLower)} = ${pojoNameLower}Manager.query${util.getPluralForWord(pojo.shortName)}(pageNo,Constants.PAGE_SIZE, ${pojoNameLower}); this.setValueStack("${util.getPluralForWord(pojoNameLower)}", ${util.getPluralForWord(pojoNameLower)}); return SUCCESS; } public String create${pojoName}() throws Exception { boolean isNew = (${pojoNameLower}.${getIdMethodName}() == null); ${pojoNameLower}Manager.create${pojoName}(${pojoNameLower}); String key = (isNew) ? "${pojoNameLower}.added" : "${pojoNameLower}.updated"; saveMessage(getText(key)); if (!isNew) { return INPUT; } else { return SUCCESS; } } }
action-test.ftl
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)> <#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)> <#assign setIdMethodName = 'set' + pojo.getPropertyName(pojo.identifierProperty)> <#assign identifierType = pojo.getJavaTypeName(pojo.identifierProperty, jdk5)> package ${basepackage}.webapp.action; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.ServletActionContext; <#if genericcore> import ${appfusepackage}.service.GenericManager; <#assign managerClass = 'GenericManager'> <#else> import ${basepackage}.service.${pojo.shortName}Manager; <#assign managerClass = pojo.shortName + 'Manager'> </#if> import ${pojo.packageName}.${pojo.shortName}; import ${basepackage}.webapp.action.BaseActionTestCase; import org.compass.gps.CompassGps; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockHttpServletRequest; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class ${pojo.shortName}ActionTest extends BaseActionTestCase { private ${pojo.shortName}Action action; @Autowired private CompassGps compassGps; @Before public void onSetUp() { super.onSetUp(); compassGps.index(); action = new ${pojo.shortName}Action(); ${managerClass} ${pojoNameLower}Manager = (${managerClass}) applicationContext.getBean("${pojoNameLower}Manager"); action.set${pojo.shortName}Manager(${pojoNameLower}Manager); // add a test ${pojoNameLower} to the database ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}(); // enter all required fields <#foreach field in pojo.getAllPropertiesIterator()> <#foreach column in field.getColumnIterator()> <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#lt/> ${pojoNameLower}.set${pojo.getPropertyName(field)}(<#rt/> <#if field.value.typeName == "java.lang.String" && column.isUnique()><#lt/>${data.generateRandomStringValue(column)}<#else>${data.getValueForJavaTest(column)}</#if><#lt/>); </#if> </#foreach> </#foreach> ${pojoNameLower}Manager.save(${pojoNameLower}); } @Test public void testGetAll${util.getPluralForWord(pojo.shortName)}() throws Exception { assertEquals(action.list(), ActionSupport.SUCCESS); assertTrue(action.get${util.getPluralForWord(pojo.shortName)}().size() >= 1); } @Test public void testSearch() throws Exception { action.setQ("*"); assertEquals(action.list(), ActionSupport.SUCCESS); assertEquals(4, action.get${util.getPluralForWord(pojo.shortName)}().size()); } @Test public void testEdit() throws Exception { log.debug("testing edit..."); action.${setIdMethodName}(-1L); assertNull(action.get${pojo.shortName}()); assertEquals("success", action.edit()); assertNotNull(action.get${pojo.shortName}()); assertFalse(action.hasActionErrors()); } @Test public void testSave() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); ServletActionContext.setRequest(request); action.${setIdMethodName}(-1L); assertEquals("success", action.edit()); assertNotNull(action.get${pojo.shortName}()); ${pojo.shortName} ${pojoNameLower} = action.get${pojo.shortName}(); // update required fields <#foreach field in pojo.getAllPropertiesIterator()> <#foreach column in field.getColumnIterator()> <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)> <#lt/> ${pojoNameLower}.set${pojo.getPropertyName(field)}(${data.getValueForJavaTest(column)}); </#if> </#foreach> </#foreach> action.set${pojo.shortName}(${pojoNameLower}); assertEquals("input", action.save()); assertFalse(action.hasActionErrors()); assertFalse(action.hasFieldErrors()); assertNotNull(request.getSession().getAttribute("messages")); } @Test public void testRemove() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); ServletActionContext.setRequest(request); action.setDelete(""); ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}(); ${pojoNameLower}.${setIdMethodName}(-2L); action.set${pojo.shortName}(${pojoNameLower}); assertEquals("success", action.delete()); assertNotNull(request.getSession().getAttribute("messages")); } }
相关推荐
AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发过程。它提供了一个基础框架,集成了许多流行的开源库,如Spring、Hibernate、Struts或Spring Boot等,帮助开发者快速搭建应用骨架。AppFuse 可以根据选定的...
**AppFuse 学习笔记(一):安装与部署** AppFuse 是一个开源项目,它提供了一种快速构建企业级 Web 应用程序的方式。它使用了多种流行的技术栈,如 Spring Boot、Hibernate、Thymeleaf 和 Maven,使得开发者可以更...
### AppFuse与SpringMVC+MyBatis整合详解 #### 一、概述 AppFuse是一个开源的应用程序骨架,主要用于快速构建基于Java的企业级应用。它提供了丰富的模板和配置,能够帮助开发者快速搭建起一个完整的应用架构。本...
### AppFuse:加速J2EE项目开发 #### 一、简介与背景 AppFuse是一个用于启动J2EE项目的工具包,它提供了一种快速而简便的方法来构建基于Java的应用程序。该工具包由Matt Raible创建,他在网络开发领域拥有丰富的...
AppFuse 是一个基于Java平台的开源项目,旨在加速和简化Web应用程序的开发。它通过集成各种流行框架,如Struts、Spring、Hibernate等,提供了一个项目骨架,使得开发者能够快速搭建新项目的结构。AppFuse分为1.x和...
【MAVEN 搭建APPFUSE】是一个关于使用Maven构建基于AppFuse的应用程序的教程。AppFuse是一个开源项目,旨在简化Web应用程序的开发,它提供了一个基础框架,可以帮助开发者快速启动新项目,整合了Spring、Hibernate、...
06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬
AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发。它提供了一个基础架构,开发者可以在此基础上快速构建安全、可扩展的应用程序。AppFuse 2.1 版本是该项目的一个较早版本,但仍然包含了现代Web开发的核心...
AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...
**Appfuse开发教程** Appfuse 是一个开源项目,它提供了一种快速开发Web应用程序的方式,尤其在使用Java技术栈时。本教程将深入探讨如何利用Appfuse创建数据访问对象(DAO)和简单Java对象(POJO),并进行数据库...
AppFuse 是一个由 Matt Raible 创建的开源项目,旨在为初学者提供一个快速入门的 J2EE 框架模板。它集成了多种流行的技术,包括 Spring、Hibernate、iBatis、Struts、Xdoclet 和 JUnit,同时也支持 Taperstry 和 JSF...
AppFuse 是一个开源项目,它提供了快速开发Java Web应用程序的基础框架。这个框架集成了Spring、Hibernate和Struts等主流技术,使得开发者能够迅速构建出符合MVC架构的应用。在最新的版本2.1.0-M2中,AppFuse 提供了...
主要是自己从网络上搜集的一些关于appfuse1.8.2-2.0.2的一些相关资料,间或有点自己试验的记录,还有点maven和quartz的东东,之前我主要是用1.8.2构建项目,感觉还不错,希望对想学习appfuse的人有些帮助.
AppFuse是一个开源项目,旨在简化Java Web应用的开发。它提供了一个基础结构,开发者可以在此基础上快速构建安全、模块化的应用程序。本项目是关于利用AppFuse框架构建B2C(Business-to-Consumer)电子商务系统的...
**玩转AppFuse:使用AppFuse建设MVC网站** AppFuse是一个开源项目,它提供了一个快速启动MVC(Model-View-Controller)Web应用程序开发的框架。基于Java,AppFuse集成了Spring、Struts2、Hibernate等流行的技术,极...
Appfuse框架解析,包括登陆验证,执行顺序,加载策略等。
### Appfuse教程知识点详解 #### 一、Appfuse框架简介 **Appfuse** 是由 Matt Raible 开发的一款面向 J2EE 的框架,其主要目的是为开发者提供一套集成多个流行框架(如 Spring、Hibernate、iBatis、Struts、...