Skip to content

Commit

Permalink
Add processor injection to infra components and mongo compose configu…
Browse files Browse the repository at this point in the history
…ration
  • Loading branch information
temelt committed Jan 6, 2022
1 parent 836f24f commit 7bbbf82
Show file tree
Hide file tree
Showing 11 changed files with 95 additions and 2 deletions.
11 changes: 11 additions & 0 deletions common/src/main/java/com/temelt/Processor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.temelt;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Processor {
}
6 changes: 6 additions & 0 deletions employee-service/domain/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,11 @@
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.temelt</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.temelt.employee.model;

import com.temelt.common.Scenario;

public class CreateEmployeeRequest implements Scenario {
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.temelt.employee.port;

import com.temelt.employee.model.CreateEmployeeRequest;
import com.temelt.employee.model.Employee;
import java.util.Optional;

public interface EmployeePort {

Optional<Employee> getEmployee(String id);

Employee createEmployee(CreateEmployeeRequest request);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.temelt.employee.processor;

import com.temelt.Processor;
import com.temelt.common.ScenarioProcessor;
import com.temelt.employee.model.CreateEmployeeRequest;
import com.temelt.employee.model.Employee;
import lombok.RequiredArgsConstructor;

@Processor
@RequiredArgsConstructor
public class CreateEmployeeRequestProcessor implements ScenarioProcessor<Employee, CreateEmployeeRequest> {
@Override
public Employee process(CreateEmployeeRequest item) {
throw new UnsupportedOperationException();
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
package com.temelt.employee;

import com.temelt.Processor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;

@ComponentScan(
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Processor.class})
}
)
@SpringBootApplication
public class EmployeeServiceApp {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@
package com.temelt.employee.adapters.rest;

import com.temelt.common.ScenarioProcessor;
import com.temelt.employee.model.CreateEmployeeRequest;
import com.temelt.employee.model.Employee;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("employee")
@RequiredArgsConstructor
public class EmployeeRest {
private final ScenarioProcessor<Employee, CreateEmployeeRequest> createEmployeeRequestProcessor;

@GetMapping("/id")
public ResponseEntity<Employee> getEmployee(@PathVariable String id) {
return ResponseEntity.ok(new Employee(id));
}

@PostMapping
public ResponseEntity<Employee> createEmployee(@RequestBody CreateEmployeeRequest request) {
var result = createEmployeeRequestProcessor.process(request);
return ResponseEntity.ok(result);
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package com.temelt.inventory.processor;

import com.temelt.Processor;
import com.temelt.common.ScenarioProcessor;
import com.temelt.inventory.exception.InvalidDescriptionException;
import com.temelt.inventory.model.CreateInventoryRequest;
import com.temelt.inventory.model.Inventory;
import lombok.RequiredArgsConstructor;

public class InventoryCreationProcessor implements ScenarioProcessor<Inventory, CreateInventoryRequest> {
@Processor
@RequiredArgsConstructor
public class CreateInventoryRequestProcessor implements ScenarioProcessor<Inventory, CreateInventoryRequest> {

@Override
public Inventory process(CreateInventoryRequest item) {
if (item.getDescription() == null || item.getDescription().trim().length() < 3) {
throw new InvalidDescriptionException("inventory.create.description");
throw new InvalidDescriptionException("inventory.create.description.invalid");
}
throw new UnsupportedOperationException();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
package com.temel.inventory;

import com.temelt.Processor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;

@ComponentScan(
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Processor.class})
}
)
@SpringBootApplication
public class InventoryServiceApp {

Expand Down
8 changes: 8 additions & 0 deletions tools/docker-compose.dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: '3.9'
services:
mongo:
image: mongo
profiles:
- dev
ports:
- "27017:27017"
10 changes: 10 additions & 0 deletions tools/start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

if [[ "$#" -eq 0 ]];
then
docker-compose -f docker-compose.dev.yml --profile dev up -d --build
exit
else
docker-compose -f docker-compose.dev.yml --profile dev "$@" up -d --build
exit
fi

0 comments on commit 7bbbf82

Please sign in to comment.