private String comment = "";
private final String name;
private final List<AnnotationTypeBuilder> annotationBuilders = new ArrayList<AnnotationTypeBuilder>();
+ private final List<GeneratedType> implementsTypes = new ArrayList<GeneratedType>();
private final List<EnumBuilder> enumDefinitions = new ArrayList<EnumBuilder>();
private final List<ConstantBuilder> constantDefintions = new ArrayList<ConstantBuilder>();
private final List<MethodSignatureBuilder> methodDefinitions = new ArrayList<MethodSignatureBuilder>();
-
+
public GeneratedTypeBuilderImpl(final String packageName, final String name) {
this.packageName = packageName;
this.name = name;
return builder;
}
+ @Override
+ public boolean addImplementsType(final GeneratedType genType) {
+ if (genType != null) {
+ return implementsTypes.add(genType);
+ }
+ return false;
+ }
+
@Override
public GeneratedType toInstance() {
return new GeneratedTypeImpl(this, packageName, name, comment,
- annotationBuilders, enumDefinitions, constantDefintions,
+ annotationBuilders, implementsTypes, enumDefinitions, constantDefintions,
methodDefinitions);
}
-
+
private static final class GeneratedTypeImpl implements GeneratedType {
private final Type parent;
private final String name;
private final String comment;
private final List<AnnotationType> annotations;
+ private final List<GeneratedType> implementsTypes;
private final List<Enumeration> enumDefinitions;
private final List<Constant> constantDefintions;
private final List<MethodSignature> methodDefinitions;
public GeneratedTypeImpl(final Type parent, final String packageName,
final String name, final String comment,
final List<AnnotationTypeBuilder> annotationBuilders,
+ final List<GeneratedType> implementsTypes,
final List<EnumBuilder> enumBuilders,
final List<ConstantBuilder> constantBuilders,
final List<MethodSignatureBuilder> methodBuilders) {
this.name = name;
this.comment = comment;
this.annotations = toUnmodifiableAnnotations(annotationBuilders);
+ this.implementsTypes = Collections.unmodifiableList(implementsTypes);
this.constantDefintions = toUnmodifiableConstants(constantBuilders);
this.enumDefinitions = toUnmodifiableEnums(enumBuilders);
this.methodDefinitions = toUnmodifiableMethods(methodBuilders);
public List<AnnotationType> getAnnotations() {
return annotations;
}
-
+
+ @Override
+ public List<GeneratedType> getImplements() {
+ return implementsTypes;
+ }
+
@Override
public List<Enumeration> getEnumDefintions() {
return enumDefinitions;