Resolves checkstyle issues for semaphore servant serverless service-layer service-locator (#1079)
* Reduces checkstyle errors in semaphore * Reduces checkstyle errors in servant * Reduces checkstyle errors in serverless * Reduces checkstyle errors in service-layer * Reduces checkstyle errors in service-locator
This commit is contained in:
parent
37599eb48f
commit
390795154f
@ -25,18 +25,17 @@ package com.iluwatar.semaphore;
|
||||
|
||||
/**
|
||||
* A Semaphore mediates access by a group of threads to a pool of resources.
|
||||
* <p>
|
||||
* In this example a group of customers are taking fruit from a fruit shop.
|
||||
* There is a bowl each of apples, oranges and lemons. Only one customer can
|
||||
* access a bowl simultaneously. A Semaphore is used to indicate how many
|
||||
* resources are currently available and must be acquired in order for a bowl
|
||||
* to be given to a customer. Customers continually try to take fruit until
|
||||
* there is no fruit left in the shop.
|
||||
*
|
||||
* <p>In this example a group of customers are taking fruit from a fruit shop. There is a bowl each
|
||||
* of apples, oranges and lemons. Only one customer can access a bowl simultaneously. A Semaphore is
|
||||
* used to indicate how many resources are currently available and must be acquired in order for a
|
||||
* bowl to be given to a customer. Customers continually try to take fruit until there is no fruit
|
||||
* left in the shop.
|
||||
*/
|
||||
public class App {
|
||||
|
||||
/**
|
||||
* main method
|
||||
* main method.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
FruitShop shop = new FruitShop();
|
||||
|
@ -27,8 +27,8 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* A Customer attempts to repeatedly take Fruit from the FruitShop by
|
||||
* taking Fruit from FruitBowl instances.
|
||||
* A Customer attempts to repeatedly take Fruit from the FruitShop by taking Fruit from FruitBowl
|
||||
* instances.
|
||||
*/
|
||||
public class Customer extends Thread {
|
||||
|
||||
@ -50,7 +50,7 @@ public class Customer extends Thread {
|
||||
private final FruitBowl fruitBowl;
|
||||
|
||||
/**
|
||||
* Customer constructor
|
||||
* Customer constructor.
|
||||
*/
|
||||
public Customer(String name, FruitShop fruitShop) {
|
||||
this.name = name;
|
||||
@ -59,8 +59,7 @@ public class Customer extends Thread {
|
||||
}
|
||||
|
||||
/**
|
||||
* The Customer repeatedly takes Fruit from the FruitShop until no Fruit
|
||||
* remains.
|
||||
* The Customer repeatedly takes Fruit from the FruitShop until no Fruit remains.
|
||||
*/
|
||||
public void run() {
|
||||
|
||||
|
@ -29,7 +29,7 @@ package com.iluwatar.semaphore;
|
||||
public class Fruit {
|
||||
|
||||
/**
|
||||
* Enumeration of Fruit Types
|
||||
* Enumeration of Fruit Types.
|
||||
*/
|
||||
public enum FruitType {
|
||||
ORANGE, APPLE, LEMON
|
||||
@ -46,7 +46,7 @@ public class Fruit {
|
||||
}
|
||||
|
||||
/**
|
||||
* toString method
|
||||
* toString method.
|
||||
*/
|
||||
public String toString() {
|
||||
switch (type) {
|
||||
|
@ -23,8 +23,8 @@
|
||||
|
||||
package com.iluwatar.semaphore;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A FruitBowl contains Fruit.
|
||||
@ -34,6 +34,7 @@ public class FruitBowl {
|
||||
private List<Fruit> fruit = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Returns the amount of fruits left in bowl.
|
||||
*
|
||||
* @return The amount of Fruit left in the bowl.
|
||||
*/
|
||||
@ -52,6 +53,7 @@ public class FruitBowl {
|
||||
|
||||
/**
|
||||
* Take an item of Fruit out of the bowl.
|
||||
*
|
||||
* @return The Fruit taken out of the bowl, or null if empty.
|
||||
*/
|
||||
public Fruit take() {
|
||||
@ -63,7 +65,7 @@ public class FruitBowl {
|
||||
}
|
||||
|
||||
/**
|
||||
* toString method
|
||||
* toString method.
|
||||
*/
|
||||
public String toString() {
|
||||
int apples = 0;
|
||||
|
@ -52,7 +52,7 @@ public class FruitShop {
|
||||
private Semaphore semaphore;
|
||||
|
||||
/**
|
||||
* FruitShop constructor
|
||||
* FruitShop constructor.
|
||||
*/
|
||||
public FruitShop() {
|
||||
for (int i = 0; i < 100; i++) {
|
||||
@ -65,6 +65,7 @@ public class FruitShop {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the amount of fruits left in shop.
|
||||
*
|
||||
* @return The amount of Fruit left in the shop.
|
||||
*/
|
||||
@ -73,9 +74,8 @@ public class FruitShop {
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called by Customer to get a FruitBowl from the shop. This method
|
||||
* will try to acquire the Semaphore before returning the first available
|
||||
* FruitBowl.
|
||||
* Method called by Customer to get a FruitBowl from the shop. This method will try to acquire the
|
||||
* Semaphore before returning the first available FruitBowl.
|
||||
*/
|
||||
public synchronized FruitBowl takeBowl() {
|
||||
|
||||
@ -104,9 +104,8 @@ public class FruitShop {
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called by a Customer instance to return a FruitBowl to the shop.
|
||||
* This method releases the Semaphore, making the FruitBowl available to
|
||||
* another Customer.
|
||||
* Method called by a Customer instance to return a FruitBowl to the shop. This method releases
|
||||
* the Semaphore, making the FruitBowl available to another Customer.
|
||||
*/
|
||||
public synchronized void returnBowl(FruitBowl bowl) {
|
||||
if (bowl == bowls[0]) {
|
||||
@ -114,7 +113,7 @@ public class FruitShop {
|
||||
} else if (bowl == bowls[1]) {
|
||||
available[1] = true;
|
||||
} else if (bowl == bowls[2]) {
|
||||
available [2] = true;
|
||||
available[2] = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,23 +40,22 @@ public class Semaphore implements Lock {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of licenses managed by the Semaphore
|
||||
* Returns the number of licenses managed by the Semaphore.
|
||||
*/
|
||||
public int getNumLicenses() {
|
||||
return licenses;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of available licenses
|
||||
* Returns the number of available licenses.
|
||||
*/
|
||||
public int getAvailableLicenses() {
|
||||
return counter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called by a thread to acquire the lock. If there are no resources
|
||||
* available this will wait until the lock has been released to re-attempt
|
||||
* the acquire.
|
||||
* Method called by a thread to acquire the lock. If there are no resources available this will
|
||||
* wait until the lock has been released to re-attempt the acquire.
|
||||
*/
|
||||
public synchronized void acquire() throws InterruptedException {
|
||||
while (counter == 0) {
|
||||
|
@ -23,29 +23,27 @@
|
||||
|
||||
package com.iluwatar.servant;
|
||||
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* Servant offers some functionality to a group of classes without defining that functionality in
|
||||
* each of them. A Servant is a class whose instance provides methods that take care of a desired
|
||||
* service, while objects for which the servant does something, are taken as parameters.
|
||||
* <p>
|
||||
* In this example {@link Servant} is serving {@link King} and {@link Queen}.
|
||||
*
|
||||
* <p>In this example {@link Servant} is serving {@link King} and {@link Queen}.
|
||||
*/
|
||||
public class App {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
|
||||
|
||||
static Servant jenkins = new Servant("Jenkins");
|
||||
static Servant travis = new Servant("Travis");
|
||||
private static Servant jenkins = new Servant("Jenkins");
|
||||
private static Servant travis = new Servant("Travis");
|
||||
|
||||
/**
|
||||
* Program entry point
|
||||
* Program entry point.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
scenario(jenkins, 1);
|
||||
@ -53,7 +51,7 @@ public class App {
|
||||
}
|
||||
|
||||
/**
|
||||
* Can add a List with enum Actions for variable scenarios
|
||||
* Can add a List with enum Actions for variable scenarios.
|
||||
*/
|
||||
public static void scenario(Servant servant, int compliment) {
|
||||
King k = new King();
|
||||
|
@ -24,9 +24,7 @@
|
||||
package com.iluwatar.servant;
|
||||
|
||||
/**
|
||||
*
|
||||
* King
|
||||
*
|
||||
* King.
|
||||
*/
|
||||
public class King implements Royalty {
|
||||
|
||||
|
@ -24,9 +24,7 @@
|
||||
package com.iluwatar.servant;
|
||||
|
||||
/**
|
||||
*
|
||||
* Queen
|
||||
*
|
||||
* Queen.
|
||||
*/
|
||||
public class Queen implements Royalty {
|
||||
|
||||
|
@ -24,9 +24,7 @@
|
||||
package com.iluwatar.servant;
|
||||
|
||||
/**
|
||||
*
|
||||
* Royalty
|
||||
*
|
||||
* Royalty.
|
||||
*/
|
||||
interface Royalty {
|
||||
|
||||
|
@ -26,16 +26,14 @@ package com.iluwatar.servant;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* Servant
|
||||
*
|
||||
* Servant.
|
||||
*/
|
||||
public class Servant {
|
||||
|
||||
public String name;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* Constructor.
|
||||
*/
|
||||
public Servant(String name) {
|
||||
this.name = name;
|
||||
@ -54,7 +52,7 @@ public class Servant {
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if we will be hanged
|
||||
* Check if we will be hanged.
|
||||
*/
|
||||
public boolean checkIfYouWillBeHanged(List<Royalty> tableGuests) {
|
||||
boolean anotherDay = true;
|
||||
|
@ -30,13 +30,13 @@ import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
|
||||
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* abstract dynamodb handler
|
||||
* abstract dynamodb handler.
|
||||
*
|
||||
* @param <T> - serializable collection
|
||||
*/
|
||||
public abstract class AbstractDynamoDbHandler<T extends Serializable> {
|
||||
@ -78,7 +78,7 @@ public abstract class AbstractDynamoDbHandler<T extends Serializable> {
|
||||
}
|
||||
|
||||
/**
|
||||
* API Gateway response
|
||||
* API Gateway response.
|
||||
*
|
||||
* @param statusCode - status code
|
||||
* @param body - Object body
|
||||
|
@ -28,14 +28,12 @@ import com.amazonaws.services.lambda.runtime.RequestHandler;
|
||||
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
|
||||
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
|
||||
import com.iluwatar.serverless.baas.model.Person;
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* find person from persons collection
|
||||
* Created by dheeraj.mummar on 3/5/18.
|
||||
* find person from persons collection Created by dheeraj.mummar on 3/5/18.
|
||||
*/
|
||||
public class FindPersonApiHandler extends AbstractDynamoDbHandler<Person>
|
||||
implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
|
||||
@ -44,10 +42,11 @@ public class FindPersonApiHandler extends AbstractDynamoDbHandler<Person>
|
||||
private static final Integer SUCCESS_STATUS_CODE = 200;
|
||||
|
||||
@Override
|
||||
public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent,
|
||||
Context context) {
|
||||
public APIGatewayProxyResponseEvent handleRequest(
|
||||
APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent, Context context) {
|
||||
Map<String, String> pathParameters = apiGatewayProxyRequestEvent.getPathParameters();
|
||||
pathParameters.keySet().stream().map(key -> key + "=" + pathParameters.get(key)).forEach(LOG::info);
|
||||
pathParameters.keySet().stream().map(key -> key + "=" + pathParameters.get(key))
|
||||
.forEach(LOG::info);
|
||||
|
||||
Person person = this.getDynamoDbMapper().load(Person.class, apiGatewayProxyRequestEvent
|
||||
.getPathParameters().get("id"));
|
||||
|
@ -28,14 +28,12 @@ import com.amazonaws.services.lambda.runtime.RequestHandler;
|
||||
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
|
||||
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
|
||||
import com.iluwatar.serverless.baas.model.Person;
|
||||
import java.io.IOException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* save person into persons collection
|
||||
* Created by dheeraj.mummar on 3/4/18.
|
||||
* save person into persons collection Created by dheeraj.mummar on 3/4/18.
|
||||
*/
|
||||
public class SavePersonApiHandler extends AbstractDynamoDbHandler<Person>
|
||||
implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
|
||||
@ -45,8 +43,8 @@ public class SavePersonApiHandler extends AbstractDynamoDbHandler<Person>
|
||||
private static final Integer BAD_REQUEST_STATUS_CODE = 400;
|
||||
|
||||
@Override
|
||||
public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent
|
||||
apiGatewayProxyRequestEvent, Context context) {
|
||||
public APIGatewayProxyResponseEvent handleRequest(
|
||||
APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent, Context context) {
|
||||
APIGatewayProxyResponseEvent apiGatewayProxyResponseEvent;
|
||||
Person person;
|
||||
try {
|
||||
|
@ -25,12 +25,10 @@ package com.iluwatar.serverless.baas.model;
|
||||
|
||||
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
|
||||
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBDocument;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Address class
|
||||
* Created by dheeraj.mummarareddy on 3/4/18.
|
||||
* Address class Created by dheeraj.mummarareddy on 3/4/18.
|
||||
*/
|
||||
@DynamoDBDocument
|
||||
public class Address implements Serializable {
|
||||
|
@ -28,12 +28,10 @@ import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratedKey;
|
||||
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
|
||||
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Person class
|
||||
* Created by dheeraj.mummarareddy on 3/4/18.
|
||||
* Person class Created by dheeraj.mummarareddy on 3/4/18.
|
||||
*/
|
||||
@DynamoDBTable(tableName = "persons")
|
||||
public class Person implements Serializable {
|
||||
|
@ -25,12 +25,11 @@ package com.iluwatar.serverless.faas;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Api gateway response
|
||||
* Api gateway response.
|
||||
*
|
||||
* @param <T> serializable object
|
||||
*/
|
||||
@ -44,7 +43,7 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
private final Boolean isBase64Encoded;
|
||||
|
||||
/**
|
||||
* api gateway response
|
||||
* api gateway response.
|
||||
*
|
||||
* @param statusCode - http status code
|
||||
* @param body - response body
|
||||
@ -60,7 +59,7 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* http status code
|
||||
* http status code.
|
||||
*
|
||||
* @return statusCode - http status code
|
||||
*/
|
||||
@ -69,7 +68,7 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* response body
|
||||
* response body.
|
||||
*
|
||||
* @return string body
|
||||
*/
|
||||
@ -78,7 +77,7 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* response headers
|
||||
* response headers.
|
||||
*
|
||||
* @return response headers
|
||||
*/
|
||||
@ -87,7 +86,7 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* base64Encoded flag, API Gateway expects the property to be called "isBase64Encoded"
|
||||
* base64Encoded flag, API Gateway expects the property to be called "isBase64Encoded".
|
||||
*
|
||||
* @return base64Encoded flag
|
||||
*/
|
||||
@ -96,7 +95,8 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* ApiGatewayResponse Builder class
|
||||
* ApiGatewayResponse Builder class.
|
||||
*
|
||||
* @param <T> Serializable object
|
||||
*/
|
||||
public static class ApiGatewayResponseBuilder<T extends Serializable> {
|
||||
@ -107,7 +107,8 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
private Boolean isBase64Encoded;
|
||||
|
||||
/**
|
||||
* http status code
|
||||
* http status code.
|
||||
*
|
||||
* @param statusCode - http status code
|
||||
* @return ApiGatewayResponseBuilder
|
||||
*/
|
||||
@ -117,7 +118,8 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* Serializable body
|
||||
* Serializable body.
|
||||
*
|
||||
* @param body - Serializable object
|
||||
* @return ApiGatewayResponseBuilder
|
||||
*/
|
||||
@ -127,7 +129,8 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* response headers
|
||||
* response headers.
|
||||
*
|
||||
* @param headers - response headers
|
||||
* @return ApiGatewayResponseBuilder
|
||||
*/
|
||||
@ -137,7 +140,8 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* base64Encoded glag
|
||||
* base64Encoded flag.
|
||||
*
|
||||
* @param isBase64Encoded - base64Encoded flag
|
||||
* @return ApiGatewayResponseBuilder
|
||||
*/
|
||||
@ -147,7 +151,7 @@ public class ApiGatewayResponse<T extends Serializable> implements Serializable
|
||||
}
|
||||
|
||||
/**
|
||||
* build ApiGatewayResponse
|
||||
* build ApiGatewayResponse.
|
||||
*
|
||||
* @return ApiGatewayResponse
|
||||
*/
|
||||
|
@ -26,7 +26,7 @@ package com.iluwatar.serverless.faas;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Lambda context information
|
||||
* Lambda context information.
|
||||
*/
|
||||
public class LambdaInfo implements Serializable {
|
||||
|
||||
@ -110,22 +110,28 @@ public class LambdaInfo implements Serializable {
|
||||
|
||||
LambdaInfo that = (LambdaInfo) o;
|
||||
|
||||
if (awsRequestId != null ? !awsRequestId.equals(that.awsRequestId) : that.awsRequestId != null) {
|
||||
if (awsRequestId != null ? !awsRequestId
|
||||
.equals(that.awsRequestId) : that.awsRequestId != null) {
|
||||
return false;
|
||||
}
|
||||
if (logGroupName != null ? !logGroupName.equals(that.logGroupName) : that.logGroupName != null) {
|
||||
if (logGroupName != null ? !logGroupName
|
||||
.equals(that.logGroupName) : that.logGroupName != null) {
|
||||
return false;
|
||||
}
|
||||
if (logStreamName != null ? !logStreamName.equals(that.logStreamName) : that.logStreamName != null) {
|
||||
if (logStreamName != null ? !logStreamName
|
||||
.equals(that.logStreamName) : that.logStreamName != null) {
|
||||
return false;
|
||||
}
|
||||
if (functionName != null ? !functionName.equals(that.functionName) : that.functionName != null) {
|
||||
if (functionName != null ? !functionName
|
||||
.equals(that.functionName) : that.functionName != null) {
|
||||
return false;
|
||||
}
|
||||
if (functionVersion != null ? !functionVersion.equals(that.functionVersion) : that.functionVersion != null) {
|
||||
if (functionVersion != null ? !functionVersion
|
||||
.equals(that.functionVersion) : that.functionVersion != null) {
|
||||
return false;
|
||||
}
|
||||
return memoryLimitInMb != null ? memoryLimitInMb.equals(that.memoryLimitInMb) : that.memoryLimitInMb == null;
|
||||
return memoryLimitInMb != null ? memoryLimitInMb
|
||||
.equals(that.memoryLimitInMb) : that.memoryLimitInMb == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -23,22 +23,20 @@
|
||||
|
||||
package com.iluwatar.serverless.faas.api;
|
||||
|
||||
import com.iluwatar.serverless.faas.ApiGatewayResponse;
|
||||
|
||||
import com.amazonaws.services.lambda.runtime.Context;
|
||||
import com.amazonaws.services.lambda.runtime.RequestHandler;
|
||||
import com.iluwatar.serverless.faas.ApiGatewayResponse;
|
||||
import com.iluwatar.serverless.faas.LambdaInfo;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* LambdaInfoApiHandler - simple api to get lambda context
|
||||
* Created by dheeraj.mummar on 2/5/18.
|
||||
* LambdaInfoApiHandler - simple api to get lambda context Created by dheeraj.mummar on 2/5/18.
|
||||
*/
|
||||
public class LambdaInfoApiHandler implements RequestHandler<Map<String, Object>, ApiGatewayResponse> {
|
||||
public class LambdaInfoApiHandler
|
||||
implements RequestHandler<Map<String, Object>, ApiGatewayResponse> {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(LambdaInfoApiHandler.class);
|
||||
private static final Integer SUCCESS_STATUS_CODE = 200;
|
||||
@ -58,7 +56,8 @@ public class LambdaInfoApiHandler implements RequestHandler<Map<String, Object>,
|
||||
}
|
||||
|
||||
/**
|
||||
* lambdaInfo
|
||||
* lambdaInfo.
|
||||
*
|
||||
* @param context - Lambda context
|
||||
* @return LambdaInfo
|
||||
*/
|
||||
|
@ -23,19 +23,15 @@
|
||||
|
||||
package com.iluwatar.servicelayer.app;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.iluwatar.servicelayer.magic.MagicService;
|
||||
import com.iluwatar.servicelayer.magic.MagicServiceImpl;
|
||||
import com.iluwatar.servicelayer.spell.Spell;
|
||||
import com.iluwatar.servicelayer.spell.SpellDao;
|
||||
import com.iluwatar.servicelayer.spell.SpellDaoImpl;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
import com.iluwatar.servicelayer.spellbook.SpellbookDao;
|
||||
import com.iluwatar.servicelayer.spellbook.SpellbookDaoImpl;
|
||||
import com.iluwatar.servicelayer.wizard.Wizard;
|
||||
import com.iluwatar.servicelayer.wizard.WizardDao;
|
||||
import com.iluwatar.servicelayer.wizard.WizardDaoImpl;
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -43,27 +39,26 @@ import org.slf4j.LoggerFactory;
|
||||
/**
|
||||
* Service layer defines an application's boundary with a layer of services that establishes a set
|
||||
* of available operations and coordinates the application's response in each operation.
|
||||
* <p>
|
||||
* Enterprise applications typically require different kinds of interfaces to the data they store
|
||||
* and the logic they implement: data loaders, user interfaces, integration gateways, and others.
|
||||
* Despite their different purposes, these interfaces often need common interactions with the
|
||||
* application to access and manipulate its data and invoke its business logic. The interactions may
|
||||
* be complex, involving transactions across multiple resources and the coordination of several
|
||||
*
|
||||
* <p>Enterprise applications typically require different kinds of interfaces to the data they
|
||||
* store and the logic they implement: data loaders, user interfaces, integration gateways, and
|
||||
* others. Despite their different purposes, these interfaces often need common interactions with
|
||||
* the application to access and manipulate its data and invoke its business logic. The interactions
|
||||
* may be complex, involving transactions across multiple resources and the coordination of several
|
||||
* responses to an action. Encoding the logic of the interactions separately in each interface
|
||||
* causes a lot of duplication.
|
||||
* <p>
|
||||
* The example application demonstrates interactions between a client ({@link App}) and a service (
|
||||
* {@link MagicService}). The service is implemented with 3-layer architecture (entity, dao,
|
||||
* service). For persistence the example uses in-memory H2 database which is populated on each
|
||||
* application startup.
|
||||
*
|
||||
* <p>The example application demonstrates interactions between a client ({@link App}) and a
|
||||
* service ({@link MagicService}). The service is implemented with 3-layer architecture (entity,
|
||||
* dao, service). For persistence the example uses in-memory H2 database which is populated on each
|
||||
* application startup.
|
||||
*/
|
||||
public class App {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
|
||||
|
||||
/**
|
||||
* Program entry point
|
||||
* Program entry point.
|
||||
*
|
||||
* @param args command line args
|
||||
*/
|
||||
@ -75,7 +70,7 @@ public class App {
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize data
|
||||
* Initialize data.
|
||||
*/
|
||||
public static void initData() {
|
||||
// spells
|
||||
@ -180,7 +175,7 @@ public class App {
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the data
|
||||
* Query the data.
|
||||
*/
|
||||
public static void queryData() {
|
||||
var service =
|
||||
|
@ -28,37 +28,35 @@ import javax.persistence.InheritanceType;
|
||||
import javax.persistence.MappedSuperclass;
|
||||
|
||||
/**
|
||||
*
|
||||
* Base class for entities.
|
||||
*
|
||||
*/
|
||||
@MappedSuperclass
|
||||
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
|
||||
public abstract class BaseEntity {
|
||||
|
||||
/**
|
||||
* Indicates the unique id of this entity
|
||||
* Indicates the unique id of this entity.
|
||||
*
|
||||
* @return The id of the entity, or 'null' when not persisted
|
||||
*/
|
||||
public abstract Long getId();
|
||||
|
||||
/**
|
||||
* Set the id of this entity
|
||||
* Set the id of this entity.
|
||||
*
|
||||
* @param id The new id
|
||||
*/
|
||||
public abstract void setId(Long id);
|
||||
|
||||
/**
|
||||
* Get the name of this entity
|
||||
* Get the name of this entity.
|
||||
*
|
||||
* @return The name of the entity
|
||||
*/
|
||||
public abstract String getName();
|
||||
|
||||
/**
|
||||
* Set the name of this entity
|
||||
* Set the name of this entity.
|
||||
*
|
||||
* @param name The new name
|
||||
*/
|
||||
|
@ -26,11 +26,9 @@ package com.iluwatar.servicelayer.common;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* Dao interface.
|
||||
*
|
||||
* @param <E>
|
||||
*
|
||||
* @param <E> Type of Entity
|
||||
*/
|
||||
public interface Dao<E extends BaseEntity> {
|
||||
|
||||
|
@ -23,23 +23,18 @@
|
||||
|
||||
package com.iluwatar.servicelayer.common;
|
||||
|
||||
import com.iluwatar.servicelayer.hibernate.HibernateUtil;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
import com.iluwatar.servicelayer.hibernate.HibernateUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
* Base class for Dao implementations.
|
||||
*
|
||||
* @param <E>
|
||||
*
|
||||
* @param <E> Type of Entity
|
||||
*/
|
||||
public abstract class DaoBaseImpl<E extends BaseEntity> implements Dao<E> {
|
||||
|
||||
|
@ -26,7 +26,6 @@ package com.iluwatar.servicelayer.hibernate;
|
||||
import com.iluwatar.servicelayer.spell.Spell;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
import com.iluwatar.servicelayer.wizard.Wizard;
|
||||
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.cfg.Configuration;
|
||||
import org.slf4j.Logger;
|
||||
@ -40,7 +39,7 @@ public final class HibernateUtil {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class);
|
||||
|
||||
/**
|
||||
* The cached session factory
|
||||
* The cached session factory.
|
||||
*/
|
||||
private static volatile SessionFactory sessionFactory;
|
||||
|
||||
|
@ -23,17 +23,14 @@
|
||||
|
||||
package com.iluwatar.servicelayer.magic;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.iluwatar.servicelayer.spell.Spell;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
import com.iluwatar.servicelayer.wizard.Wizard;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Service interface.
|
||||
*
|
||||
*/
|
||||
public interface MagicService {
|
||||
|
||||
|
@ -23,20 +23,17 @@
|
||||
|
||||
package com.iluwatar.servicelayer.magic;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.iluwatar.servicelayer.spell.Spell;
|
||||
import com.iluwatar.servicelayer.spell.SpellDao;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
import com.iluwatar.servicelayer.spellbook.SpellbookDao;
|
||||
import com.iluwatar.servicelayer.wizard.Wizard;
|
||||
import com.iluwatar.servicelayer.wizard.WizardDao;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* Service implementation.
|
||||
*
|
||||
*/
|
||||
public class MagicServiceImpl implements MagicService {
|
||||
|
||||
@ -45,7 +42,7 @@ public class MagicServiceImpl implements MagicService {
|
||||
private SpellDao spellDao;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* Constructor.
|
||||
*/
|
||||
public MagicServiceImpl(WizardDao wizardDao, SpellbookDao spellbookDao, SpellDao spellDao) {
|
||||
this.wizardDao = wizardDao;
|
||||
|
@ -23,6 +23,8 @@
|
||||
|
||||
package com.iluwatar.servicelayer.spell;
|
||||
|
||||
import com.iluwatar.servicelayer.common.BaseEntity;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
@ -31,13 +33,8 @@ import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import com.iluwatar.servicelayer.common.BaseEntity;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
|
||||
/**
|
||||
*
|
||||
* Spell entity.
|
||||
*
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "SPELL")
|
||||
@ -54,7 +51,8 @@ public class Spell extends BaseEntity {
|
||||
@JoinColumn(name = "SPELLBOOK_ID_FK", referencedColumnName = "SPELLBOOK_ID")
|
||||
private Spellbook spellbook;
|
||||
|
||||
public Spell() {}
|
||||
public Spell() {
|
||||
}
|
||||
|
||||
public Spell(String name) {
|
||||
this();
|
||||
|
@ -26,9 +26,7 @@ package com.iluwatar.servicelayer.spell;
|
||||
import com.iluwatar.servicelayer.common.Dao;
|
||||
|
||||
/**
|
||||
*
|
||||
* SpellDao interface.
|
||||
*
|
||||
*/
|
||||
public interface SpellDao extends Dao<Spell> {
|
||||
|
||||
|
@ -24,16 +24,11 @@
|
||||
package com.iluwatar.servicelayer.spell;
|
||||
|
||||
import com.iluwatar.servicelayer.common.DaoBaseImpl;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
/**
|
||||
*
|
||||
* SpellDao implementation.
|
||||
*
|
||||
*/
|
||||
public class SpellDaoImpl extends DaoBaseImpl<Spell> implements SpellDao {
|
||||
|
||||
|
@ -23,9 +23,11 @@
|
||||
|
||||
package com.iluwatar.servicelayer.spellbook;
|
||||
|
||||
import com.iluwatar.servicelayer.common.BaseEntity;
|
||||
import com.iluwatar.servicelayer.spell.Spell;
|
||||
import com.iluwatar.servicelayer.wizard.Wizard;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
@ -36,14 +38,8 @@ import javax.persistence.ManyToMany;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import com.iluwatar.servicelayer.common.BaseEntity;
|
||||
import com.iluwatar.servicelayer.spell.Spell;
|
||||
import com.iluwatar.servicelayer.wizard.Wizard;
|
||||
|
||||
/**
|
||||
*
|
||||
* Spellbook entity.
|
||||
*
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "SPELLBOOK")
|
||||
|
@ -26,9 +26,7 @@ package com.iluwatar.servicelayer.spellbook;
|
||||
import com.iluwatar.servicelayer.common.Dao;
|
||||
|
||||
/**
|
||||
*
|
||||
* SpellbookDao interface.
|
||||
*
|
||||
*/
|
||||
public interface SpellbookDao extends Dao<Spellbook> {
|
||||
|
||||
|
@ -23,17 +23,12 @@
|
||||
|
||||
package com.iluwatar.servicelayer.spellbook;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Session;
|
||||
import com.iluwatar.servicelayer.common.DaoBaseImpl;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
import com.iluwatar.servicelayer.common.DaoBaseImpl;
|
||||
|
||||
/**
|
||||
*
|
||||
* SpellbookDao implementation.
|
||||
*
|
||||
*/
|
||||
public class SpellbookDaoImpl extends DaoBaseImpl<Spellbook> implements SpellbookDao {
|
||||
|
||||
|
@ -23,9 +23,10 @@
|
||||
|
||||
package com.iluwatar.servicelayer.wizard;
|
||||
|
||||
import com.iluwatar.servicelayer.common.BaseEntity;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
@ -34,13 +35,8 @@ import javax.persistence.Id;
|
||||
import javax.persistence.ManyToMany;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import com.iluwatar.servicelayer.common.BaseEntity;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
|
||||
/**
|
||||
*
|
||||
* Wizard entity.
|
||||
*
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "WIZARD")
|
||||
|
@ -26,9 +26,7 @@ package com.iluwatar.servicelayer.wizard;
|
||||
import com.iluwatar.servicelayer.common.Dao;
|
||||
|
||||
/**
|
||||
*
|
||||
* WizardDao interface.
|
||||
*
|
||||
*/
|
||||
public interface WizardDao extends Dao<Wizard> {
|
||||
|
||||
|
@ -23,18 +23,15 @@
|
||||
|
||||
package com.iluwatar.servicelayer.wizard;
|
||||
|
||||
import com.iluwatar.servicelayer.common.DaoBaseImpl;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
import com.iluwatar.servicelayer.common.DaoBaseImpl;
|
||||
import com.iluwatar.servicelayer.spellbook.Spellbook;
|
||||
|
||||
/**
|
||||
*
|
||||
* WizardDao implementation.
|
||||
*
|
||||
*/
|
||||
public class WizardDaoImpl extends DaoBaseImpl<Wizard> implements WizardDao {
|
||||
|
||||
|
@ -24,23 +24,21 @@
|
||||
package com.iluwatar.servicelocator;
|
||||
|
||||
/**
|
||||
*
|
||||
* The Service Locator pattern is a design pattern used in software development to encapsulate the
|
||||
* processes involved in obtaining a service with a strong abstraction layer. This pattern uses a
|
||||
* central registry known as the "service locator", which on request returns the information
|
||||
* necessary to perform a certain task.
|
||||
* <p>
|
||||
* In this example we use the Service locator pattern to lookup JNDI-services and cache them for
|
||||
*
|
||||
* <p>In this example we use the Service locator pattern to lookup JNDI-services and cache them for
|
||||
* subsequent requests.
|
||||
* <p>
|
||||
* <br>
|
||||
*
|
||||
* @author saifasif
|
||||
*
|
||||
*/
|
||||
public class App {
|
||||
|
||||
/**
|
||||
* Program entry point
|
||||
* Program entry point.
|
||||
*
|
||||
* @param args command line args
|
||||
*/
|
||||
|
@ -25,10 +25,10 @@ package com.iluwatar.servicelocator;
|
||||
|
||||
/**
|
||||
* This is going to be the parent service interface which we will use to create our services. All
|
||||
* services will have a <ul><li>service name</li> <li>unique id</li> <li>execution work flow</li></ul>
|
||||
* services will have a <ul><li>service name</li> <li>unique id</li> <li>execution work
|
||||
* flow</li></ul>
|
||||
*
|
||||
* @author saifasif
|
||||
*
|
||||
*/
|
||||
public interface Service {
|
||||
|
||||
|
@ -23,11 +23,10 @@
|
||||
|
||||
package com.iluwatar.servicelocator;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* The service cache implementation which will cache services that are being created. On first hit,
|
||||
@ -66,7 +65,7 @@ public class ServiceCache {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the service into the cache map
|
||||
* Adds the service into the cache map.
|
||||
*
|
||||
* @param newService a {@link Service}
|
||||
*/
|
||||
|
@ -41,7 +41,7 @@ public class ServiceImpl implements Service {
|
||||
private final int id;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* Constructor.
|
||||
*/
|
||||
public ServiceImpl(String serviceName) {
|
||||
// set the service name
|
||||
|
Loading…
x
Reference in New Issue
Block a user