Skip to content

Commit

Permalink
Add test framework (#79)
Browse files Browse the repository at this point in the history
  • Loading branch information
Idane committed Aug 21, 2021
1 parent e1f5f89 commit f64542f
Show file tree
Hide file tree
Showing 18 changed files with 595 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ import org.springframework.context.annotation.Configuration
class CrudFrameworkConfiguration {

@Bean
fun crudHandler(): CrudHandler = CrudHandlerImpl()
fun crudHandler(): CrudHandler = CrudHandlerImpl(
crudReadHandler(),
crudUpdateHandler(),
crudDeleteHandler(),
crudCreateHandler(),
crudHelper()
)

@Bean
fun crudHelper(): CrudHelper = CrudHelperImpl()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.antelopesystem.crudframework.crud.handler

import com.antelopesystem.crudframework.crud.cache.CrudCache
import com.antelopesystem.crudframework.crud.dataaccess.DataAccessManager
import com.antelopesystem.crudframework.crud.dataaccess.model.DataAccessorDTO
import com.antelopesystem.crudframework.crud.decorator.ObjectDecorator
import com.antelopesystem.crudframework.crud.hooks.interfaces.CRUDHooks
import com.antelopesystem.crudframework.crud.model.EntityMetadataDTO
import com.antelopesystem.crudframework.fieldmapper.transformer.base.FieldTransformer
import com.antelopesystem.crudframework.model.BaseCrudEntity
import com.antelopesystem.crudframework.modelfilter.DynamicModelFilter
import com.antelopesystem.crudframework.modelfilter.FilterField
import java.io.Serializable

abstract class AbstractCrudHelper : CrudHelper {
override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?, HooksType : CRUDHooks<*, out BaseCrudEntity<*>>?> getHooks(crudHooksClazz: Class<HooksType>?, entityClazz: Class<Entity>?): MutableList<HooksType> {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> isEntityDeleted(entity: Entity): Boolean {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> decorateFilter(filter: DynamicModelFilter?, entityClazz: Class<Entity>?, accessorDTO: DataAccessorDTO?, forUpdate: Boolean) {
throw UnsupportedOperationException()
}

override fun validateAndFillFilterFieldMetadata(filterFields: MutableList<FilterField>?, metadataDTO: EntityMetadataDTO?) {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getEntities(
filter: DynamicModelFilter?,
entityClazz: Class<Entity>?,
accessorDTO: DataAccessorDTO?,
persistCopy: Boolean?,
forUpdate: Boolean
): MutableList<Entity> {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getEntitiesCount(filter: DynamicModelFilter?, entityClazz: Class<Entity>?, accessorDTO: DataAccessorDTO?, forUpdate: Boolean): Long {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getEntityById(entityId: ID, entityClazz: Class<Entity>?, persistCopy: Boolean?, accessorDTO: DataAccessorDTO?, forUpdate: Boolean): Entity {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getEntityCountById(entityId: ID, entityClazz: Class<Entity>?, accessorDTO: DataAccessorDTO?, forUpdate: Boolean): Long {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getAccessorManager(accessorClazz: Class<*>?, entityClazz: Class<Entity>?): DataAccessManager<*, *, *> {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> checkEntityImmutability(clazz: Class<Entity>?) {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> checkEntityDeletability(clazz: Class<Entity>?) {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getEntityMetadata(entityClazz: Class<Entity>?): EntityMetadataDTO {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> evictEntityFromCache(entity: Entity) {
throw UnsupportedOperationException()
}

override fun <Entity : Any?, E : Any?> getObjectDecorator(fromClass: Class<Entity>?, toClass: Class<E>?): ObjectDecorator<Entity, E> {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getEntityCache(clazz: Class<Entity>?): CrudCache {
throw UnsupportedOperationException()
}

override fun validate(target: Any?) {
throw UnsupportedOperationException()
}

override fun <From : Any?, To : Any?> fill(fromObject: From, toClazz: Class<To>): To {
throw UnsupportedOperationException()
}

override fun <From : Any?, To : Any?> fill(fromObject: From, toObject: To) {
throw UnsupportedOperationException()
}

override fun <From : Any?, To : Any?> fillMany(fromObjects: MutableList<From>, toClazz: Class<To>): List<To> {
throw UnsupportedOperationException()
}

override fun <Entity : Any?> setTotalToPagingCache(entityClazz: Class<Entity>?, filter: DynamicModelFilter?, total: Long) {
throw UnsupportedOperationException()
}

override fun <Entity : Any?> getTotalFromPagingCache(entityClazz: Class<Entity>?, filter: DynamicModelFilter?): Long {
throw UnsupportedOperationException()
}

override fun <ID : Serializable?, Entity : BaseCrudEntity<ID>?> getCrudDaoForEntity(entityClazz: Class<Entity>?): CrudDao {
throw UnsupportedOperationException()
}

override fun registerDefaultTransformer(transformer: FieldTransformer<*, *>?) {
throw UnsupportedOperationException()
}

override fun registerDefaultTransformer(transformer: FieldTransformer<*, *>?, fromType: Class<*>?, toType: Class<*>?) {
throw UnsupportedOperationException()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

public interface CrudDeleteHandler {

<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Object deleteInternal(ID id, Class<Entity> clazz,
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> void deleteInternal(ID id, Class<Entity> clazz,
HooksDTO<CRUDPreDeleteHook<ID, Entity>, CRUDOnDeleteHook<ID, Entity>, CRUDPostDeleteHook<ID, Entity>> hooks,
DataAccessorDTO accessorDTO);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class CrudDeleteHandlerImpl implements CrudDeleteHandler {
private CrudDeleteHandler crudDeleteHandlerProxy;

@Override
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Object deleteInternal(ID id, Class<Entity> clazz,
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> void deleteInternal(ID id, Class<Entity> clazz,
HooksDTO<CRUDPreDeleteHook<ID, Entity>, CRUDOnDeleteHook<ID, Entity>, CRUDPostDeleteHook<ID, Entity>> hooks,
DataAccessorDTO accessorDTO) {

Expand Down Expand Up @@ -63,8 +63,6 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Object delet
for(CRUDPostDeleteHook<ID, Entity> postHook : hooks.getPostHooks()) {
postHook.run(entity);
}

return null;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,27 +48,25 @@ public interface CrudHandler {
* Index request, returns list of {@code T} entity according to {@code filter}
*
* @param <Entity> {@link BaseCrudEntity} type
* @param <Filter> {@link DynamicModelFilter} type
* @param filter the filter
* @param clazz the entity class
* @return {@link ReadCRUDRequestBuilder} use {@link CRUDRequestBuilder#execute()} to run the request
*/
<ID extends Serializable, Entity extends BaseCrudEntity<ID>, Filter extends DynamicModelFilter> ReadCRUDRequestBuilder<CRUDPreIndexHook<ID, Entity, Filter>, CRUDOnIndexHook<ID, Entity, Filter>, CRUDPostIndexHook<ID, Entity, Filter>, PagingDTO<Entity>> index(
Filter filter, Class<Entity> clazz);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> ReadCRUDRequestBuilder<CRUDPreIndexHook<ID, Entity>, CRUDOnIndexHook<ID, Entity>, CRUDPostIndexHook<ID, Entity>, PagingDTO<Entity>> index(
DynamicModelFilter filter, Class<Entity> clazz);

/**
* Index request, returns list of {@code T} entity according to {@code filter}
*
* @param <Entity> {@link BaseCrudEntity} type
* @param <Filter> {@link DynamicModelFilter} type
* @param <RO> return object type
* @param filter the filter
* @param clazz the entity class
* @param toClazz the return object class
* @return {@link ReadCRUDRequestBuilder} use {@link CRUDRequestBuilder#execute()} to run the request
*/
<ID extends Serializable, Entity extends BaseCrudEntity<ID>, Filter extends DynamicModelFilter, RO> ReadCRUDRequestBuilder<CRUDPreIndexHook<ID, Entity, Filter>, CRUDOnIndexHook<ID, Entity, Filter>, CRUDPostIndexHook<ID, Entity, Filter>, PagingDTO<RO>> index(
Filter filter, Class<Entity> clazz, Class<RO> toClazz);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>, RO> ReadCRUDRequestBuilder<CRUDPreIndexHook<ID, Entity>, CRUDOnIndexHook<ID, Entity>, CRUDPostIndexHook<ID, Entity>, PagingDTO<RO>> index(
DynamicModelFilter filter, Class<Entity> clazz, Class<RO> toClazz);

/**
* Delete request, deletes according to {@link Deleteable} and {@link DeleteColumn} if {@link Deleteable#softDelete()} is used. Throws runtime exception if given entity is not deletable
Expand Down Expand Up @@ -185,17 +183,17 @@ <ID extends Serializable, Entity extends BaseCrudEntity<ID>> MassUpdateCRUDReque
<ID extends Serializable, Entity extends BaseCrudEntity<ID>, RO> MassUpdateCRUDRequestBuilder<CRUDPreUpdateHook<ID, Entity>, CRUDOnUpdateHook<ID, Entity>, CRUDPostUpdateHook<ID, Entity>, List<RO>> updateByFilter(
DynamicModelFilter filter, Class<Entity> entityClazz, Class<RO> toClazz);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>, Filter extends DynamicModelFilter> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity, Filter>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, Entity> showBy(
Filter filter, Class<Entity> clazz);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, Entity> showBy(
DynamicModelFilter filter, Class<Entity> clazz);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>, Filter extends DynamicModelFilter> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity, Filter>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, Entity> showBy(
Filter filter, Class<Entity> clazz, ShowByMode mode);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, Entity> showBy(
DynamicModelFilter filter, Class<Entity> clazz, ShowByMode mode);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>, Filter extends DynamicModelFilter, RO> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity, Filter>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, RO> showBy(
Filter filter, Class<Entity> clazz, Class<RO> toClazz);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>, RO> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, RO> showBy(
DynamicModelFilter filter, Class<Entity> clazz, Class<RO> toClazz);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>, Filter extends DynamicModelFilter, RO> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity, Filter>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, RO> showBy(
Filter filter, Class<Entity> clazz, Class<RO> toClazz, ShowByMode mode);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>, RO> ReadCRUDRequestBuilder<CRUDPreShowByHook<ID, Entity>, CRUDOnShowByHook<ID, Entity>, CRUDPostShowByHook<ID, Entity>, RO> showBy(
DynamicModelFilter filter, Class<Entity> clazz, Class<RO> toClazz, ShowByMode mode);

/**
* Show request, returns a single {@code T} entity according with the given {@code id}
Expand Down

0 comments on commit f64542f

Please sign in to comment.