/*
* Copyright 2016 The original 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 io.sundr.codegen.model;
import java.util.Collection;
import java.util.List;
import io.sundr.builder.Builder;
import io.sundr.builder.Nested;
import io.sundr.builder.Predicate;
public interface PropertyFluent<A extends PropertyFluent<A>> extends ModifierSupportFluent<A>{
public A addToAnnotations(int index, AnnotationRef item);
public A setToAnnotations(int index, AnnotationRef item);
public A addToAnnotations(AnnotationRef... items);
public A addAllToAnnotations(Collection<AnnotationRef> items);
public A removeFromAnnotations(AnnotationRef... items);
public A removeAllFromAnnotations(Collection<AnnotationRef> items);
/**
* This method has been deprecated, please use method buildAnnotations instead.
*/
@Deprecated public List<AnnotationRef> getAnnotations();
public List<AnnotationRef> buildAnnotations();
public AnnotationRef buildAnnotation(int index);
public AnnotationRef buildFirstAnnotation();
public AnnotationRef buildLastAnnotation();
public AnnotationRef buildMatchingAnnotation(Predicate<Builder<? extends AnnotationRef>> predicate);
public A withAnnotations(List<AnnotationRef> annotations);
public A withAnnotations(AnnotationRef... annotations);
public Boolean hasAnnotations();
public AnnotationsNested<A> addNewAnnotation();
public AnnotationsNested<A> addNewAnnotationLike(AnnotationRef item);
/**
* This method has been deprecated, please use method buildTypeRef instead.
*/
@Deprecated public TypeRef getTypeRef();
public TypeRef buildTypeRef();
public A withTypeRef(TypeRef typeRef);
public Boolean hasTypeRef();
public A withVoidRefTypeRef(VoidRef voidRefTypeRef);
public VoidRefTypeRefNested<A> withNewVoidRefTypeRef();
public VoidRefTypeRefNested<A> withNewVoidRefTypeRefLike(VoidRef item);
public A withWildcardRefTypeRef(WildcardRef wildcardRefTypeRef);
public WildcardRefTypeRefNested<A> withNewWildcardRefTypeRef();
public WildcardRefTypeRefNested<A> withNewWildcardRefTypeRefLike(WildcardRef item);
public A withPrimitiveRefTypeRef(PrimitiveRef primitiveRefTypeRef);
public PrimitiveRefTypeRefNested<A> withNewPrimitiveRefTypeRef();
public PrimitiveRefTypeRefNested<A> withNewPrimitiveRefTypeRefLike(PrimitiveRef item);
public A withTypeParamRefTypeRef(TypeParamRef typeParamRefTypeRef);
public TypeParamRefTypeRefNested<A> withNewTypeParamRefTypeRef();
public TypeParamRefTypeRefNested<A> withNewTypeParamRefTypeRefLike(TypeParamRef item);
public A withClassRefTypeRef(ClassRef classRefTypeRef);
public ClassRefTypeRefNested<A> withNewClassRefTypeRef();
public ClassRefTypeRefNested<A> withNewClassRefTypeRefLike(ClassRef item);
public String getName();
public A withName(String name);
public Boolean hasName();
public interface AnnotationsNested<N> extends Nested<N>,AnnotationRefFluent<AnnotationsNested<N>>{
public N and(); public N endAnnotation();
}
public interface VoidRefTypeRefNested<N> extends Nested<N>,VoidRefFluent<VoidRefTypeRefNested<N>>{
public N and(); public N endVoidRefTypeRef();
}
public interface WildcardRefTypeRefNested<N> extends Nested<N>,WildcardRefFluent<WildcardRefTypeRefNested<N>>{
public N and(); public N endWildcardRefTypeRef();
}
public interface PrimitiveRefTypeRefNested<N> extends Nested<N>,PrimitiveRefFluent<PrimitiveRefTypeRefNested<N>>{
public N and(); public N endPrimitiveRefTypeRef();
}
public interface TypeParamRefTypeRefNested<N> extends Nested<N>,TypeParamRefFluent<TypeParamRefTypeRefNested<N>>{
public N and(); public N endTypeParamRefTypeRef();
}
public interface ClassRefTypeRefNested<N> extends Nested<N>,ClassRefFluent<ClassRefTypeRefNested<N>>{
public N and(); public N endClassRefTypeRef();
}
}