/*
* Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.metrics.internal;
import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.Request;
import com.amazonaws.metrics.AwsSdkMetrics;
import com.amazonaws.metrics.ServiceMetricType;
import com.amazonaws.metrics.SimpleThroughputMetricType;
import com.amazonaws.metrics.ThroughputMetricType;
/**
* An internal helper factory for generating service specific
* {@link ServiceMetricType} without causing compile time dependency on the
* service specific artifacts. There exists a S3ServiceMetricTest.java unit test
* in the S3 client library that ensures this class behaves consistently with
* the service metric enum defined in the S3 client library.
*/
public enum ServiceMetricTypeGuesser {
;
/**
* Returned the best-guessed throughput metric type for the given request,
* or null if there is none or if metric is disabled.
*/
public static ThroughputMetricType guessThroughputMetricType(
final Request<?> req,
final String metricNameSuffix,
final String byteCountMetricNameSuffix)
{
if (!AwsSdkMetrics.isMetricsEnabled())
return null; // metric disabled
AmazonWebServiceRequest orig = req.getOriginalRequest();
if (orig.getClass().getName().startsWith("com.amazonaws.services.s3")) {
return new SimpleThroughputMetricType(
"S3" + metricNameSuffix,
req.getServiceName(),
"S3" + byteCountMetricNameSuffix);
}
return null;
}
}