diff --git a/pom.xml b/pom.xml index 3b39b65..0686372 100644 --- a/pom.xml +++ b/pom.xml @@ -2,6 +2,7 @@ 4.0.0 + org.springframework.boot spring-boot-starter-parent @@ -26,6 +27,7 @@ org.springframework.boot spring-boot-starter-web + org.springframework.boot spring-boot-starter-data-rest @@ -85,6 +87,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/settings_maven.xml b/settings_maven.xml new file mode 100644 index 0000000..29c6497 --- /dev/null +++ b/settings_maven.xml @@ -0,0 +1,10 @@ + + + + eventstorming + eventstorming + k6hx3hjbjnxw2g6avk2j4skr6md2ruanva7ryjfraqaqn2bwcvsq + + + \ No newline at end of file diff --git a/src/main/java/com/example/template/AbstractEvent.java b/src/main/java/com/example/template/AbstractEvent.java index 5e5244a..6809b3c 100644 --- a/src/main/java/com/example/template/AbstractEvent.java +++ b/src/main/java/com/example/template/AbstractEvent.java @@ -55,7 +55,10 @@ public class AbstractEvent { return json; } - public void sendMessage(String json){ + public void publish(){ + this.publish(this.toJson()); + } + public void publish(String json){ if( json != null ){ /** diff --git a/src/main/java/com/example/template/Product.java b/src/main/java/com/example/template/Product.java index 9ea8ddd..d686ba1 100644 --- a/src/main/java/com/example/template/Product.java +++ b/src/main/java/com/example/template/Product.java @@ -32,7 +32,7 @@ public class Product { @PostPersist @PostUpdate private void publishStart() { ProductChanged productChanged = new ProductChanged(this); - productChanged.sendMessage(productChanged.toJson()); + productChanged.publish(); } public Long getId() { diff --git a/src/main/java/com/example/template/ProductChanged.java b/src/main/java/com/example/template/ProductChanged.java index 8112025..a5a91cf 100644 --- a/src/main/java/com/example/template/ProductChanged.java +++ b/src/main/java/com/example/template/ProductChanged.java @@ -14,9 +14,7 @@ public class ProductChanged extends AbstractEvent{ private String imageUrl; public ProductChanged(){ - this.setEventType(this.getClass().getSimpleName()); - SimpleDateFormat defaultSimpleDateFormat = new SimpleDateFormat("YYYYMMddHHmmss"); - this.timestamp = defaultSimpleDateFormat.format(new Date()); + super(); } public ProductChanged(Product product){ diff --git a/src/main/java/com/example/template/ProductController.java b/src/main/java/com/example/template/ProductController.java index b16f34d..d119ed9 100644 --- a/src/main/java/com/example/template/ProductController.java +++ b/src/main/java/com/example/template/ProductController.java @@ -1,14 +1,31 @@ package com.example.template; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController public class ProductController { + + private static final String RESPONSE_STRING_FORMAT = "product change from '%s': %d"; + private final Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired ProductService productService; + private int count = 0; + + private static final String HOSTNAME = parseContainerIdFromHostname( + System.getenv().getOrDefault("HOSTNAME", "deliveries")); + + static String parseContainerIdFromHostname(String hostname) { + return hostname.replaceAll("deliveries-v\\d+-", ""); + } + + @GetMapping("/product/{productId}") Product productStockCheck(@PathVariable(value = "productId") Long productId) { @@ -27,4 +44,20 @@ public class ProductController { System.out.println(data); return this.productService.save(data); } + + + @PatchMapping("/product/{productId}") + ResponseEntity fakeProductPatch(@PathVariable(value = "productId") Long productId, @RequestBody String data) { + + count++; + logger.info(String.format("product start from %s: %d", HOSTNAME, count)); + + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return ResponseEntity.ok(String.format(RESPONSE_STRING_FORMAT, HOSTNAME, count)); + } }