diff --git a/pom.xml b/pom.xml index 4598629..63ddc08 100644 --- a/pom.xml +++ b/pom.xml @@ -26,24 +26,11 @@ - 1.0.0-alpha.6 + 1.0.0-alpha.7 1.8 1.8 UTF-8 UTF-8 - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.10.1 - - - -parameters - - - - \ No newline at end of file diff --git a/src/main/java/com/tigrisdata/starter/collections/Order.java b/src/main/java/com/tigrisdata/starter/collections/Order.java index 2ce0a6c..9496ac0 100644 --- a/src/main/java/com/tigrisdata/starter/collections/Order.java +++ b/src/main/java/com/tigrisdata/starter/collections/Order.java @@ -13,8 +13,8 @@ */ package com.tigrisdata.starter.collections; -import com.tigrisdata.db.annotation.TigrisDBCollectionField; -import com.tigrisdata.db.annotation.TigrisDBCollectionPrimaryKey; +import com.tigrisdata.db.annotation.TigrisField; +import com.tigrisdata.db.annotation.TigrisPrimaryKey; import com.tigrisdata.db.type.TigrisCollectionType; import java.util.List; @@ -22,18 +22,20 @@ public class Order implements TigrisCollectionType { - @TigrisDBCollectionField(description = "A unique identifier for the order") - @TigrisDBCollectionPrimaryKey(1) - private final int id; + @TigrisField(description = "A unique identifier for the order") + @TigrisPrimaryKey(1) + private int id; - @TigrisDBCollectionField(description = "The identifier of the user that placed the order") - private final int userId; + @TigrisField(description = "The identifier of the user that placed the order") + private int userId; - @TigrisDBCollectionField(description = "The total cost of the order") - private final double orderTotal; + @TigrisField(description = "The total cost of the order") + private double orderTotal; - @TigrisDBCollectionField(description = "The list of products that are part of this order") - private final List productItems; + @TigrisField(description = "The list of products that are part of this order") + private List productItems; + + public Order() {} public Order(int id, int userId, double orderTotal, List productItems) { this.id = id; @@ -43,11 +45,13 @@ public Order(int id, int userId, double orderTotal, List productIte } public static class ProductItem { - @TigrisDBCollectionField(description = "The product identifier") - private final int productId; + @TigrisField(description = "The product identifier") + private int productId; + + @TigrisField(description = "The quantity of this product in this order") + private int quantity; - @TigrisDBCollectionField(description = "The quantity of this product in this order") - private final int quantity; + public ProductItem() {} public ProductItem(int productId, int quantity) { this.productId = productId; @@ -62,6 +66,14 @@ public int getQuantity() { return quantity; } + public void setProductId(int productId) { + this.productId = productId; + } + + public void setQuantity(int quantity) { + this.quantity = quantity; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -97,28 +109,35 @@ public List getProductItems() { return productItems; } + public void setId(int id) { + this.id = id; + } + + public void setUserId(int userId) { + this.userId = userId; + } + + public void setOrderTotal(double orderTotal) { + this.orderTotal = orderTotal; + } + + public void setProductItems(List productItems) { + this.productItems = productItems; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - Order order = (Order) o; - - if (id != order.id) return false; - if (userId != order.userId) return false; - if (Double.compare(order.orderTotal, orderTotal) != 0) return false; - return Objects.equals(productItems, order.productItems); + return id == order.id + && userId == order.userId + && Double.compare(order.orderTotal, orderTotal) == 0 + && Objects.equals(productItems, order.productItems); } @Override public int hashCode() { - int result; - long temp; - result = id; - result = 31 * result + userId; - temp = Double.doubleToLongBits(orderTotal); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + (productItems != null ? productItems.hashCode() : 0); - return result; + return Objects.hash(id, userId, orderTotal, productItems); } } diff --git a/src/main/java/com/tigrisdata/starter/collections/Product.java b/src/main/java/com/tigrisdata/starter/collections/Product.java index 5a25013..268e61f 100644 --- a/src/main/java/com/tigrisdata/starter/collections/Product.java +++ b/src/main/java/com/tigrisdata/starter/collections/Product.java @@ -13,26 +13,30 @@ */ package com.tigrisdata.starter.collections; -import com.tigrisdata.db.annotation.TigrisDBCollectionField; -import com.tigrisdata.db.annotation.TigrisDBCollectionPrimaryKey; +import com.tigrisdata.db.annotation.TigrisCollection; +import com.tigrisdata.db.annotation.TigrisField; +import com.tigrisdata.db.annotation.TigrisPrimaryKey; import com.tigrisdata.db.type.TigrisCollectionType; import java.util.Objects; +@TigrisCollection("product_collection") public class Product implements TigrisCollectionType { - @TigrisDBCollectionField(description = "A unique identifier for the product") - @TigrisDBCollectionPrimaryKey(1) - private final int id; + @TigrisField(description = "A unique identifier for the product") + @TigrisPrimaryKey(1) + private int id; - @TigrisDBCollectionField(description = "Name of the product") - private final String name; + @TigrisField(description = "Name of the product") + private String name; - @TigrisDBCollectionField(description = "Number of products available in the store") - private final int quantity; + @TigrisField(description = "Number of products available in the store") + private int quantity; - @TigrisDBCollectionField(description = "Price of the product") - private final double price; + @TigrisField(description = "Price of the product") + private double price; + + public Product() {} public Product(int id, String name, int quantity, double price) { this.id = id; @@ -57,28 +61,35 @@ public double getPrice() { return price; } + public void setId(int id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setQuantity(int quantity) { + this.quantity = quantity; + } + + public void setPrice(double price) { + this.price = price; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - Product product = (Product) o; - - if (id != product.id) return false; - if (quantity != product.quantity) return false; - if (Double.compare(product.price, price) != 0) return false; - return Objects.equals(name, product.name); + return id == product.id + && quantity == product.quantity + && Double.compare(product.price, price) == 0 + && Objects.equals(name, product.name); } @Override public int hashCode() { - int result; - long temp; - result = id; - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + quantity; - temp = Double.doubleToLongBits(price); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; + return Objects.hash(id, name, quantity, price); } } diff --git a/src/main/java/com/tigrisdata/starter/collections/User.java b/src/main/java/com/tigrisdata/starter/collections/User.java index 87e85e0..c869826 100644 --- a/src/main/java/com/tigrisdata/starter/collections/User.java +++ b/src/main/java/com/tigrisdata/starter/collections/User.java @@ -13,27 +13,24 @@ */ package com.tigrisdata.starter.collections; -import com.tigrisdata.db.annotation.TigrisDBCollectionField; -import com.tigrisdata.db.annotation.TigrisDBCollectionPrimaryKey; +import com.tigrisdata.db.annotation.TigrisField; +import com.tigrisdata.db.annotation.TigrisPrimaryKey; import com.tigrisdata.db.type.TigrisCollectionType; import java.util.Objects; public class User implements TigrisCollectionType { - @TigrisDBCollectionField(description = "A unique identifier for the user") - @TigrisDBCollectionPrimaryKey(1) - private final int id; + @TigrisField(description = "A unique identifier for the user") + @TigrisPrimaryKey(1) + private int id; - @TigrisDBCollectionField(description = "Name of the user") - private final String name; + @TigrisField(description = "Name of the user") + private String name; - @TigrisDBCollectionField(description = "User account balance") - private final double balance; + @TigrisField(description = "User account balance") + private double balance; - public User(int id, String name, double balance) { - this.id = id; - this.name = name; - this.balance = balance; + public User() { } public int getId() { @@ -48,26 +45,30 @@ public double getBalance() { return balance; } + public void setId(int id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setBalance(double balance) { + this.balance = balance; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - User user = (User) o; - - if (id != user.id) return false; - if (Double.compare(user.balance, balance) != 0) return false; - return Objects.equals(name, user.name); + return id == user.id + && Double.compare(user.balance, balance) == 0 + && Objects.equals(name, user.name); } @Override public int hashCode() { - int result; - long temp; - result = id; - result = 31 * result + (name != null ? name.hashCode() : 0); - temp = Double.doubleToLongBits(balance); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; + return Objects.hash(id, name, balance); } } diff --git a/src/main/java/com/tigrisdata/starter/controller/OrderController.java b/src/main/java/com/tigrisdata/starter/controller/OrderController.java index 8b93c9b..d5f005f 100644 --- a/src/main/java/com/tigrisdata/starter/controller/OrderController.java +++ b/src/main/java/com/tigrisdata/starter/controller/OrderController.java @@ -15,7 +15,7 @@ import com.tigrisdata.db.client.Filters; import com.tigrisdata.db.client.TigrisDatabase; -import com.tigrisdata.db.client.error.TigrisDBException; +import com.tigrisdata.db.client.error.TigrisException; import com.tigrisdata.starter.collections.Order; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -36,7 +36,7 @@ public OrderController(TigrisDatabase tigrisStarterDatabase) { } @GetMapping("/{id}") - public Order read(@PathVariable("id") int id) throws TigrisDBException { + public Order read(@PathVariable("id") int id) throws TigrisException { return tigrisStarterDatabase.getCollection(Order.class).readOne(Filters.eq("id", id)).get(); } } diff --git a/src/main/java/com/tigrisdata/starter/controller/ProductController.java b/src/main/java/com/tigrisdata/starter/controller/ProductController.java index 78d3f1c..da245ae 100644 --- a/src/main/java/com/tigrisdata/starter/controller/ProductController.java +++ b/src/main/java/com/tigrisdata/starter/controller/ProductController.java @@ -16,7 +16,7 @@ import com.tigrisdata.db.client.Filters; import com.tigrisdata.db.client.TigrisCollection; import com.tigrisdata.db.client.TigrisDatabase; -import com.tigrisdata.db.client.error.TigrisDBException; +import com.tigrisdata.db.client.error.TigrisException; import com.tigrisdata.starter.collections.Product; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -39,18 +39,18 @@ public ProductController(TigrisDatabase tigrisDatabase) { } @PostMapping("/create") - public ResponseEntity create(@RequestBody Product product) throws TigrisDBException { + public ResponseEntity create(@RequestBody Product product) throws TigrisException { productTigrisCollection.insert(product); return ResponseEntity.status(HttpStatus.CREATED).body("product created"); } @GetMapping("/{id}") - public Product read(@PathVariable("id") int id) throws TigrisDBException { + public Product read(@PathVariable("id") int id) throws TigrisException { return productTigrisCollection.readOne(Filters.eq("id", id)).get(); } @DeleteMapping("/{id}") - public ResponseEntity delete(@PathVariable("id") int id) throws TigrisDBException { + public ResponseEntity delete(@PathVariable("id") int id) throws TigrisException { productTigrisCollection.delete(Filters.eq("id", id)); return ResponseEntity.status(HttpStatus.OK).body("product deleted"); } diff --git a/src/main/java/com/tigrisdata/starter/controller/TigrisDBExceptionAdvice.java b/src/main/java/com/tigrisdata/starter/controller/TigrisDBExceptionAdvice.java index 1d8ab36..9496cbe 100644 --- a/src/main/java/com/tigrisdata/starter/controller/TigrisDBExceptionAdvice.java +++ b/src/main/java/com/tigrisdata/starter/controller/TigrisDBExceptionAdvice.java @@ -13,7 +13,7 @@ */ package com.tigrisdata.starter.controller; -import com.tigrisdata.db.client.error.TigrisDBException; +import com.tigrisdata.db.client.error.TigrisException; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; @@ -24,9 +24,9 @@ public class TigrisDBExceptionAdvice { @ResponseBody - @ExceptionHandler(TigrisDBException.class) + @ExceptionHandler(TigrisException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) - String exceptionHandler(TigrisDBException ex) { + String exceptionHandler(TigrisException ex) { String errorMessage = ex.getMessage(); if (ex.getCause() != null && ex.getCause().getMessage() != null) { errorMessage += ", " + ex.getCause().getMessage(); diff --git a/src/main/java/com/tigrisdata/starter/controller/UserController.java b/src/main/java/com/tigrisdata/starter/controller/UserController.java index 056007c..1b50d13 100644 --- a/src/main/java/com/tigrisdata/starter/controller/UserController.java +++ b/src/main/java/com/tigrisdata/starter/controller/UserController.java @@ -16,7 +16,7 @@ import com.tigrisdata.db.client.Filters; import com.tigrisdata.db.client.TigrisCollection; import com.tigrisdata.db.client.TigrisDatabase; -import com.tigrisdata.db.client.error.TigrisDBException; +import com.tigrisdata.db.client.error.TigrisException; import com.tigrisdata.starter.collections.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -39,18 +39,18 @@ public UserController(TigrisDatabase tigrisDatabase) { } @PostMapping("/create") - public ResponseEntity create(@RequestBody User user) throws TigrisDBException { + public ResponseEntity create(@RequestBody User user) throws TigrisException { userTigrisCollection.insert(user); return ResponseEntity.status(HttpStatus.CREATED).body("User created"); } @GetMapping("/{id}") - public User read(@PathVariable("id") int id) throws TigrisDBException { + public User read(@PathVariable("id") int id) throws TigrisException { return userTigrisCollection.readOne(Filters.eq("id", id)).get(); } @DeleteMapping("/{id}") - public ResponseEntity delete(@PathVariable("id") int id) throws TigrisDBException { + public ResponseEntity delete(@PathVariable("id") int id) throws TigrisException { userTigrisCollection.delete(Filters.eq("id", id)); return ResponseEntity.status(HttpStatus.OK).body("User deleted"); } diff --git a/src/main/java/com/tigrisdata/starter/spring/JacksonConfigurer.java b/src/main/java/com/tigrisdata/starter/spring/JacksonConfigurer.java deleted file mode 100644 index 9be17b4..0000000 --- a/src/main/java/com/tigrisdata/starter/spring/JacksonConfigurer.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.tigrisdata.starter.spring; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; -import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; - -/** This is to customize default ObjectMapper used by spring-mvc. */ -@Configuration -public class JacksonConfigurer implements Jackson2ObjectMapperBuilderCustomizer { - /** - * Customization here enables jackson to work with immutable objects - * - * @param builder ongoing builder - */ - @Override - public void customize(Jackson2ObjectMapperBuilder builder) { - builder.modules(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES)); - } -} diff --git a/src/main/java/com/tigrisdata/starter/spring/TigrisDBInitializer.java b/src/main/java/com/tigrisdata/starter/spring/TigrisDBInitializer.java index 776db7a..07ffa26 100644 --- a/src/main/java/com/tigrisdata/starter/spring/TigrisDBInitializer.java +++ b/src/main/java/com/tigrisdata/starter/spring/TigrisDBInitializer.java @@ -13,7 +13,8 @@ */ package com.tigrisdata.starter.spring; -import com.tigrisdata.db.client.TigrisDBClient; +import com.tigrisdata.db.client.TigrisClient; +import com.tigrisdata.db.client.TigrisDatabase; import com.tigrisdata.starter.collections.Order; import com.tigrisdata.starter.collections.Product; import com.tigrisdata.starter.collections.User; @@ -23,12 +24,12 @@ public class TigrisDBInitializer implements CommandLineRunner { - private final TigrisDBClient tigrisDBClient; + private final TigrisClient tigrisDBClient; private final String dbName; private static final Logger log = LoggerFactory.getLogger(TigrisDBInitializer.class); - public TigrisDBInitializer(TigrisDBClient tigrisDBClient, String dbName) { + public TigrisDBInitializer(TigrisClient tigrisDBClient, String dbName) { this.tigrisDBClient = tigrisDBClient; this.dbName = dbName; } @@ -36,11 +37,9 @@ public TigrisDBInitializer(TigrisDBClient tigrisDBClient, String dbName) { @Override public void run(String... args) throws Exception { log.info("createDbIfNotExists db: {}", dbName); - tigrisDBClient.createDatabaseIfNotExists(dbName); + TigrisDatabase tigrisDatabase = tigrisDBClient.createDatabaseIfNotExists(dbName); log.info("creating collections on db {}", dbName); - tigrisDBClient - .getDatabase(dbName) - .createOrUpdateCollections(User.class, Product.class, Order.class); + tigrisDatabase.createOrUpdateCollections(User.class, Product.class, Order.class); log.info("Finished initializing TigrisDB"); } } diff --git a/src/main/java/com/tigrisdata/starter/spring/TigrisDBSpringConfiguration.java b/src/main/java/com/tigrisdata/starter/spring/TigrisDBSpringConfiguration.java index bc2db4e..135dd7e 100644 --- a/src/main/java/com/tigrisdata/starter/spring/TigrisDBSpringConfiguration.java +++ b/src/main/java/com/tigrisdata/starter/spring/TigrisDBSpringConfiguration.java @@ -13,11 +13,10 @@ */ package com.tigrisdata.starter.spring; -import com.tigrisdata.db.client.StandardTigrisDBClient; -import com.tigrisdata.db.client.TigrisDBClient; +import com.tigrisdata.db.client.StandardTigrisClient; +import com.tigrisdata.db.client.TigrisClient; import com.tigrisdata.db.client.TigrisDatabase; -import com.tigrisdata.db.client.auth.TigrisAuthorizationToken; -import com.tigrisdata.db.client.config.TigrisDBConfiguration; +import com.tigrisdata.db.client.config.TigrisConfiguration; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -26,35 +25,29 @@ public class TigrisDBSpringConfiguration { @Bean public TigrisDatabase tigrisDatabase( - @Value("${tigrisdb.db.name}") String dbName, TigrisDBClient client) { + @Value("${tigrisdb.db.name}") String dbName, TigrisClient client) { return client.getDatabase(dbName); } @Bean - public TigrisDBConfiguration tigrisDBConfiguration( - @Value("${tigrisdb.server.url}") String baseUrl, + public TigrisClient tigrisDBClient( + @Value("${tigrisdb.server.url}") String serverURL, @Value("${tigrisdb.network.usePlainText:false}") boolean usePlainText) { - TigrisDBConfiguration.NetworkConfig.NetworkConfigBuilder networkConfigBuilder = - TigrisDBConfiguration.NetworkConfig.newBuilder(); + TigrisConfiguration.NetworkConfig.Builder networkConfigBuilder = + TigrisConfiguration.NetworkConfig.newBuilder(); if (usePlainText) { networkConfigBuilder.usePlainText(); } - return TigrisDBConfiguration.newBuilder(baseUrl) - .withNetwork(networkConfigBuilder.build()) - .build(); - } - - @Bean - public TigrisDBClient tigrisDBClient( - @Value("${tigrisdb.authorization.token}") String token, - TigrisDBConfiguration tigrisDBConfiguration) { - return StandardTigrisDBClient.getInstance( - new TigrisAuthorizationToken(token), tigrisDBConfiguration); + TigrisConfiguration configuration = + TigrisConfiguration.newBuilder(serverURL) + .withNetwork(networkConfigBuilder.build()) + .build(); + return StandardTigrisClient.getInstance(configuration); } @Bean public TigrisDBInitializer tigrisDBInitializr( - TigrisDBClient tigrisDBClient, @Value("${tigrisdb.db.name}") String dbName) { + TigrisClient tigrisDBClient, @Value("${tigrisdb.db.name}") String dbName) { return new TigrisDBInitializer(tigrisDBClient, dbName); } }