All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.utils.ToString Maven / Gradle / Ivy

Go to download

A single bundled dependency that includes all service and dependent JARs with third-party libraries relocated to different namespaces.

There is a newer version: 2.5.20
Show newest version
/*
 * Copyright 2010-2018 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 software.amazon.awssdk.utils;

import java.util.Arrays;
import software.amazon.awssdk.annotations.NotThreadSafe;
import software.amazon.awssdk.annotations.SdkProtectedApi;

/**
 * A class to standardize implementations of {@link Object#toString()} across the SDK.
 *
 * 
{@code
 * ToString.builder("Person")
 *         .add("name", name)
 *         .add("age", age)
 *         .build();
 * }
*/ @NotThreadSafe @SdkProtectedApi public final class ToString { private final StringBuilder result; private final int startingLength; /** * @see #builder(String) */ private ToString(String className) { this.result = new StringBuilder(className).append("("); this.startingLength = result.length(); } /** * Create a to-string result for the given class name. */ public static String create(String className) { return className + "()"; } /** * Create a to-string result builder for the given class name. * @param className The name of the class being toString'd */ public static ToString builder(String className) { return new ToString(className); } /** * Add a field to the to-string result. * @param fieldName The name of the field. Must not be null. * @param field The value of the field. Value is ignored if null. */ public ToString add(String fieldName, Object field) { if (field != null) { String value; if (field.getClass().isArray()) { if (field instanceof byte[]) { value = "0x" + BinaryUtils.toHex((byte[]) field); } else { value = Arrays.toString((Object[]) field); } } else { value = String.valueOf(field); } result.append(fieldName).append("=").append(value).append(", "); } return this; } /** * Convert this result to a string. The behavior of calling other methods after this one is undefined. */ public String build() { if (result.length() > startingLength) { result.setLength(result.length() - 2); } return result.append(")").toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy