diff --git a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/rest/RecipeController.kt b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/rest/RecipeController.kt index d9a4c84..24c0100 100644 --- a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/rest/RecipeController.kt +++ b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/rest/RecipeController.kt @@ -4,8 +4,10 @@ import dev.fyloz.trial.colorrecipesexplorer.model.* import dev.fyloz.trial.colorrecipesexplorer.service.MixService import dev.fyloz.trial.colorrecipesexplorer.service.RecipeService import org.springframework.http.ResponseEntity -import org.springframework.web.bind.annotation.* -import java.net.URI +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController import javax.validation.Valid @@ -28,20 +30,5 @@ class RecipeController(recipeService: RecipeService) : @RestController @RequestMapping(MIX_CONTROLLER_PATH) -class MixController(val mixService: MixService) { - @PostMapping - fun save(@Valid @RequestBody entity: MixSaveDto): ResponseEntity { - val saved = mixService.save(entity) - return ResponseEntity - .created(URI("$MIX_CONTROLLER_PATH/${saved.id}")) - .body(saved) - } - - @PutMapping - fun update(@Valid @RequestBody entity: MixUpdateDto): ResponseEntity { - mixService.update(entity) - return ResponseEntity - .noContent() - .build() - } -} +class MixController(val mixService: MixService) : + AbstractModelRestApiController(mixService, MIX_CONTROLLER_PATH) diff --git a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialService.kt b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialService.kt index 7be7ca1..925000d 100644 --- a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialService.kt +++ b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialService.kt @@ -5,7 +5,7 @@ import dev.fyloz.trial.colorrecipesexplorer.model.Mix import dev.fyloz.trial.colorrecipesexplorer.model.MixMaterial import dev.fyloz.trial.colorrecipesexplorer.model.mixMaterial import dev.fyloz.trial.colorrecipesexplorer.repository.MixMaterialRepository -import org.springframework.beans.factory.annotation.Autowired +import org.springframework.context.annotation.Lazy import org.springframework.stereotype.Service interface MixMaterialService : ModelService { @@ -20,13 +20,13 @@ interface MixMaterialService : ModelService } @Service -class MixMaterialServiceImpl(mixMaterialRepository: MixMaterialRepository) : - AbstractModelService(mixMaterialRepository), MixMaterialService { - @Autowired - lateinit var materialService: MaterialService - +class MixMaterialServiceImpl( + mixMaterialRepository: MixMaterialRepository, + @Lazy val materialService: MaterialService +) : AbstractModelService(mixMaterialRepository), MixMaterialService { override fun existsByMaterial(material: Material): Boolean = repository.existsByMaterial(material) - override fun createFromMap(mix: Mix, map: Map): Collection = map.map { createFromPair(mix, it.toPair()) } + override fun createFromMap(mix: Mix, map: Map): Collection = + map.map { createFromPair(mix, it.toPair()) } override fun createFromPair(mix: Mix, pair: Pair): MixMaterial { val material = materialService.getById(pair.first) diff --git a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixService.kt b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixService.kt index aaa512a..957139c 100644 --- a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixService.kt +++ b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixService.kt @@ -21,7 +21,7 @@ interface MixService : ExternalModelService(mixRepository), diff --git a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixTypeService.kt b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixTypeService.kt index 0289213..aee1bb7 100644 --- a/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixTypeService.kt +++ b/src/main/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixTypeService.kt @@ -21,7 +21,7 @@ interface MixTypeService : NamedModelService { @Service class MixTypeServiceImpl( mixTypeRepository: MixTypeRepository, - val materialService: MaterialService, + @Lazy val materialService: MaterialService, @Lazy val mixService: MixService ) : AbstractNamedModelService(mixTypeRepository), MixTypeService { diff --git a/src/test/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialServiceTest.kt b/src/test/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialServiceTest.kt index 8425d1b..1ccac5d 100644 --- a/src/test/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialServiceTest.kt +++ b/src/test/kotlin/dev/fyloz/trial/colorrecipesexplorer/service/MixMaterialServiceTest.kt @@ -15,7 +15,8 @@ import kotlin.test.assertTrue class MixMaterialServiceTest : AbstractModelServiceTest() { override val repository: MixMaterialRepository = mock() - override val service: MixMaterialService = spy(MixMaterialServiceImpl(repository)) + private val materialService: MaterialService = mock() + override val service: MixMaterialService = spy(MixMaterialServiceImpl(repository, materialService)) private val material: Material = material(id = 0L) override val entity: MixMaterial = mixMaterial(id = 0L, material = material)