001/* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
002 *
003 * Copyright © 2017–2019 microBean™.
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
014 * implied.  See the License for the specific language governing
015 * permissions and limitations under the License.
016 */
017package org.microbean.development.annotation;
018
019import java.lang.annotation.Documented;
020import java.lang.annotation.ElementType;
021import java.lang.annotation.Retention;
022import java.lang.annotation.RetentionPolicy;
023import java.lang.annotation.Target;
024
025/**
026 * Describes an <em>issue</em> that is related to the annotated
027 * element.
028 *
029 * @author <a href="https://about.me/lairdnelson/"
030 * target="_parent">Laird Nelson</a>
031 */
032@Documented
033@Retention(RetentionPolicy.RUNTIME)
034@Target({
035  ElementType.ANNOTATION_TYPE,
036  ElementType.CONSTRUCTOR,
037  ElementType.FIELD,
038  ElementType.LOCAL_VARIABLE,
039  ElementType.METHOD,
040  ElementType.PACKAGE,
041  ElementType.PARAMETER,
042  ElementType.TYPE,
043  ElementType.TYPE_PARAMETER,
044  ElementType.TYPE_USE
045})
046public @interface Issue {
047
048  /**
049   * Describes when the issue itself was created.
050   *
051   * @return a description of when the issue itself was created
052   */
053  String createdOn() default "";
054
055  /**
056   * A description of the issue.
057   *
058   * @return a description of the issue
059   */
060  String description() default "";
061
062  /**
063   * A description of the effect the issue has on the annotated
064   * element.
065   *
066   * @return a description of the effect the issue has on the
067   * annotated element
068   */
069  String effect() default "";
070
071  /**
072   * Identifying information about the issue.
073   *
074   * @return identifying information about the issue
075   */
076  String id() default "";
077
078  /**
079   * The kind of issue this is.
080   *
081   * @return the kind of issue this is
082   */
083  String type() default "";
084
085  /**
086   * How the issue was resolved.
087   *
088   * @return how the issue was resolved
089   */
090  String resolution() default "";
091
092  /**
093   * When the issue was resolved.
094   *
095   * @return a {@link String} describing when the issue was resolved
096   */
097  String resolvedOn() default "";
098
099  /**
100   * A description of the current status of the issue.
101   *
102   * @return a description of the current status of the issue
103   */
104  String status() default "";
105
106  /**
107   * The severity of the issue.
108   *
109   * @return the severity of the issue
110   */
111  String severity() default "";
112
113  /**
114   * Where more information about the issue may be found.
115   *
116   * @return where more information about the issue may be found in
117   * URI form
118   */
119  String uri() default "";
120  
121}