188 lines
9.1 KiB
Java
188 lines
9.1 KiB
Java
package de.hsos.swa.ma.api.al;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import org.jboss.logging.Logger;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import javax.ws.rs.GET;
|
|
import javax.ws.rs.POST;
|
|
import javax.ws.rs.PUT;
|
|
import javax.ws.rs.DELETE;
|
|
import javax.ws.rs.Path;
|
|
import javax.ws.rs.Produces;
|
|
import javax.ws.rs.Consumes;
|
|
import javax.ws.rs.core.MediaType;
|
|
|
|
import org.eclipse.microprofile.metrics.MetricUnits;
|
|
import org.eclipse.microprofile.metrics.annotation.Counted;
|
|
import org.eclipse.microprofile.metrics.annotation.Timed;
|
|
|
|
import org.eclipse.microprofile.faulttolerance.Retry;
|
|
import org.eclipse.microprofile.faulttolerance.Timeout;
|
|
import org.eclipse.microprofile.faulttolerance.Fallback;
|
|
|
|
//import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
|
|
import org.eclipse.microprofile.rest.client.inject.RestClient;
|
|
|
|
import org.jboss.resteasy.annotations.jaxrs.PathParam;
|
|
|
|
public class ProperBarkeeper implements CocktailInterface, MocktailInterface{
|
|
|
|
private static final Logger logger = Logger.getLogger(Barkeeper.class);
|
|
|
|
@Inject
|
|
StorageTransport st;
|
|
|
|
@Inject
|
|
@RestClient
|
|
CocktailGatewayInterface cocktailGatewayInterface;
|
|
|
|
//Metrics
|
|
@Counted(name = "performedAllCocktailSearches", description = "How many searches for all cocktails have been performed.")
|
|
@Timed(name = "searchAllCocktailsTimer", description = "A measure of how long it takes to perform the search.", unit = MetricUnits.MILLISECONDS)
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
@Timeout(250)
|
|
//@Fallback(fallbackMethod = "getAllMocktails")
|
|
public Drinks getAllCocktails(){
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getAllCocktails: started");
|
|
Drinks drinks = cocktailGatewayInterface.getAllCocktails();
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->getAllCocktails: get all cocktails by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getAllCocktails: ended");
|
|
return drinks;
|
|
}
|
|
|
|
//Metrics
|
|
@Counted(name = "performedNameCocktailSearches", description = "How many searches for cocktails by name have been performed.")
|
|
@Timed(name = "searchCocktailsNameTimer", description = "A measure of how long it takes to perform the search.", unit = MetricUnits.MILLISECONDS)
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
@Timeout(250)
|
|
public Drinks getCocktailByName(String name) {
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getCocktailByName: started");
|
|
Drinks drinks = cocktailGatewayInterface.getCocktailByName(name);
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->getCocktailByName: get all cocktails by name REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getCocktailByName: ended");
|
|
return drinks;
|
|
}
|
|
|
|
//Metrics
|
|
@Counted(name = "performedIngredientCocktailSearches", description = "How many searches for cocktails by ingredient have been performed.")
|
|
@Timed(name = "searchCocktailsIngredientTimer", description = "A measure of how long it takes to perform the search.", unit = MetricUnits.MILLISECONDS)
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
@Timeout(250)
|
|
public Drinks getCocktailByIngredient(String ingredient){
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getCocktailByIngredient: started");
|
|
Drinks drinks = cocktailGatewayInterface.getCocktailByIngredient(ingredient);
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->getCocktailByIngredient: get all cocktails by ingredient REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getCocktailByIngredient: ended");
|
|
return drinks;
|
|
}
|
|
|
|
/*public void createCocktail(Mocktail m){
|
|
|
|
}
|
|
|
|
public void deleteCocktail(@PathParam long number){
|
|
|
|
}
|
|
|
|
public void updateCocktail(Mocktail m,@PathParam long number){
|
|
|
|
}*/
|
|
|
|
|
|
//Metrics
|
|
@Counted(name = "performedAllMocktailSearches", description = "How many searches for all cocktails have been performed.")
|
|
@Timed(name = "searchAllMocktailsTimer", description = "A measure of how long it takes to perform the search.", unit = MetricUnits.MILLISECONDS)
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
@Timeout(250)
|
|
public ArrayList<Mocktail> getAllMocktails(){
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getAllMocktails: started");
|
|
ArrayList<Mocktail> mocks = st.getAllMocktails();
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->getAllMocktails: get all mocktails by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getAllMocktails: ended");
|
|
return mocks;
|
|
}
|
|
|
|
//Metrics
|
|
@Counted(name = "performedSearchesByName", description = "How many searches by name have been performed.")
|
|
@Timed(name = "searchMocktailsNameTimer", description = "A measure of how long it takes to perform the search.", unit = MetricUnits.MILLISECONDS)
|
|
//@Gauge(name = "highestPrimeNumberSoFar", unit = MetricUnits.NONE, description = "Highest prime number so far.")
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
@Timeout(250)
|
|
@Fallback(fallbackMethod = "fallbackGetMocktailByName")
|
|
public ArrayList<Mocktail> getMocktailByName(String name) {
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getMocktailByName: started");
|
|
ArrayList<Mocktail> mts = st.getMocktailByName(name);
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->getMocktailByName: get mocktail by name by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getMocktailByName: ended");
|
|
return mts;
|
|
}
|
|
|
|
//Metrics
|
|
@Counted(name = "performedSearchesByIngredient", description = "How many searches by ingredient have been performed.")
|
|
@Timed(name = "searchMocktailsIngredientTimer", description = "A measure of how long it takes to perform the search.", unit = MetricUnits.MILLISECONDS)
|
|
//@Gauge(name = "highestPrimeNumberSoFar", unit = MetricUnits.NONE, description = "Highest prime number so far.")
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
@Timeout(250)
|
|
//@Fallback(fallbackMethod = "fallbackGetMocktailByName")
|
|
public ArrayList<Mocktail> getMocktailByIngredient(String ingredient) {
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getMocktailByIngredient: started");
|
|
ArrayList<Mocktail> mts = st.getMocktailByIngredient(ingredient);
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->getMocktailByIngredient: get mocktail by ingredient by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getMocktailByIngredient: ended");
|
|
return mts;
|
|
}
|
|
|
|
public ArrayList<Mocktail> fallbackGetMocktailByName(String name) {
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getMocktailByName: started");
|
|
ArrayList<Mocktail> mts = st.getAllMocktails();
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->getMocktailByName: get mocktail by name by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->getMocktailByName: ended");
|
|
return mts;
|
|
}
|
|
|
|
//Metrics
|
|
@Counted(name = "performedCreates", description = "How many creates have been performed.")
|
|
@Timed(name = "createTimer", description = "A measure of how long it takes to perform the mocktail creation.", unit = MetricUnits.MILLISECONDS)
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
public void createMocktail(Mocktail m) {
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->createMocktail: started");
|
|
this.st.addMocktail(m);
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->createMocktail: create mocktail by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->createMocktail: ended");
|
|
}
|
|
|
|
//Metrics
|
|
@Counted(name = "performedUpdates", description = "How many updates have been performed.")
|
|
@Timed(name = "updateTimer", description = "A measure of how long it takes to perform the update of a mocktail.", unit = MetricUnits.MILLISECONDS)
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
public void updateMocktail(Mocktail m, long number) {
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->updateMocktail: started");
|
|
this.st.updateMocktail(m, number);
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->updateMocktail: update mocktail by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->updateMocktail: ended");
|
|
}
|
|
|
|
//Metrics
|
|
@Counted(name = "performedDeletions", description = "How many deletes have been performed.")
|
|
@Timed(name = "deleteTimer", description = "A measure of how long it takes to delete a mocktail.", unit = MetricUnits.MILLISECONDS)
|
|
//Fault-Tolerance
|
|
@Retry(maxRetries = 3)
|
|
public void deleteMocktail(long id) {
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->deleteMocktail: started");
|
|
this.st.deleteMocktail(id);
|
|
logger.trace(System.currentTimeMillis() + ": Barkeeper->deleteMocktail: delete mocktail by REST-CLIENT");
|
|
logger.debug(System.currentTimeMillis() + ": Barkeeper->deleteMocktail: ended");
|
|
}
|
|
|
|
} |