class S3ChangeLogStore implements ChangeLogStore {

    @Override
    public SignedDomain getLocalSignedDomain(String domainName) {

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("getSignedDomain: {}", domainName);
        }

        // clear the mapping if present and value is stored else null is returned

        SignedDomain signedDomain = tempSignedDomainMap.remove(domainName);

        // when for some reason the getAllSignedDomains() was unsuccessful
        // signedDomain will be null

        if (signedDomain == null) {

            if (LOGGER.isInfoEnabled()) {
                LOGGER.info("getSignedDomain: not present in cache, fetching from S3...");
            }

            // make sure we have an aws s3 client for our request

            if (awsS3Client == null) {
                awsS3Client = getS3Client();
            }

            signedDomain = getSignedDomain(awsS3Client, domainName);

            // if we got a failure for any reason, we're going
            // get a new aws s3 client and try again

            if (signedDomain == null) {
                awsS3Client = getS3Client();
                signedDomain = getSignedDomain(awsS3Client, domainName);
            }
        }
        return signedDomain;
    }

    public  S3ChangeLogStore();
    public  S3ChangeLogStore(String awsRegion);

}