Skip to content

Instantly share code, notes, and snippets.

@priyaaank
priyaaank / ProductMapCreator.java
Created December 29, 2017 02:59
Parsing JSON string to map object using ObjectMapper
//Sample productDetailsJson = "{'productId' : '1', 'name': 'Xbox360', 'price': '18000', 'currency': 'INR'}";
public Map<String, Object> buildProductMap(String productDetailsJson) throws IOException {
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> productMap = mapper.readValue(productDetailsJson, new TypeReference<Map<String, String>>(){});
return productMap;
}
@priyaaank
priyaaank / ConcreteProductCreator.java
Last active December 29, 2017 02:58
Parsing JSON string to concrete object using ObjectMapper
//Sample productDetailsJson = "{'productId' : '1', 'name': 'Xbox360', 'price': '18000', 'currency': 'INR'}";
public Product buildConcreteProduct(String productDetailsJson) {
ObjectMapper mapper = new ObjectMapper();
Product product = mapper.readValue(productDetailsJson, Product.class);
return product;
}
@priyaaank
priyaaank / OrderDetailsWithFutures.java
Created December 29, 2017 02:48
Asynchronously building order details using Java Futures
public Future<String> buildOrderDetail(String orderId) {
CompletableFuture<String> products = supplyAsync(() -> getProductList(orderId));
CompletableFuture<String> addressDetails = supplyAsync(() -> getAddress(orderId));
CompletableFuture<Void> combinedFuture = CompletableFuture.allOf(products, addressDetails);
return combinedFuture.get();
}
@priyaaank
priyaaank / OrdersController.java
Created December 29, 2017 02:45
Sync wrapper over async api using a DeferredResult in SpringBoot
package com.microservices.example;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.async.DeferredResult;
import java.util.concurrent.TimeUnit;
@priyaaank
priyaaank / AsyncTask.java
Last active June 25, 2017 10:08
Workshop
public static final String URL = "http://bookmarkservice.herokuapp.com/bookmarks";
try {
String recordListAsString = ClientBuilder.newClient().target(URL).request().accept(MediaType.APPLICATION_JSON).get(String.class);
Gson gson = new Gson();
Type type = new TypeToken<List<Bookmark>>() { }.getType();
List<Bookmark> list = gson.fromJson(recordListAsString, type);
return list;
} catch (Exception ce) {
return null;
@priyaaank
priyaaank / IAnalyzer.java
Last active August 29, 2015 14:06
Interface segregation
public interface IAnalyzer {
public void collectSample();
public String analyzeSample();
}
@priyaaank
priyaaank / IRover.java
Last active August 29, 2015 14:06
Interface segregation principle
public interface IRover {
public void run();
public String currentLocation();
public void turnRight();
public void turnLeft();
@priyaaank
priyaaank / MarsRoverTest.java
Last active August 29, 2015 14:04
TDDing Rover class
public class MarsRoverTest {
@Test
public void canProvideCurrentLocationAsString() {
//Given
// a set of coordinates and plateau
//When
// we initialize the
// rover with coordinates and plateau
@priyaaank
priyaaank / BeverageMaker.java
Last active August 29, 2015 14:04
Beverage Maker using strategy pattern
public class BeverageMaker {
public Beverage prepareBeverage(IBeverageStrategy beverageStrategy) {
//Delegates to strategy
return beverageStrategy.prepare();
}
}
@priyaaank
priyaaank / BeverageMaker.java
Last active August 29, 2015 14:04
BeverageMaker with if else conditional
public class BeverageMaker {
public Beverage prepareBeverage(String beverageName) {
Beverage preparedBeverage = null;
if("Coffee".equals(beverageName)) {
//Uses builder pattern
preparedBeverage = new Beverage("Coffee").addCoffeePowderTbsp(2).addMilkCups(2).addSugarTbsp(1).prepare();
} else if ("Tea".equals(beverageName)) {
preparedBeverage = new Beverage("Tea").addTeaPowderTbsp(2).addMilkCups(2).addSugarTbsp(1).prepare();
} else if ("Black Tea".equals(beverageName)) {