
software.amazon.awssdk.codegen.poet.model.AccessorsFactory Maven / Gradle / Ivy
/*
* Copyright 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.codegen.poet.model;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeName;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
import software.amazon.awssdk.codegen.model.intermediate.MemberModel;
import software.amazon.awssdk.codegen.model.intermediate.ShapeModel;
import software.amazon.awssdk.codegen.poet.PoetExtension;
class AccessorsFactory {
private final ShapeModel shapeModel;
private final TypeProvider typeProvider;
private final IntermediateModel intermediateModel;
private final BeanGetterHelper getterHelper;
AccessorsFactory(ShapeModel shapeModel,
IntermediateModel intermediateModel,
TypeProvider typeProvider,
PoetExtension poetExtensions) {
this.shapeModel = shapeModel;
this.typeProvider = typeProvider;
this.intermediateModel = intermediateModel;
this.getterHelper = new BeanGetterHelper(poetExtensions, new ServiceModelCopiers(intermediateModel), typeProvider);
}
public MethodSpec beanStyleGetter(MemberModel memberModel) {
return getterHelper.beanStyleGetter(memberModel);
}
public List fluentSetterDeclarations(MemberModel memberModel, TypeName returnType) {
if (memberModel.isList()) {
return new ListSetters(intermediateModel, shapeModel, memberModel, typeProvider).fluentDeclarations(returnType);
}
if (memberModel.isMap()) {
return new MapSetters(intermediateModel, shapeModel, memberModel, typeProvider).fluentDeclarations(returnType);
}
return new NonCollectionSetters(intermediateModel, shapeModel, memberModel, typeProvider).fluentDeclarations(returnType);
}
public List convenienceSetterDeclarations(MemberModel memberModel, TypeName returnType) {
return intermediateModel.getCustomizationConfig().getConvenienceTypeOverloads().stream()
.filter(c -> c.accepts(shapeModel, memberModel))
.map(s -> new NonCollectionSetters(intermediateModel,
shapeModel,
memberModel,
typeProvider).convenienceDeclaration(returnType, s))
.collect(Collectors.toList());
}
public List fluentSetters(MemberModel memberModel, TypeName returnType) {
if (memberModel.isList()) {
return new ListSetters(intermediateModel, shapeModel, memberModel, typeProvider).fluent(returnType);
}
if (memberModel.isMap()) {
return new MapSetters(intermediateModel, shapeModel, memberModel, typeProvider).fluent(returnType);
}
return new NonCollectionSetters(intermediateModel, shapeModel, memberModel, typeProvider).fluent(returnType);
}
public List beanStyleSetters(MemberModel memberModel) {
if (memberModel.isList()) {
return new ListSetters(intermediateModel, shapeModel, memberModel, typeProvider).beanStyle();
}
if (memberModel.isMap()) {
return new MapSetters(intermediateModel, shapeModel, memberModel, typeProvider).beanStyle();
}
return new NonCollectionSetters(intermediateModel, shapeModel, memberModel, typeProvider).beanStyle();
}
public List convenienceSetters(MemberModel memberModel, TypeName returnType) {
List convenienceSetters = new ArrayList<>();
intermediateModel.getCustomizationConfig().getConvenienceTypeOverloads().stream()
.filter(c -> c.accepts(shapeModel, memberModel))
.forEach(s -> convenienceSetters.add(
new NonCollectionSetters(intermediateModel, shapeModel, memberModel, typeProvider)
.fluentConvenience(returnType, s)));
return convenienceSetters;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy