@SdkInternalApi
    final TagResourceResult executeTagResource(TagResourceRequest tagResourceRequest) {

        ExecutionContext executionContext = createExecutionContext(tagResourceRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<TagResourceRequest> request = null;
        Response<TagResourceResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new TagResourceRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(tagResourceRequest));
                // Binds the request metrics to the current request.
                request.setAWSRequestMetrics(awsRequestMetrics);
                request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
                request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
                request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
                request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Batch");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "TagResource");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

            } finally {
                awsRequestMetrics.endEvent(Field.RequestMarshallTime);
            }

            HttpResponseHandler<AmazonWebServiceResponse<TagResourceResult>> responseHandler = protocolFactory.createResponseHandler(
                    new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new TagResourceResultJsonUnmarshaller());
            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Associates the specified tags to a resource with the specified <code>resourceArn</code>. If existing tags on a
resource aren't specified in the request parameters, they aren't changed. When a resource is deleted, the tags
that are associated with that resource are deleted as well. Batch resources that support tags are compute
environments, jobs, job definitions, job queues, and scheduling policies. ARNs for child jobs of array and
multi-node parallel (MNP) jobs aren't supported.
</p>

@param tagResourceRequest
       Contains the parameters for <code>TagResource</code>.
@return Result of the TagResource operation returned by the service.
@throws ClientException
        These errors are usually caused by a client action. One example cause is using an action or resource on
        behalf of a user that doesn't have permissions to use the action or resource. Another cause is specifying
        an identifier that's not valid.
@throws ServerException
        These errors are usually caused by a server issue.
@sample AWSBatch.TagResource
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/batch-2016-08-10/TagResource" target="_top">AWS API
     Documentation</a>
aws-java-sdk-batch/src/main/java/com/amazonaws/services/batch/AWSBatchClient.java