/* * Copyright 2011-2023 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.services.stepfunctions.builder.internal; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * Interface to build a particular type. * * @param Type to build. */ public interface Buildable { T build(); /** * Utilities to convert collections of {@link Buildable}'s to collections of the thing being built. */ class Utils { private Utils() { } /** * Converts the Map of {@link Buildable}s into a Map of the built object. * * @param buildableMap Map where values are {@link Buildable}s. * @param Key type * @param Type of object being built. * @return Unmodifiable map of built objects. */ public static Map build(Map> buildableMap) { final Map builtMap = new LinkedHashMap(buildableMap.size()); for (Map.Entry> entry : buildableMap.entrySet()) { builtMap.put(entry.getKey(), entry.getValue().build()); } return Collections.unmodifiableMap(builtMap); } /** * Converts the List of {@link Buildable}s into a List of the built object. * * @param buildableList List of {@link Buildable}s to build. * @param Type of object being built * @return Unmodifiable list of built objects. */ public static List build(List> buildableList) { List builtList = new ArrayList(buildableList.size()); for (Buildable buildable : buildableList) { builtList.add(buildable.build()); } return Collections.unmodifiableList(builtList); } } }