/*
 * Copyright (c) 2005, 2023 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package jakarta.annotation;
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;

/**
 * The {@code Generated} annotation is used to mark source code
 * that has been generated.
 * It can also be used to differentiate user written code from generated code
 * in a single file. 
 * <p>The {@code value} element must have the name of the
 * code generator. The recommended convention is to use the fully qualified 
 * name of the code generator in the value field,
 * for example {@code com.company.package.classname}.</p>
 * <p>The {@code date} element is used to indicate the date the
 * source was generated. 
 * The {@code date} element must follow the ISO 8601 standard.
 * For example, the {@code date} element could have the
 * value {@code 2001-07-04T12:08:56.235-0700},
 * which represents 2001-07-04 12:08:56 local time in the U.S. Pacific 
 * time zone.</p>
 * <p>The {@code comment} element is a place holder for any comments
 * that the code generator may want to include in the generated code.</p>
 * 
 * @since 1.6, Common Annotations 1.0
 */

@Documented
@Retention(SOURCE)
@Target({PACKAGE, TYPE, ANNOTATION_TYPE, METHOD, CONSTRUCTOR, FIELD, 
        LOCAL_VARIABLE, PARAMETER})
public @interface Generated {
   /**
    * The value element must have the name of the code generator.
    * The recommended convention is to use the fully qualified name of the
    * code generator. For example: {@code com.acme.generator.CodeGen}.
    */
   String[] value();

   /**
    * Date when the source was generated.
    */
   String date() default "";

   /**
    * A place holder for any comments that the code generator may want to 
    * include in the generated code.
    */
   String comments() default "";
}

