/********************************************************************* Copyright 2015 the Flapi authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License 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 unquietcode.tools.flapi.generator.naming; import java.util.concurrent.atomic.AtomicInteger; import static com.google.common.base.Preconditions.checkState; /** * Default name generator. * * @author Ben Fagin * @version 2015-01-14 */ public class DefaultNameGenerator implements NameGenerator { private final AtomicInteger anonymousCounter = new AtomicInteger(1); @Override public String methodName(String methodKey) { return methodKey; } @Override public String className(String stateKey) { return stateKey; } @Override public String generatorName(String stateName) { return stateName+"Generator"; } @Override public String factoryName(String stateName) { return stateName+"Factory"; } @Override public String helperName(String stateName) { return stateName+"Helper"; } @Override public String builderName(String stateName) { return stateName+"Builder"; } @Override public String anonymousName(String methodName) { StringBuilder name = new StringBuilder(); // Anon123 name.append("Anon").append(anonymousCounter.getAndIncrement()); // Anon123_someMethod if (methodName != null) { checkState(!methodName.trim().isEmpty(), "a valid method name is required"); name.append("_").append(methodName); } return name.toString(); } @Override public String wrapperName(String stateName) { return "Start"; } @Override public String markerName(String stateName) { return "Head"; } }