diff --git a/.idea/modules/example.iml b/.idea/modules/example.iml
new file mode 100644
index 0000000..3004a6f
--- /dev/null
+++ b/.idea/modules/example.iml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/semver.iml b/.idea/modules/semver.iml
index 1615fa6..24fcd77 100644
--- a/.idea/modules/semver.iml
+++ b/.idea/modules/semver.iml
@@ -15,12 +15,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 7895e9a..b807226 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id "com.jfrog.bintray" version "1.5"
+ id "com.jfrog.bintray" version "1.5"
}
apply plugin: 'java'
apply plugin: 'idea'
@@ -10,29 +10,27 @@ import org.apache.tools.ant.taskdefs.condition.Os
defaultTasks 'deploy'
-def getVersion(isIncrement = false)
-{
- def propsFile = 'version.properties'
- def majorKey = 'version.major'
- def minorKey = 'version.minor'
- def patchKey = 'version.patch'
- def metaKey = 'version.buildmeta'
- def preKey = 'version.prerelease'
- if (isIncrement)
- {
- ant.propertyfile(file: propsFile) {
- entry(key: patchKey,
- type: 'int',
- default: '-1',
- operation: '+')
- }
- }
- def p = new Properties()
- file(propsFile).withInputStream { stream -> p.load(stream) }
- def metadata = p.getProperty(metaKey, '')
- def prerelease = p.getProperty(preKey, '')
- return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') +
- (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : ''))
+def getVersion(isIncrement = false) {
+ def propsFile = 'version.properties'
+ def majorKey = 'version.major'
+ def minorKey = 'version.minor'
+ def patchKey = 'version.patch'
+ def metaKey = 'version.buildmeta'
+ def preKey = 'version.prerelease'
+ if (isIncrement) {
+ ant.propertyfile(file: propsFile) {
+ entry(key: patchKey,
+ type: 'int',
+ default: '-1',
+ operation: '+')
+ }
+ }
+ def p = new Properties()
+ file(propsFile).withInputStream { stream -> p.load(stream) }
+ def metadata = p.getProperty(metaKey, '')
+ def prerelease = p.getProperty(preKey, '')
+ return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') +
+ (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : ''))
}
version = getVersion()
@@ -56,167 +54,162 @@ def pkgLabels = ['java', 'annotation', 'processor', 'semantic', 'version']
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
repositories {
- mavenLocal()
- jcenter()
+ mavenLocal()
+ jcenter()
}
dependencies {
- compile 'org.apache.velocity:velocity:1.7'
- testCompile 'org.testng:testng:6.9.12'
+ compile 'org.apache.velocity:velocity:1.7'
+ testCompile 'org.testng:testng:6.9.12'
}
bintray {
- user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
- key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
- publications = ['MyPublication']
- dryRun = true
- pkg {
- repo = 'maven'
- name = mavenName
- licenses = pkgLicenses
- desc = mavenDescription
- websiteUrl = mavenUrl
- issueTrackerUrl = pkgIssueTrackerUrl
- vcsUrl = mavenScmCon
- labels = pkgLabels
- publicDownloadNumbers = true
- version {
- name = project.version
- desc = 'Version ' + project.version
- vcsTag = project.version
- gpg {
- sign = true
- }
- }
- }
+ user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
+ key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
+ publications = ['MyPublication']
+ dryRun = true
+ pkg {
+ repo = 'maven'
+ name = mavenName
+ licenses = pkgLicenses
+ desc = mavenDescription
+ websiteUrl = mavenUrl
+ issueTrackerUrl = pkgIssueTrackerUrl
+ vcsUrl = mavenScmCon
+ labels = pkgLabels
+ publicDownloadNumbers = true
+ version {
+ name = project.version
+ desc = 'Version ' + project.version
+ vcsTag = project.version
+ gpg {
+ sign = true
+ }
+ }
+ }
}
-
def pomConfig = {
- licenses {
- license {
- name mavenLicense
- url mavenLicenseUrl
- distribution 'repo'
- }
- }
- developers {
- developer {
- id 'ethauvin'
- name 'Erik C. Thauvin'
- email 'erik@thauvin.net'
- }
- }
- scm {
- connection 'scm:git:' + mavenScmCon
- developerConnection 'scm:git:' + mavenScmDevCon
- url mavenScmCon
- }
+ licenses {
+ license {
+ name mavenLicense
+ url mavenLicenseUrl
+ distribution 'repo'
+ }
+ }
+ developers {
+ developer {
+ id 'ethauvin'
+ name 'Erik C. Thauvin'
+ email 'erik@thauvin.net'
+ }
+ }
+ scm {
+ connection 'scm:git:' + mavenScmCon
+ developerConnection 'scm:git:' + mavenScmDevCon
+ url mavenScmCon
+ }
}
publishing {
- publications {
- MyPublication(MavenPublication) {
- from components.java
- artifact sourcesJar
- artifact javadocJar
- groupId mavenGroupId
- artifactId rootProject.name
- version project.version
+ publications {
+ MyPublication(MavenPublication) {
+ from components.java
+ artifact sourcesJar
+ artifact javadocJar
+ groupId mavenGroupId
+ artifactId rootProject.name
+ version project.version
- pom.withXml {
- def root = asNode()
- root.appendNode('name', mavenName)
- root.appendNode('description', mavenDescription)
- root.appendNode('url', mavenUrl)
- root.children().last() + pomConfig
- }
- }
- }
+ pom.withXml {
+ def root = asNode()
+ root.appendNode('name', mavenName)
+ root.appendNode('description', mavenDescription)
+ root.appendNode('url', mavenUrl)
+ root.children().last() + pomConfig
+ }
+ }
+ }
}
task javadocJar(type: Jar, dependsOn: javadoc) {
- group = 'Build'
- description = 'Builds an archive of the javadoc docs.'
- classifier = 'javadoc'
- from javadoc.destinationDir
+ group = 'Build'
+ description = 'Builds an archive of the javadoc docs.'
+ classifier = 'javadoc'
+ from javadoc.destinationDir
}
task sourcesJar(type: Jar) {
- group = 'Build'
- description = 'Builds an archive of the source code.'
- classifier = 'sources'
- from sourceSets.main.allSource
+ group = 'Build'
+ description = 'Builds an archive of the source code.'
+ classifier = 'sources'
+ from sourceSets.main.allSource
}
artifacts {
- archives javadocJar
- archives sourcesJar
+ archives javadocJar
+ archives sourcesJar
}
javadoc {
- title = mavenDescription + ' ' + version
- options.tags = ['created']
- options.author = true
- options.addStringOption('link', 'http://docs.oracle.com/javase/8/docs/api/')
- options.addStringOption('sourcepath', project.hasProperty('jdkSrc') ? jdkSrc : "$System.env.JAVA_HOME/src.zip")
- if (JavaVersion.current().isJava8Compatible())
- {
- options.addStringOption('Xdoclint:none', '-quiet')
- }
+ title = mavenDescription + ' ' + version
+ options.tags = ['created']
+ options.author = true
+ options.addStringOption('link', 'http://docs.oracle.com/javase/8/docs/api/')
+ options.addStringOption('sourcepath', project.hasProperty('jdkSrc') ? jdkSrc : "$System.env.JAVA_HOME/src.zip")
+ if (JavaVersion.current().isJava8Compatible()) {
+ options.addStringOption('Xdoclint:none', '-quiet')
+ }
}
test {
- useTestNG()
+ useTestNG()
}
compileJava {
- doFirst {
- project.version = getVersion(isRelease)
- }
+ doFirst {
+ project.version = getVersion(isRelease)
+ }
}
clean {
- delete deployDir
+ delete deployDir
}
task copyToDeploy(type: Copy) {
- from jar
- into deployDir
+ from jar
+ into deployDir
}
task deploy(dependsOn: ['build', 'copyToDeploy']) {
- description = 'Copies all needed files to the ${deployDir} directory.'
- group = 'Publishing'
- outputs.dir deployDir
- inputs.files copyToDeploy
- mustRunAfter clean
+ description = 'Copies all needed files to the ${deployDir} directory.'
+ group = 'Publishing'
+ outputs.dir deployDir
+ inputs.files copyToDeploy
+ mustRunAfter clean
}
task wrapper(type: Wrapper) {
- gradleVersion = gradle.gradleVersion
+ gradleVersion = gradle.gradleVersion
}
task release(dependsOn: ['wrapper', 'clean', 'deploy']) << {
- group = 'Publishing'
- description = 'Releases new version.'
- isRelease = true
+ group = 'Publishing'
+ description = 'Releases new version.'
+ isRelease = true
}
task pandoc(type: Exec) {
- group = 'Documentation'
- def pandoc_args = ['--from', 'markdown_github', '--to', 'html5', '-s', '-c', 'github-pandoc.css', '-o', 'README.html', 'README.md']
- if (Os.isFamily(Os.FAMILY_WINDOWS))
- {
- commandLine(['cmd', '/c', 'pandoc'] + pandoc_args)
- }
- else
- {
- executable 'pandoc'
- args pandoc_args
- }
- standardOutput = new ByteArrayOutputStream()
- ext.output = {
- return standardOutput.toString()
- }
-}
+ group = 'Documentation'
+ def pandoc_args = ['--from', 'markdown_github', '--to', 'html5', '-s', '-c', 'github-pandoc.css', '-o', 'README.html', 'README.md']
+ if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+ commandLine(['cmd', '/c', 'pandoc'] + pandoc_args)
+ } else {
+ executable 'pandoc'
+ args pandoc_args
+ }
+ standardOutput = new ByteArrayOutputStream()
+ ext.output = {
+ return standardOutput.toString()
+ }
+}
\ No newline at end of file
diff --git a/example/build.gradle b/example/build.gradle
index 66b8272..c6937a3 100644
--- a/example/build.gradle
+++ b/example/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id "com.ewerk.gradle.plugins.annotation-processor" version "1.0.2"
+ id "com.ewerk.gradle.plugins.annotation-processor" version "1.0.2"
}
apply plugin: 'java'
apply plugin: 'idea'
@@ -11,29 +11,27 @@ def isRelease = 'release' in gradle.startParameter.taskNames
def deployDir = 'deploy'
// Get version from properties file. Increment patch if specified.
-def getVersion(isIncrement = false)
-{
- def propsFile = 'version.properties'
- def majorKey = 'version.major'
- def minorKey = 'version.minor'
- def patchKey = 'version.patch'
- def metaKey = 'version.buildmeta'
- def preKey = 'version.prerelease'
- if (isIncrement)
- {
- ant.propertyfile(file: propsFile) {
- entry(key: patchKey,
- type: 'int',
- default: '-1',
- operation: '+')
- }
- }
- def p = new Properties()
- file(propsFile).withInputStream { stream -> p.load(stream) }
- def metadata = p.getProperty(metaKey, '')
- def prerelease = p.getProperty(preKey, '')
- return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') +
- (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : ''))
+def getVersion(isIncrement = false) {
+ def propsFile = 'version.properties'
+ def majorKey = 'version.major'
+ def minorKey = 'version.minor'
+ def patchKey = 'version.patch'
+ def metaKey = 'version.buildmeta'
+ def preKey = 'version.prerelease'
+ if (isIncrement) {
+ ant.propertyfile(file: propsFile) {
+ entry(key: patchKey,
+ type: 'int',
+ default: '-1',
+ operation: '+')
+ }
+ }
+ def p = new Properties()
+ file(propsFile).withInputStream { stream -> p.load(stream) }
+ def metadata = p.getProperty(metaKey, '')
+ def prerelease = p.getProperty(preKey, '')
+ return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') +
+ (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : ''))
}
version = getVersion()
@@ -42,55 +40,53 @@ mainClassName = 'net.thauvin.erik.semver.example.Example'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
repositories {
- mavenLocal()
- mavenCentral()
+ mavenLocal()
+ mavenCentral()
}
dependencies {
- compileOnly 'net.thauvin.erik:semver:0.9.6-beta'
+ compileOnly 'net.thauvin.erik:semver:0.9.6-beta'
}
annotationProcessor {
- // Update version, increment on release.
- project.version = getVersion(isRelease)
- library 'net.thauvin.erik:semver:0.9.6-beta'
- processor 'net.thauvin.erik.semver.VersionProcessor'
- // sourcesDir 'src/generated/java'
+ // Update version, increment on release.
+ project.version = getVersion(isRelease)
+ library 'net.thauvin.erik:semver:0.9.6-beta'
+ processor 'net.thauvin.erik.semver.VersionProcessor'
+ // sourcesDir 'src/generated/java'
}
compileJava {
- options.compilerArgs << '-proc:none'
+ options.compilerArgs << '-proc:none'
}
jar {
- manifest.attributes('Main-Class': mainClassName)
+ manifest.attributes('Main-Class': mainClassName)
}
clean {
- delete deployDir
+ delete deployDir
}
-
task copyToDeploy(type: Copy) {
- from jar
- into deployDir
+ from jar
+ into deployDir
}
task deploy(dependsOn: ['build', 'copyToDeploy']) {
- description = 'Copies all needed files to the ${deployDir} directory.'
- group = 'Publishing'
- outputs.dir deployDir
- inputs.files copyToDeploy
- mustRunAfter clean
+ description = 'Copies all needed files to the ${deployDir} directory.'
+ group = 'Publishing'
+ outputs.dir deployDir
+ inputs.files copyToDeploy
+ mustRunAfter clean
}
task release(dependsOn: ['wrapper', 'clean', 'deploy']) << {
- group = 'Publishing'
- description = 'Releases new version.'
- isRelease = true
+ group = 'Publishing'
+ description = 'Releases new version.'
+ isRelease = true
}
task wrapper(type: Wrapper) {
- gradleVersion = gradle.gradleVersion
-}
-
+ gradleVersion = gradle.gradleVersion
+}
\ No newline at end of file
diff --git a/example/gradle/wrapper/gradle-wrapper.jar b/example/gradle/wrapper/gradle-wrapper.jar
index 13372ae..3baa851 100644
Binary files a/example/gradle/wrapper/gradle-wrapper.jar and b/example/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/example/gradle/wrapper/gradle-wrapper.properties b/example/gradle/wrapper/gradle-wrapper.properties
index 7968b98..7d773c3 100644
--- a/example/gradle/wrapper/gradle-wrapper.properties
+++ b/example/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sat Jan 23 18:16:10 PST 2016
+#Mon Jul 18 17:32:58 PDT 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip
diff --git a/example/gradlew b/example/gradlew
index 9d82f78..27309d9 100644
--- a/example/gradlew
+++ b/example/gradlew
@@ -6,12 +6,30 @@
##
##############################################################################
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -30,6 +48,7 @@ die ( ) {
cygwin=false
msys=false
darwin=false
+nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
@@ -40,26 +59,11 @@ case "`uname`" in
MINGW* )
msys=true
;;
+ NONSTOP* )
+ nonstop=true
+ ;;
esac
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
@@ -85,7 +89,7 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
diff --git a/example/gradlew.bat b/example/gradlew.bat
index 8a0b282..832fdb6 100644
--- a/example/gradlew.bat
+++ b/example/gradlew.bat
@@ -8,14 +8,14 @@
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
@@ -46,7 +46,7 @@ echo location of your Java installation.
goto fail
:init
-@rem Get command-line arguments, handling Windowz variants
+@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
diff --git a/example/src/generated/java/net/thauvin/erik/semver/example/GeneratedVersion.java b/example/src/generated/java/net/thauvin/erik/semver/example/GeneratedVersion.java
new file mode 100644
index 0000000..13070df
--- /dev/null
+++ b/example/src/generated/java/net/thauvin/erik/semver/example/GeneratedVersion.java
@@ -0,0 +1,157 @@
+/*
+ * This file is automatically generated.
+ * Do not modify! -- ALL CHANGES WILL BE ERASED!
+ */
+package net.thauvin.erik.semver.example;
+
+import java.util.Date;
+
+/**
+ * Provides semantic version information.
+ *
+ * @author Semantic Version
+ * Annotation Processor
+ */
+public final class GeneratedVersion {
+ private final static String buildmeta = "";
+ private final static Date date = new Date(1468888435317L);
+ private final static int major = 3;
+ private final static int minor = 1;
+ private final static int patch = 49;
+ private final static String prerelease = "beta";
+ private final static String project = "Example";
+
+ /**
+ * Disables the default constructor.
+ *
+ * @throws UnsupportedOperationException If the constructor is called.
+ */
+ private GeneratedVersion()
+ throws UnsupportedOperationException {
+ throw new UnsupportedOperationException("Illegal constructor call.");
+ }
+
+ /**
+ * Returns the build date.
+ *
+ * @return The build date.
+ */
+ public static Date getBuildDate() {
+ return date;
+ }
+
+ /**
+ * Returns the project name.
+ *
+ * @return The project name, if any.
+ */
+ public static String getProject() {
+ return project;
+ }
+
+ /**
+ * Returns the full version string.
+ *
+ * Formatted as:
+ *
+ * MAJOR.MINOR.PATCH[-PRERELEASE][+BUILDMETADATA]
+ *
+ *
+ * For example:
+ *
+ * 1.0.0
+ * 1.0.0-beta
+ * 1.0.0+20160124144700
+ * 1.0.0-alpha+001
+ *
+ *
+ * @return The version string.
+ */
+ public static String getVersion() {
+ return Integer.toString(getMajor()) + '.'
+ + Integer.toString(getMinor()) + '.'
+ + Integer.toString(getPatch())
+ + getPreRelease(true) + getBuildMetadata(true);
+ }
+
+ /**
+ * Returns the major version.
+ *
+ * @return The major version.
+ */
+ public static int getMajor() {
+ return major;
+ }
+
+ /**
+ * Returns the minor version.
+ *
+ * @return The minor version.
+ */
+ public static int getMinor() {
+ return minor;
+ }
+
+ /**
+ * Returns the patch version.
+ *
+ * @return The patch version.
+ */
+ public static int getPatch() {
+ return patch;
+ }
+
+ /**
+ * Returns the pre-release version.
+ *
+ * @param isHyphen Prepend a hyphen, if true
.
+ * @return The pre-release version, if any.
+ */
+ public static String getPreRelease(final boolean isHyphen) {
+ if (prerelease.length() > 0) {
+ if (isHyphen) {
+ return '-' + prerelease;
+ } else {
+ return prerelease;
+ }
+ }
+
+ return "";
+ }
+
+ /**
+ * Returns the pre-release version.
+ *
+ * @return The pre-release version, if any.
+ */
+ public static String getPreRelease() {
+ return getPreRelease(false);
+ }
+
+ /**
+ * Returns the build metadata.
+ *
+ * @param isPlus Prepend a plus sign, if true
.
+ * @return The build metadata, if any.
+ */
+ public static String getBuildMetadata(final boolean isPlus) {
+ if (buildmeta.length() > 0) {
+ if (isPlus) {
+ return '+' + buildmeta;
+ } else {
+ return buildmeta;
+ }
+ }
+
+ return "";
+ }
+
+ /**
+ * Returns the build metadata.
+ *
+ * @return The build metadata, if any.
+ */
+ public static String getBuildMetadata() {
+ return getBuildMetadata(false);
+ }
+}
\ No newline at end of file
diff --git a/example/src/main/java/net/thauvin/erik/semver/example/Example.java b/example/src/main/java/net/thauvin/erik/semver/example/Example.java
index f854c44..d21035a 100644
--- a/example/src/main/java/net/thauvin/erik/semver/example/Example.java
+++ b/example/src/main/java/net/thauvin/erik/semver/example/Example.java
@@ -38,28 +38,26 @@ import java.text.SimpleDateFormat;
/**
* The Example
class.
*
- * @author Erik C. Thauvin
+ * @author Erik C. Thauvin
* @created 2016-01-13
* @since 1.0
*/
@Version(properties = "version.properties")
-public class Example
-{
- public static void main(final String... args)
- {
- final SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy 'at' HH:mm:ss z");
+public class Example {
+ public static void main(final String... args) {
+ final SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy 'at' HH:mm:ss z");
- System.out.println("-----------------------------------------------------");
+ System.out.println("-----------------------------------------------------");
- System.out.println(" " + GeneratedVersion.getProject() + ' ' + GeneratedVersion.getVersion());
+ System.out.println(" " + GeneratedVersion.getProject() + ' ' + GeneratedVersion.getVersion());
- System.out.println(" Built on: " + sdf.format(GeneratedVersion.getBuildDate()));
- System.out.println(" Major: " + GeneratedVersion.getMajor());
- System.out.println(" Minor: " + GeneratedVersion.getMinor());
- System.out.println(" Patch: " + GeneratedVersion.getPatch());
- System.out.println(" PreRelease: " + GeneratedVersion.getPreRelease());
- System.out.println(" BuildMetaData: " + GeneratedVersion.getBuildMetadata());
+ System.out.println(" Built on: " + sdf.format(GeneratedVersion.getBuildDate()));
+ System.out.println(" Major: " + GeneratedVersion.getMajor());
+ System.out.println(" Minor: " + GeneratedVersion.getMinor());
+ System.out.println(" Patch: " + GeneratedVersion.getPatch());
+ System.out.println(" PreRelease: " + GeneratedVersion.getPreRelease());
+ System.out.println(" BuildMetaData: " + GeneratedVersion.getBuildMetadata());
- System.out.println("-----------------------------------------------------");
- }
+ System.out.println("-----------------------------------------------------");
+ }
}
\ No newline at end of file
diff --git a/example/version.properties b/example/version.properties
index bb3db8e..c99f89d 100644
--- a/example/version.properties
+++ b/example/version.properties
@@ -1,8 +1,7 @@
-#
-#Wed Jul 06 19:28:58 PDT 2016
+#Mon, 18 Jul 2016 17:33:54 -0700
version.prerelease=beta
version.project=Example
version.minor=1
version.buildmeta=
-version.patch=45
+version.patch=49
version.major=3
diff --git a/semver.ipr b/semver.ipr
index 47c9c27..26de8dd 100644
--- a/semver.ipr
+++ b/semver.ipr
@@ -58,10 +58,27 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -199,6 +228,7 @@
+
@@ -334,6 +364,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/net/thauvin/erik/semver/Constants.java b/src/main/java/net/thauvin/erik/semver/Constants.java
index 9e6f587..25ada5d 100644
--- a/src/main/java/net/thauvin/erik/semver/Constants.java
+++ b/src/main/java/net/thauvin/erik/semver/Constants.java
@@ -34,85 +34,83 @@ package net.thauvin.erik.semver;
/**
* The Constants
class holds the constant variables used throughout this project.
*
- * @author Erik C. Thauvin
+ * @author Erik C. Thauvin
* @created 2016-01-13
* @since 1.0
*/
-public final class Constants
-{
- /**
- * The default class name.
- */
- public static final String DEFAULT_CLASS_NAME = "GeneratedVersion";
+public final class Constants {
+ /**
+ * The default class name.
+ */
+ public static final String DEFAULT_CLASS_NAME = "GeneratedVersion";
- /**
- * The default major version.
- */
- public static final int DEFAULT_MAJOR = 1;
+ /**
+ * The default major version.
+ */
+ public static final int DEFAULT_MAJOR = 1;
- /**
- * The default minor version.
- */
- public static final int DEFAULT_MINOR = 0;
+ /**
+ * The default minor version.
+ */
+ public static final int DEFAULT_MINOR = 0;
- /**
- * The default patch version.
- */
- public static final int DEFAULT_PATCH = 0;
+ /**
+ * The default patch version.
+ */
+ public static final int DEFAULT_PATCH = 0;
- /**
- * The default Velocity template.
- */
- public static final String DEFAULT_TEMPLATE = "version.vm";
+ /**
+ * The default Velocity template.
+ */
+ public static final String DEFAULT_TEMPLATE = "version.vm";
- /**
- * The empty string.
- */
- public static final String EMPTY = "";
+ /**
+ * The empty string.
+ */
+ public static final String EMPTY = "";
- /**
- * The build metadata property key.
- */
- public static final String KEY_VERSION_BUILDMETA = "version.buildmeta";
+ /**
+ * The build metadata property key.
+ */
+ public static final String KEY_VERSION_BUILDMETA = "version.buildmeta";
- /**
- * The major version property key.
- */
- public static final String KEY_VERSION_MAJOR = "version.major";
+ /**
+ * The major version property key.
+ */
+ public static final String KEY_VERSION_MAJOR = "version.major";
- /**
- * The minor version property key.
- */
- public static final String KEY_VERSION_MINOR = "version.minor";
+ /**
+ * The minor version property key.
+ */
+ public static final String KEY_VERSION_MINOR = "version.minor";
- /**
- * The patch version property key.
- */
- public static final String KEY_VERSION_PATCH = "version.patch";
+ /**
+ * The patch version property key.
+ */
+ public static final String KEY_VERSION_PATCH = "version.patch";
- /**
- * The pre-release version property key.
- */
- public static final String KEY_VERSION_PRERELEASE = "version.prerelease";
+ /**
+ * The pre-release version property key.
+ */
+ public static final String KEY_VERSION_PRERELEASE = "version.prerelease";
- /**
- * The project property key.
- */
- public static final String KEY_VERSION_PROJECT = "version.project";
+ /**
+ * The project property key.
+ */
+ public static final String KEY_VERSION_PROJECT = "version.project";
- /**
- * The velocity properties name.
- */
- public static final String VELOCITY_PROPERTIES = "velocity.properties";
+ /**
+ * The velocity properties name.
+ */
+ public static final String VELOCITY_PROPERTIES = "velocity.properties";
- /**
- * Disables the default constructor.
- *
- * @throws UnsupportedOperationException if the constructor is called.
- */
- private Constants()
- throws UnsupportedOperationException
- {
- throw new UnsupportedOperationException("Illegal constructor call.");
- }
+ /**
+ * Disables the default constructor.
+ *
+ * @throws UnsupportedOperationException if the constructor is called.
+ */
+ private Constants()
+ throws UnsupportedOperationException {
+ throw new UnsupportedOperationException("Illegal constructor call.");
+ }
}
\ No newline at end of file
diff --git a/src/main/java/net/thauvin/erik/semver/Version.java b/src/main/java/net/thauvin/erik/semver/Version.java
index fd1c986..15c1aa8 100644
--- a/src/main/java/net/thauvin/erik/semver/Version.java
+++ b/src/main/java/net/thauvin/erik/semver/Version.java
@@ -39,41 +39,40 @@ import java.lang.annotation.Target;
/**
* The Version
class implements the annotation interface.
*
- * @author Erik C. Thauvin
+ * @author Erik C. Thauvin
* @created 2016-01-13
* @since 1.0
*/
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.TYPE)
-public @interface Version
-{
- String buildmeta() default Constants.EMPTY;
+public @interface Version {
+ String buildmeta() default Constants.EMPTY;
- String buildmetaKey() default Constants.KEY_VERSION_BUILDMETA;
+ String buildmetaKey() default Constants.KEY_VERSION_BUILDMETA;
- String className() default Constants.DEFAULT_CLASS_NAME;
+ String className() default Constants.DEFAULT_CLASS_NAME;
- int major() default Constants.DEFAULT_MAJOR;
+ int major() default Constants.DEFAULT_MAJOR;
- String majorKey() default Constants.KEY_VERSION_MAJOR;
+ String majorKey() default Constants.KEY_VERSION_MAJOR;
- int minor() default Constants.DEFAULT_MINOR;
+ int minor() default Constants.DEFAULT_MINOR;
- String minorKey() default Constants.KEY_VERSION_MINOR;
+ String minorKey() default Constants.KEY_VERSION_MINOR;
- int patch() default Constants.DEFAULT_PATCH;
+ int patch() default Constants.DEFAULT_PATCH;
- String patchKey() default Constants.KEY_VERSION_PATCH;
+ String patchKey() default Constants.KEY_VERSION_PATCH;
- String prerelease() default Constants.EMPTY;
+ String prerelease() default Constants.EMPTY;
- String prereleaseKey() default Constants.KEY_VERSION_PRERELEASE;
+ String prereleaseKey() default Constants.KEY_VERSION_PRERELEASE;
- String project() default Constants.EMPTY;
+ String project() default Constants.EMPTY;
- String projectKey() default Constants.KEY_VERSION_PROJECT;
+ String projectKey() default Constants.KEY_VERSION_PROJECT;
- String properties() default Constants.EMPTY;
+ String properties() default Constants.EMPTY;
- String template() default Constants.DEFAULT_TEMPLATE;
+ String template() default Constants.DEFAULT_TEMPLATE;
}
\ No newline at end of file
diff --git a/src/main/java/net/thauvin/erik/semver/VersionInfo.java b/src/main/java/net/thauvin/erik/semver/VersionInfo.java
index 6da9672..678573d 100644
--- a/src/main/java/net/thauvin/erik/semver/VersionInfo.java
+++ b/src/main/java/net/thauvin/erik/semver/VersionInfo.java
@@ -34,203 +34,186 @@ package net.thauvin.erik.semver;
/**
* The VersionInfo
class is used to hold and retrieve the semantic version values.
*
- * @author Erik C. Thauvin
+ * @author Erik C. Thauvin
* @created 2016-01-16
* @since 1.0
*/
-public class VersionInfo
-{
- private final long epoch = System.currentTimeMillis();
+public class VersionInfo {
+ private final long epoch = System.currentTimeMillis();
- private String buildmeta;
+ private String buildmeta;
- private int major;
+ private int major;
- private int minor;
+ private int minor;
- private int patch;
+ private int patch;
- private String prerelease;
+ private String prerelease;
- private String project;
+ private String project;
- /**
- * Creates a new object with default values
- */
- public VersionInfo()
- {
- major = Constants.DEFAULT_MAJOR;
- minor = Constants.DEFAULT_MINOR;
- patch = Constants.DEFAULT_PATCH;
- buildmeta = Constants.EMPTY;
- prerelease = Constants.EMPTY;
- project = Constants.EMPTY;
- }
+ /**
+ * Creates a new object with default values
+ */
+ public VersionInfo() {
+ major = Constants.DEFAULT_MAJOR;
+ minor = Constants.DEFAULT_MINOR;
+ patch = Constants.DEFAULT_PATCH;
+ buildmeta = Constants.EMPTY;
+ prerelease = Constants.EMPTY;
+ project = Constants.EMPTY;
+ }
- /**
- * Creates a new object with values from a {@link net.thauvin.erik.semver.Version Version} object.
- *
- * @param version The version object.
- */
- public VersionInfo(final Version version)
- {
- major = version.major();
- minor = version.minor();
- patch = version.patch();
- buildmeta = version.buildmeta();
- prerelease = version.prerelease();
- project = version.project();
- }
+ /**
+ * Creates a new object with values from a {@link net.thauvin.erik.semver.Version Version} object.
+ *
+ * @param version The version object.
+ */
+ public VersionInfo(final Version version) {
+ major = version.major();
+ minor = version.minor();
+ patch = version.patch();
+ buildmeta = version.buildmeta();
+ prerelease = version.prerelease();
+ project = version.project();
+ }
- /**
- * Returns the build metadata.
- *
- * @return The build metadata.
- */
- public String getBuildMetadata()
- {
- return buildmeta;
- }
+ /**
+ * Returns the build metadata.
+ *
+ * @return The build metadata.
+ */
+ public String getBuildMetadata() {
+ return buildmeta;
+ }
- /**
- * Sets the build metadata.
- *
- * @param buildmeta The new build metadata.
- */
- public void setBuildMetadata(final String buildmeta)
- {
- this.buildmeta = buildmeta;
- }
+ /**
+ * Sets the build metadata.
+ *
+ * @param buildmeta The new build metadata.
+ */
+ public void setBuildMetadata(final String buildmeta) {
+ this.buildmeta = buildmeta;
+ }
- /**
- * Returns the build epoch/Unix timestamp.
- *
- * @return The build epoch.
- */
- public long getEpoch()
- {
- return epoch;
- }
+ /**
+ * Returns the build epoch/Unix timestamp.
+ *
+ * @return The build epoch.
+ */
+ public long getEpoch() {
+ return epoch;
+ }
- /**
- * Returns the major version.
- *
- * @return The major version.
- */
- public int getMajor()
- {
- return major;
- }
+ /**
+ * Returns the major version.
+ *
+ * @return The major version.
+ */
+ public int getMajor() {
+ return major;
+ }
- /**
- * Sets the major version.
- *
- * @param major The new major version.
- */
- public void setMajor(final int major)
- {
- this.major = major;
- }
+ /**
+ * Sets the major version.
+ *
+ * @param major The new major version.
+ */
+ public void setMajor(final int major) {
+ this.major = major;
+ }
- /**
- * Returns the major version.
- *
- * @return The major version.
- */
- public int getMinor()
- {
- return minor;
- }
+ /**
+ * Returns the major version.
+ *
+ * @return The major version.
+ */
+ public int getMinor() {
+ return minor;
+ }
- /**
- * Sets the minor version.
- *
- * @param minor The new minor version.
- */
- public void setMinor(final int minor)
- {
- this.minor = minor;
- }
+ /**
+ * Sets the minor version.
+ *
+ * @param minor The new minor version.
+ */
+ public void setMinor(final int minor) {
+ this.minor = minor;
+ }
- /**
- * Returns the patch version.
- *
- * @return The patch version.
- */
- public int getPatch()
- {
- return patch;
- }
+ /**
+ * Returns the patch version.
+ *
+ * @return The patch version.
+ */
+ public int getPatch() {
+ return patch;
+ }
- /**
- * Sets the patch version.
- *
- * @param patch The new patch version.
- */
- public void setPatch(final int patch)
- {
- this.patch = patch;
- }
+ /**
+ * Sets the patch version.
+ *
+ * @param patch The new patch version.
+ */
+ public void setPatch(final int patch) {
+ this.patch = patch;
+ }
- /**
- * Returns the pre-release version.
- *
- * @return The pre-release version.
- */
- public String getPreRelease()
- {
- return prerelease;
- }
+ /**
+ * Returns the pre-release version.
+ *
+ * @return The pre-release version.
+ */
+ public String getPreRelease() {
+ return prerelease;
+ }
- /**
- * Sets the pre-release version.
- *
- * @param prerelease The new pre-release version.
- */
- public void setPreRelease(final String prerelease)
- {
- this.prerelease = prerelease;
- }
+ /**
+ * Sets the pre-release version.
+ *
+ * @param prerelease The new pre-release version.
+ */
+ public void setPreRelease(final String prerelease) {
+ this.prerelease = prerelease;
+ }
- /**
- * Returns the project name.
- *
- * @return The project name.
- */
- public String getProject()
- {
- return project;
- }
+ /**
+ * Returns the project name.
+ *
+ * @return The project name.
+ */
+ public String getProject() {
+ return project;
+ }
- /**
- * Sets the project name.
- *
- * @param project The new project name.
- */
- public void setProject(final String project)
- {
- this.project = project;
- }
+ /**
+ * Sets the project name.
+ *
+ * @param project The new project name.
+ */
+ public void setProject(final String project) {
+ this.project = project;
+ }
- /**
- * Returns the full version string.
- *
- * Formatted as:
- *
MAJOR.MINOR.PATCH[-PRERELEASE][+BUILDMETADATA]
- *
- * For example:
- *
- * 1.0.0
- * 1.0.0-beta
- * 1.0.0+20160124144700
- * 1.0.0-alpha+001
- *
- *
- * @return The version string.
- */
- public String getVersion()
- {
- return Integer.toString(major) + '.' + Integer.toString(minor) + '.' + Integer.toString(patch) + (
- prerelease.length() > 0 ? '-' + prerelease : "") + (buildmeta.length() > 0 ? '+' + buildmeta : "");
- }
+ /**
+ * Returns the full version string.
+ *
+ * Formatted as:
+ *
MAJOR.MINOR.PATCH[-PRERELEASE][+BUILDMETADATA]
+ *
+ * For example:
+ *
+ * 1.0.0
+ * 1.0.0-beta
+ * 1.0.0+20160124144700
+ * 1.0.0-alpha+001
+ *
+ *
+ * @return The version string.
+ */
+ public String getVersion() {
+ return Integer.toString(major) + '.' + Integer.toString(minor) + '.' + Integer.toString(patch) + (
+ prerelease.length() > 0 ? '-' + prerelease : "") + (buildmeta.length() > 0 ? '+' + buildmeta : "");
+ }
}
\ No newline at end of file
diff --git a/src/main/java/net/thauvin/erik/semver/VersionProcessor.java b/src/main/java/net/thauvin/erik/semver/VersionProcessor.java
index 4a386f8..e62f6e0 100644
--- a/src/main/java/net/thauvin/erik/semver/VersionProcessor.java
+++ b/src/main/java/net/thauvin/erik/semver/VersionProcessor.java
@@ -52,200 +52,169 @@ import java.util.Set;
/**
* The VersionProcessor
class implements a semantic version annotation processor.
*
- * @author Erik C. Thauvin
+ * @author Erik C. Thauvin
* @created 2016-01-13
* @since 1.0
*/
-public class VersionProcessor extends AbstractProcessor
-{
- private Filer filer;
+public class VersionProcessor extends AbstractProcessor {
+ private Filer filer;
- private Messager messager;
+ private Messager messager;
- private void error(final String s)
- {
- log(Diagnostic.Kind.ERROR, s);
- }
+ private void error(final String s) {
+ log(Diagnostic.Kind.ERROR, s);
+ }
- private void error(final String s, final Throwable t)
- {
- messager.printMessage(Diagnostic.Kind.ERROR, (t != null ? t.toString() : s));
- }
+ private void error(final String s, final Throwable t) {
+ messager.printMessage(Diagnostic.Kind.ERROR, (t != null ? t.toString() : s));
+ }
- private VersionInfo findValues(final Version version)
- throws IOException
- {
- final VersionInfo versionInfo;
+ private VersionInfo findValues(final Version version)
+ throws IOException {
+ final VersionInfo versionInfo;
- if (version.properties().length() > 0)
- {
- versionInfo = new VersionInfo();
+ if (version.properties().length() > 0) {
+ versionInfo = new VersionInfo();
- final File propsFile = new File(version.properties());
- if (propsFile.exists())
- {
- note("Found properties: " + propsFile);
- final Properties p = new Properties();
+ final File propsFile = new File(version.properties());
+ if (propsFile.exists()) {
+ note("Found properties: " + propsFile);
+ final Properties p = new Properties();
- try (FileReader reader = new FileReader(propsFile))
- {
- p.load(reader);
+ try (FileReader reader = new FileReader(propsFile)) {
+ p.load(reader);
- versionInfo.setProject(p.getProperty(version.projectKey(), Constants.EMPTY));
- versionInfo.setMajor(parseIntProperty(p, version.majorKey(), Constants.DEFAULT_MAJOR));
- versionInfo.setMinor(parseIntProperty(p, version.minorKey(), Constants.DEFAULT_MINOR));
- versionInfo.setPatch(parseIntProperty(p, version.patchKey(), Constants.DEFAULT_PATCH));
- versionInfo.setBuildMetadata(p.getProperty(version.buildmetaKey(), Constants.EMPTY));
- versionInfo.setPreRelease(p.getProperty(version.prereleaseKey(), Constants.EMPTY));
- }
- }
- else
- {
- error("Could not find: " + propsFile);
- throw new FileNotFoundException(propsFile + " (The system cannot find the file specified)");
- }
- }
- else
- {
- versionInfo = new VersionInfo(version);
- }
+ versionInfo.setProject(p.getProperty(version.projectKey(), Constants.EMPTY));
+ versionInfo.setMajor(parseIntProperty(p, version.majorKey(), Constants.DEFAULT_MAJOR));
+ versionInfo.setMinor(parseIntProperty(p, version.minorKey(), Constants.DEFAULT_MINOR));
+ versionInfo.setPatch(parseIntProperty(p, version.patchKey(), Constants.DEFAULT_PATCH));
+ versionInfo.setBuildMetadata(p.getProperty(version.buildmetaKey(), Constants.EMPTY));
+ versionInfo.setPreRelease(p.getProperty(version.prereleaseKey(), Constants.EMPTY));
+ }
+ } else {
+ error("Could not find: " + propsFile);
+ throw new FileNotFoundException(propsFile + " (The system cannot find the file specified)");
+ }
+ } else {
+ versionInfo = new VersionInfo(version);
+ }
- return versionInfo;
- }
+ return versionInfo;
+ }
- /**
- * {@inheritDoc}
- */
- @Override
- public Set getSupportedAnnotationTypes()
- {
- final Set result = new HashSet<>();
- result.add(Version.class.getCanonicalName());
- return result;
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Set getSupportedAnnotationTypes() {
+ final Set result = new HashSet<>();
+ result.add(Version.class.getCanonicalName());
+ return result;
+ }
- /**
- * {@inheritDoc}
- */
- @Override
- public SourceVersion getSupportedSourceVersion()
- {
- return SourceVersion.RELEASE_8;
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public SourceVersion getSupportedSourceVersion() {
+ return SourceVersion.RELEASE_8;
+ }
- /**
- * {@inheritDoc}
- */
- @Override
- public synchronized void init(final ProcessingEnvironment processingEnv)
- {
- super.init(processingEnv);
- filer = processingEnv.getFiler();
- messager = processingEnv.getMessager();
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public synchronized void init(final ProcessingEnvironment processingEnv) {
+ super.init(processingEnv);
+ filer = processingEnv.getFiler();
+ messager = processingEnv.getMessager();
+ }
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean process(final Set extends TypeElement> annotations, final RoundEnvironment roundEnv)
- {
- for (final Element element : roundEnv.getElementsAnnotatedWith(Version.class))
- {
- final Version version = element.getAnnotation(Version.class);
- if (element.getKind() == ElementKind.CLASS)
- {
- final Element enclosingElement = element.getEnclosingElement();
- if (enclosingElement.getKind() == ElementKind.PACKAGE)
- {
- final PackageElement packageElement = (PackageElement) enclosingElement;
- try
- {
- final VersionInfo versionInfo = findValues(version);
- note("Found version: " + versionInfo.getVersion());
- writeTemplate(packageElement.getQualifiedName().toString(),
- version.className(),
- versionInfo,
- version.template());
- }
- catch (IOException e)
- {
- error("IOException occurred while running the annotation processor", e);
- }
- }
- }
- }
- return true;
- }
+ private void log(final Diagnostic.Kind kind, final String s) {
+ messager.printMessage(kind, '[' + VersionProcessor.class.getSimpleName() + "] " + s);
+ }
- private void log(final Diagnostic.Kind kind, final String s)
- {
- messager.printMessage(kind, '[' + VersionProcessor.class.getSimpleName() + "] " + s);
- }
+ private void note(final String s) {
+ log(Diagnostic.Kind.NOTE, s);
+ }
- private void note(final String s)
- {
- log(Diagnostic.Kind.NOTE, s);
- }
+ private int parseIntProperty(final Properties p, final String property, final int defaultValue) {
+ try {
+ return Integer.parseInt(p.getProperty(property, Integer.toString(defaultValue)));
+ } catch (NumberFormatException ignore) {
+ warn("Invalid property value: " + property);
+ return defaultValue;
+ }
+ }
- private int parseIntProperty(final Properties p, final String property, final int defaultValue)
- {
- try
- {
- return Integer.parseInt(p.getProperty(property, Integer.toString(defaultValue)));
- }
- catch (NumberFormatException ignore)
- {
- warn("Invalid property value: " + property);
- return defaultValue;
- }
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean process(final Set extends TypeElement> annotations, final RoundEnvironment roundEnv) {
+ for (final Element element : roundEnv.getElementsAnnotatedWith(Version.class)) {
+ final Version version = element.getAnnotation(Version.class);
+ if (element.getKind() == ElementKind.CLASS) {
+ final Element enclosingElement = element.getEnclosingElement();
+ if (enclosingElement.getKind() == ElementKind.PACKAGE) {
+ final PackageElement packageElement = (PackageElement) enclosingElement;
+ try {
+ final VersionInfo versionInfo = findValues(version);
+ note("Found version: " + versionInfo.getVersion());
+ writeTemplate(packageElement.getQualifiedName().toString(),
+ version.className(),
+ versionInfo,
+ version.template());
+ } catch (IOException e) {
+ error("IOException occurred while running the annotation processor", e);
+ }
+ }
+ }
+ }
+ return true;
+ }
- private void warn(final String s)
- {
- log(Diagnostic.Kind.WARNING, s);
- }
+ private void warn(final String s) {
+ log(Diagnostic.Kind.WARNING, s);
+ }
- private void writeTemplate(final String packageName, final String className, final VersionInfo versionInfo,
- final String template)
- throws IOException
- {
- final Properties p = new Properties();
- final URL url = this.getClass().getClassLoader().getResource(Constants.VELOCITY_PROPERTIES);
+ private void writeTemplate(final String packageName,
+ final String className,
+ final VersionInfo versionInfo,
+ final String template)
+ throws IOException {
+ final Properties p = new Properties();
+ final URL url = this.getClass().getClassLoader().getResource(Constants.VELOCITY_PROPERTIES);
- if (url != null)
- {
- p.load(url.openStream());
+ if (url != null) {
+ p.load(url.openStream());
- final VelocityEngine ve = new VelocityEngine(p);
- ve.init();
+ final VelocityEngine ve = new VelocityEngine(p);
+ ve.init();
- final VelocityContext vc = new VelocityContext();
- vc.put("packageName", packageName);
- vc.put("className", className);
- vc.put("project", versionInfo.getProject());
- vc.put("buildmeta", versionInfo.getBuildMetadata());
- vc.put("epoch", versionInfo.getEpoch());
- vc.put("patch", versionInfo.getPatch());
- vc.put("major", versionInfo.getMajor());
- vc.put("minor", versionInfo.getMinor());
- vc.put("prerelease", versionInfo.getPreRelease());
+ final VelocityContext vc = new VelocityContext();
+ vc.put("packageName", packageName);
+ vc.put("className", className);
+ vc.put("project", versionInfo.getProject());
+ vc.put("buildmeta", versionInfo.getBuildMetadata());
+ vc.put("epoch", versionInfo.getEpoch());
+ vc.put("patch", versionInfo.getPatch());
+ vc.put("major", versionInfo.getMajor());
+ vc.put("minor", versionInfo.getMinor());
+ vc.put("prerelease", versionInfo.getPreRelease());
- final Template vt = ve.getTemplate(template);
+ final Template vt = ve.getTemplate(template);
- note("Loaded template: " + vt.getName());
+ note("Loaded template: " + vt.getName());
- final JavaFileObject jfo = filer.createSourceFile(packageName + '.' + className);
- try (final Writer writer = jfo.openWriter())
- {
- vt.merge(vc, writer);
- }
+ final JavaFileObject jfo = filer.createSourceFile(packageName + '.' + className);
+ try (final Writer writer = jfo.openWriter()) {
+ vt.merge(vc, writer);
+ }
- note("Generated source: " + jfo.getName());
- }
- else
- {
- error("Could not load '" + Constants.VELOCITY_PROPERTIES + "' from jar.");
- }
- }
+ note("Generated source: " + jfo.getName());
+ } else {
+ error("Could not load '" + Constants.VELOCITY_PROPERTIES + "' from jar.");
+ }
+ }
}
\ No newline at end of file