package com.querydsl.dynamodb; import com.amazonaws.auth.SystemPropertiesCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.michelboudreau.alternator.AlternatorDB; import com.michelboudreau.alternatorv2.AlternatorDBClientV2; public final class ClientFactory { private ClientFactory() { } private static AmazonDynamoDB instance; private static AlternatorDB db; public static AmazonDynamoDB getInstance() throws Exception { if (instance != null) { return instance; } if (isUsingDynamoMock()) { instance = new AmazonDynamoDBClient(new SystemPropertiesCredentialsProvider()); instance.setRegion(Region.getRegion(Regions.US_EAST_1)); } else { instance = new AlternatorDBClientV2(); db = new AlternatorDB(); db.start(); } return instance; } public static boolean isUsingDynamoMock() { return System.getProperties().containsKey("aws.secretKey"); } public static void shutdownInstance() throws Exception { if (instance == null) { return; } instance.shutdown(); if (!isUsingDynamoMock()) { db.stop(); } instance = null; db = null; } }