package net.q2ek.compileinfo;

import static java.lang.annotation.RetentionPolicy.CLASS;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * Annotate a class to generate {@code <AnnotatedClassNamex>CompileInfo.java}
 * <br/>
 *
 * Example: <br/>
 *
 * <pre>
 * <code>
 * {@literal @}CompileInfo
 * class MyClass {
 * 	public String compileTime() {
 * 		return MyClassCompileInfo.zonedDateTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
 * 	}
 *
 * 	public String jenkinsBuildUrl() {
 * 		return MyClassCompileInfo.properties().get("env.BUILD_URL");
 * 	}
 * }
 * </code>
 * </pre>
 *
 * @author Edze Kruizinga
 */
@Retention(CLASS)
@Target(ElementType.TYPE)
public @interface CompileInfo {
	/**
	 * If set to false the generated class will not contain a map of system
	 * properties.
	 */
	boolean includeSystemProperties() default true;

	/**
	 * System properties will be filtered using this regex.
	 */
	String regex() default ".*";

	/**
	 * Add something other than "CompileInfo" to the generated classname
	 */
	String extension() default "CompileInfo";

	/**
	 * If given this will be used as the generated classname instead of
	 * [classname] + "CompileInfo"
	 */
	String classname() default "";
}

@@ -778,206 +778,101 @@
  If 
-set to false the generated class will not contain a map of system%0A%09 * properties.%0A%09 */%0A%09boolean includeSystemProperties() default true;%0A%0A%09/**%0A%09 * System properties will be filtered using this regex.
+given this will be used as the generated classname instead of%0A%09 * %5Bclassname%5D + %22CompileInfo%22
 %0A%09 *
@@ -885,13 +885,17 @@
 ing 
-regex
+classname
 () d
@@ -906,10 +906,8 @@
 lt %22
-.*
 %22;%0A%0A
@@ -1046,101 +1046,206 @@
  If 
-given this will be used as the generated classname instead of%0A%09 * %5Bclassname%5D + %22CompileInfo%22
+set to false the generated class will not contain a map of system%0A%09 * properties.%0A%09 */%0A%09boolean includeSystemProperties() default true;%0A%0A%09/**%0A%09 * System properties will be filtered using this regex.
 %0A%09 *
@@ -1250,33 +1250,29 @@
  */%0A%09String 
-classname
+regex
 () default %22
@@ -1271,13 +1271,15 @@
 efault %22
+.*
 %22;%0A%7D%0A

Reorder CompileInfo options