All Downloads are FREE. Search and download functionalities are using the official Maven repository.

wtf.metio.yosql.models.configuration.AnnotationMember Maven / Gradle / Ivy

/*
 * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level
 * directory of this distribution and at https://creativecommons.org/publicdomain/zero/1.0/. No part of yosql,
 * including this file, may be copied, modified, propagated, or distributed except according to the terms contained
 * in the LICENSE file.
 */
package wtf.metio.yosql.models.configuration;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.immutables.value.Value;

/**
 * Configuration for annotation members that are placed on a constructor or method in generated code.
 */
@Value.Immutable
@JsonSerialize(
        as = ImmutableAnnotationMember.class
)
@JsonDeserialize(
        as = ImmutableAnnotationMember.class
)
public interface AnnotationMember {

    //region builders

    static ImmutableAnnotationMember.KeyBuildStage builder() {
        return ImmutableAnnotationMember.builder();
    }

    static ImmutableAnnotationMember copyOf(final AnnotationMember member) {
        return ImmutableAnnotationMember.copyOf(member);
    }

    //endregion

    /**
     * @return The key or name of the annotation member.
     */
    String key();

    /**
     * @return The value of the annotation member.
     */
    String value();

    /**
     * @return The fully-qualified type of the annotation member.
     */
    @Value.Default
    default String type() {
        return "java.lang.String";
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy