/* * Copyright (c) 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.codegen.model.intermediate; import com.amazonaws.codegen.internal.Constants; import com.amazonaws.codegen.internal.DocumentationUtils; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class ConstructorModel extends DocumentationModel { private final String modelClassName; private final List<ArgumentModel> arguments = new LinkedList<ArgumentModel>(); public ConstructorModel(String modelClassName) { this.modelClassName = modelClassName; } public List<ArgumentModel> getArguments() { return arguments; } public void addArgument(ArgumentModel argument) { this.arguments.add(argument); } public String getArgumentsDeclaration() { StringBuilder builder = new StringBuilder(); Iterator<ArgumentModel> iter = arguments.iterator(); while (iter.hasNext()) { ArgumentModel arg = iter.next(); builder.append(arg.getType()) .append(" ") .append(arg.getName()); if (iter.hasNext()) { builder.append(", "); } } return builder.toString(); } @Override public void setDocumentation(String documentation) { throw new UnsupportedOperationException( "Documentation for ConstructorModel is not allowed to be manually set."); } @Override public String getDocumentation() { StringBuilder docBuilder = new StringBuilder("/**"); docBuilder.append(documentation != null ? documentation : String.format(DocumentationUtils.CONSTRUCTOR_DOC, modelClassName)); for (ArgumentModel arg : arguments) { docBuilder.append(Constants.LINE_SEPARATOR); docBuilder.append("@param " + arg.getName() + " " + DocumentationUtils.stripHTMLTags(arg.getDocumentation())); } docBuilder.append("*/"); return docBuilder.toString(); } }