You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2018/02/26 05:47:10 UTC

groovy git commit: tidy up some @since version numbers

Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X fdcbd0078 -> 8f75f97fe


tidy up some @since version numbers


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8f75f97f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8f75f97f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8f75f97f

Branch: refs/heads/GROOVY_2_5_X
Commit: 8f75f97fe16a7c2469d6417585e0c93721f328bc
Parents: fdcbd00
Author: paulk <pa...@asert.com.au>
Authored: Mon Feb 26 15:46:58 2018 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Mon Feb 26 15:46:58 2018 +1000

----------------------------------------------------------------------
 src/main/groovy/groovy/lang/IntRange.java              |  2 +-
 src/main/groovy/groovy/lang/NumberRange.java           |  2 +-
 src/main/groovy/groovy/transform/ImmutableBase.java    |  4 +---
 src/main/groovy/groovy/transform/ImmutableOptions.java |  6 +-----
 src/main/groovy/groovy/transform/KnownImmutable.java   |  2 +-
 src/main/groovy/groovy/transform/MapConstructor.java   |  2 --
 src/main/groovy/groovy/transform/NamedDelegate.java    |  7 +++++++
 src/main/groovy/groovy/transform/NamedParam.java       |  7 +++++++
 src/main/groovy/groovy/transform/NamedParams.java      |  5 +++++
 src/main/groovy/groovy/transform/PropertyOptions.java  |  2 +-
 src/main/groovy/groovy/transform/Sortable.java         |  4 +---
 src/main/groovy/groovy/transform/ToString.java         |  2 +-
 src/main/groovy/groovy/transform/TupleConstructor.java |  4 ++++
 .../groovy/groovy/transform/VisibilityOptions.java     |  2 +-
 src/main/groovy/groovy/transform/builder/Builder.java  |  4 ++++
 .../options/LegacyHashMapPropertyHandler.java          | 13 +++++++++++++
 .../groovy/groovy/transform/options/Visibility.java    |  5 +++++
 .../codehaus/groovy/runtime/DefaultGroovyMethods.java  |  4 ++--
 .../codehaus/groovy/runtime/EncodingGroovyMethods.java | 10 +++++-----
 .../main/java/groovy/json/DefaultJsonGenerator.java    |  4 ++--
 .../src/main/java/groovy/json/JsonBuilder.java         |  4 ++--
 .../src/main/java/groovy/json/JsonGenerator.java       |  6 +++---
 .../main/java/groovy/json/StreamingJsonBuilder.java    |  4 ++--
 23 files changed, 70 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/lang/IntRange.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/lang/IntRange.java b/src/main/groovy/groovy/lang/IntRange.java
index 1ca3820..9377098 100644
--- a/src/main/groovy/groovy/lang/IntRange.java
+++ b/src/main/groovy/groovy/lang/IntRange.java
@@ -194,7 +194,7 @@ public class IntRange extends AbstractList<Integer> implements Range<Integer> {
      *
      * @param stepSize the desired step size
      * @return a new NumberRange
-     * @since 2.5
+     * @since 2.5.0
      */
     public <T extends Number & Comparable> NumberRange by(T stepSize) {
         return new NumberRange(NumberRange.comparableNumber((Number)from), NumberRange.comparableNumber((Number)to), stepSize, inclusive);

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/lang/NumberRange.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/lang/NumberRange.java b/src/main/groovy/groovy/lang/NumberRange.java
index 92c6195..52ef856 100644
--- a/src/main/groovy/groovy/lang/NumberRange.java
+++ b/src/main/groovy/groovy/lang/NumberRange.java
@@ -47,7 +47,7 @@ import static org.codehaus.groovy.runtime.dgmimpl.NumberNumberPlus.plus;
  * 0..3 is deemed to be equal to 0.0..3.0 but they have different hashCode values,
  * so storing a value using one of these ranges couldn't be retrieved using the other.
  *
- * @since 2.5
+ * @since 2.5.0
  */
 public class NumberRange extends AbstractList<Comparable> implements Range<Comparable> {
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/ImmutableBase.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/ImmutableBase.java b/src/main/groovy/groovy/transform/ImmutableBase.java
index 21156b5..1ca32fc 100644
--- a/src/main/groovy/groovy/transform/ImmutableBase.java
+++ b/src/main/groovy/groovy/transform/ImmutableBase.java
@@ -43,7 +43,7 @@ import java.lang.annotation.Target;
  * @see MapConstructor
  * @see TupleConstructor
  * @see PropertyOptions
- * @since 2.5
+ * @since 2.5.0
  */
 @java.lang.annotation.Documented
 @Retention(RetentionPolicy.SOURCE)
@@ -72,8 +72,6 @@ public @interface ImmutableBase {
      *
      * If a method called {@code copyWith} that takes a single parameter already
      * exists in the class, then this setting is ignored, and no method is generated.
-     *
-     * @since 2.2.0
      */
     boolean copyWith() default false;
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/ImmutableOptions.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/ImmutableOptions.java b/src/main/groovy/groovy/transform/ImmutableOptions.java
index 6c1c200..6daf63e 100644
--- a/src/main/groovy/groovy/transform/ImmutableOptions.java
+++ b/src/main/groovy/groovy/transform/ImmutableOptions.java
@@ -31,7 +31,7 @@ import java.lang.annotation.Target;
  *
  * @see Immutable
  * @see ImmutablePropertyHandler
- * @since 2.5
+ * @since 2.5.0
  */
 @java.lang.annotation.Documented
 @Retention(RetentionPolicy.SOURCE)
@@ -55,8 +55,6 @@ public @interface ImmutableOptions {
      *     final String street
      * }
      * </pre>
-     *
-     * @since 1.8.7
      */
     Class[] knownImmutableClasses() default {};
 
@@ -73,8 +71,6 @@ public @interface ImmutableOptions {
      * }
      * ...
      * </pre>
-     *
-     * @since 2.1.0
      */
     String[] knownImmutables() default {};
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/KnownImmutable.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/KnownImmutable.java b/src/main/groovy/groovy/transform/KnownImmutable.java
index c7a349d..05b80c7 100644
--- a/src/main/groovy/groovy/transform/KnownImmutable.java
+++ b/src/main/groovy/groovy/transform/KnownImmutable.java
@@ -30,7 +30,7 @@ import java.lang.annotation.Target;
  * to list your class as one of the known immutable classes.
  *
  * @see Immutable
- * @since 2.5
+ * @since 2.5.0
  */
 @java.lang.annotation.Documented
 @Retention(RetentionPolicy.RUNTIME)

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/MapConstructor.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/MapConstructor.java b/src/main/groovy/groovy/transform/MapConstructor.java
index 8c13284..7401d36 100644
--- a/src/main/groovy/groovy/transform/MapConstructor.java
+++ b/src/main/groovy/groovy/transform/MapConstructor.java
@@ -194,8 +194,6 @@ public @interface MapConstructor {
 
     /**
      * If specified, must match the "id" attribute in a VisibilityOptions annotation to enable a custom visibility.
-     *
-     * @since 2.5.0
      */
     String visibilityId() default Undefined.STRING;
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/NamedDelegate.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/NamedDelegate.java b/src/main/groovy/groovy/transform/NamedDelegate.java
index baf54ff..e9a4489 100644
--- a/src/main/groovy/groovy/transform/NamedDelegate.java
+++ b/src/main/groovy/groovy/transform/NamedDelegate.java
@@ -23,6 +23,13 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+/**
+ * Marker interface used to indicate that the property names of the annotated parameter
+ * represent valid key names when using named arguments and that the property types
+ * are applicable for type checking purposes.
+ *
+ * @since 2.5.0
+ */
 @Retention(RetentionPolicy.SOURCE)
 @Target(ElementType.PARAMETER)
 public @interface NamedDelegate {

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/NamedParam.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/NamedParam.java b/src/main/groovy/groovy/transform/NamedParam.java
index 661397e..78d98d8 100644
--- a/src/main/groovy/groovy/transform/NamedParam.java
+++ b/src/main/groovy/groovy/transform/NamedParam.java
@@ -23,6 +23,13 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+/**
+ * Marker interface used to indicate that the name of the annotated parameter
+ * (or specified optional name) is a valid key name when using named arguments
+ * and that the parameter type is applicable for type checking purposes.
+ *
+ * @since 2.5.0
+ */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.PARAMETER)
 public @interface NamedParam {

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/NamedParams.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/NamedParams.java b/src/main/groovy/groovy/transform/NamedParams.java
index 646b66d..e61d9b4 100644
--- a/src/main/groovy/groovy/transform/NamedParams.java
+++ b/src/main/groovy/groovy/transform/NamedParams.java
@@ -23,6 +23,11 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+/**
+ * Collector annotation for {@link NamedParam}.
+ *
+ * @since 2.5.0
+ */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.PARAMETER)
 public @interface NamedParams {

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/PropertyOptions.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/PropertyOptions.java b/src/main/groovy/groovy/transform/PropertyOptions.java
index 12069c5..02bbe81 100644
--- a/src/main/groovy/groovy/transform/PropertyOptions.java
+++ b/src/main/groovy/groovy/transform/PropertyOptions.java
@@ -33,7 +33,7 @@ import java.lang.annotation.Target;
  * @see ImmutableBase
  * @see MapConstructor
  * @see TupleConstructor
- * @since 2.5
+ * @since 2.5.0
  */
 @java.lang.annotation.Documented
 @Retention(RetentionPolicy.SOURCE)

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/Sortable.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/Sortable.java b/src/main/groovy/groovy/transform/Sortable.java
index b235bfa..060aeb0 100644
--- a/src/main/groovy/groovy/transform/Sortable.java
+++ b/src/main/groovy/groovy/transform/Sortable.java
@@ -149,9 +149,6 @@ import java.lang.annotation.Target;
  * assert leaderBoard.points == [80, 50, 30]
  *
  * </pre>
- *
- * @author Andres Almiray
- * @author Paul King
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ElementType.TYPE})
@@ -173,6 +170,7 @@ public @interface Sortable {
 
     /**
      * Set to true so that comparator uses reversed natural order.
+     *
      * @since 2.5.0
      */
     boolean reversed() default false;

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/ToString.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/ToString.java b/src/main/groovy/groovy/transform/ToString.java
index 4807924..9a9335f 100644
--- a/src/main/groovy/groovy/transform/ToString.java
+++ b/src/main/groovy/groovy/transform/ToString.java
@@ -334,7 +334,7 @@ public @interface ToString {
      * JavaBean properties come after any Groovy properties but before any fields for a given class
      * (unless 'includes' is used to determine the order).
      *
-     * @since 2.5
+     * @since 2.5.0
      */
     boolean allProperties() default true;
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/TupleConstructor.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/TupleConstructor.java b/src/main/groovy/groovy/transform/TupleConstructor.java
index 651f2ca..770ae9b 100644
--- a/src/main/groovy/groovy/transform/TupleConstructor.java
+++ b/src/main/groovy/groovy/transform/TupleConstructor.java
@@ -290,6 +290,8 @@ public @interface TupleConstructor {
      * Only the constructor containing all arguments will be provided.
      * In particular, a no-arg constructor won't be provided and since this is currently
      * used by Groovy when using named-arguments, the named-argument style won't be available.
+     *
+     * @since 2.5.0
      */
     boolean defaults() default true;
 
@@ -298,6 +300,8 @@ public @interface TupleConstructor {
      * By setting {@code useSetters=true} then a writable property will be set using its setter.
      * If turning on this flag we recommend that setters that might be called are
      * made null-safe wrt the parameter.
+     *
+     * @since 2.5.0
      */
     boolean useSetters() default false;
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/VisibilityOptions.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/VisibilityOptions.java b/src/main/groovy/groovy/transform/VisibilityOptions.java
index be1f112..314fd26 100644
--- a/src/main/groovy/groovy/transform/VisibilityOptions.java
+++ b/src/main/groovy/groovy/transform/VisibilityOptions.java
@@ -28,7 +28,7 @@ import java.lang.annotation.Target;
 /**
  * Marker annotation used in the context of AST transformations to provide a custom visibility.
  *
- * @since 2.5
+ * @since 2.5.0
  */
 @java.lang.annotation.Documented
 @Retention(RetentionPolicy.SOURCE)

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/builder/Builder.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/builder/Builder.java b/src/main/groovy/groovy/transform/builder/Builder.java
index 93b6090..4389dc4 100644
--- a/src/main/groovy/groovy/transform/builder/Builder.java
+++ b/src/main/groovy/groovy/transform/builder/Builder.java
@@ -131,11 +131,15 @@ public @interface Builder {
      * By setting {@code useSetters=true} then a writable property will be set using its setter.
      * If turning on this flag we recommend that setters that might be called are
      * made null-safe wrt the parameter.
+     *
+     * @since 2.5.0
      */
     boolean useSetters() default false;
 
     /**
      * Generate builder methods for properties from super classes.
+     *
+     * @since 2.5.0
      */
     boolean includeSuperProperties() default false;
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/options/LegacyHashMapPropertyHandler.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/options/LegacyHashMapPropertyHandler.java b/src/main/groovy/groovy/transform/options/LegacyHashMapPropertyHandler.java
index ac3c364..64f3ebf 100644
--- a/src/main/groovy/groovy/transform/options/LegacyHashMapPropertyHandler.java
+++ b/src/main/groovy/groovy/transform/options/LegacyHashMapPropertyHandler.java
@@ -44,6 +44,19 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.isOneX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.isTrueX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
 
+/**
+ * The {@code @Immutable} transformation in earlier versions of Groovy tried to be smart
+ * in the case of an immutable class with a single HashMap property, the supplied Map constructor
+ * tried to be compatible with both expected tuple behavior and expected named-argument behavior
+ * by peeking into the supplied map and guessing as to which approach might be applicable.
+ * Recent versions of Groovy now allow both {@code @TupleConstructor} and {@code @MapConstructor}
+ * annotations to co-exist which provide's a more flexible solution to this problem. While more
+ * flexible, the new approach isn't fully compatible with the previous approach. If for some
+ * reason you need the old behavior, you can try this property handler. Some features of the
+ * new approach won't be available to you.
+ *
+ * @since 2.5.0
+ */
 public class LegacyHashMapPropertyHandler extends ImmutablePropertyHandler {
     private static final ClassNode HMAP_TYPE = makeWithoutCaching(HashMap.class, false);
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/groovy/groovy/transform/options/Visibility.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/options/Visibility.java b/src/main/groovy/groovy/transform/options/Visibility.java
index d95c338..667707a 100644
--- a/src/main/groovy/groovy/transform/options/Visibility.java
+++ b/src/main/groovy/groovy/transform/options/Visibility.java
@@ -20,6 +20,11 @@ package groovy.transform.options;
 
 import java.lang.reflect.Modifier;
 
+/**
+ * Indicates the visibility of a node.
+ *
+ * @since 2.5.0
+ */
 public enum Visibility {
     PUBLIC(Modifier.PUBLIC),
     PROTECTED(Modifier.PROTECTED),

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index ef517b4..c3f0550 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -4955,7 +4955,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @param self a Map to be modified
      * @param condition a 1 or 2 arg Closure condition applying on the entries
      * @return <tt>true</tt> if this map changed as a result of the call
-     * @since 2.5
+     * @since 2.5.0
      */
     public static <K, V> boolean retainAll(Map<K, V> self, @ClosureParams(MapEntryOrKeyValue.class) Closure condition) {
         Iterator<Map.Entry<K, V>> iter = self.entrySet().iterator();
@@ -5018,7 +5018,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @param self a Map to be modified
      * @param condition a 1 or 2 arg Closure condition applying on the entries
      * @return <tt>true</tt> if this map changed as a result of the call
-     * @since 2.5
+     * @since 2.5.0
      */
     public static <K, V> boolean removeAll(Map<K, V> self, @ClosureParams(MapEntryOrKeyValue.class) Closure condition) {
         Iterator<Map.Entry<K, V>> iter = self.entrySet().iterator();

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
index 44a312a..fdfc3a5 100644
--- a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
@@ -169,7 +169,7 @@ public class EncodingGroovyMethods {
      * @param data Byte array to be encoded
      * @return object which will write the Base64 URL and Filename Safe encoding of the byte array
      * @see org.codehaus.groovy.runtime.EncodingGroovyMethods#encodeBase64Url(Byte[], boolean)
-     * @since 2.5
+     * @since 2.5.0
      */
     public static Writable encodeBase64Url(Byte[] data) {
         return encodeBase64Url(data, false);
@@ -184,7 +184,7 @@ public class EncodingGroovyMethods {
      * @param data Byte array to be encoded
      * @param pad whether or not the encoded data should be padded
      * @return object which will write the Base64 URL and Filename Safe encoding of the byte array
-     * @since 2.5
+     * @since 2.5.0
      */
     public static Writable encodeBase64Url(Byte[] data, boolean pad) {
         return encodeBase64Url(DefaultTypeTransformation.convertToByteArray(data), pad);
@@ -203,7 +203,7 @@ public class EncodingGroovyMethods {
      * @param data Byte array to be encoded
      * @return object which will write the Base64 URL and Filename Safe encoding of the byte array
      * @see org.codehaus.groovy.runtime.EncodingGroovyMethods#encodeBase64Url(byte[], boolean)
-     * @since 2.5
+     * @since 2.5.0
      */
     public static Writable encodeBase64Url(final byte[] data) {
         return encodeBase64Url(data, false);
@@ -218,7 +218,7 @@ public class EncodingGroovyMethods {
      * @param data Byte array to be encoded
      * @param pad whether or not the encoded data should be padded
      * @return object which will write the Base64 URL and Filename Safe encoding of the byte array
-     * @since 2.5
+     * @since 2.5.0
      */
     public static Writable encodeBase64Url(final byte[] data, final boolean pad) {
         return encodeBase64(data, false, true, pad);
@@ -240,7 +240,7 @@ public class EncodingGroovyMethods {
      *
      * @param value the string to be decoded
      * @return the decoded bytes as an array
-     * @since 2.5
+     * @since 2.5.0
      */
     public static byte[] decodeBase64Url(String value) {
         return decodeBase64(value, true);

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/subprojects/groovy-json/src/main/java/groovy/json/DefaultJsonGenerator.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-json/src/main/java/groovy/json/DefaultJsonGenerator.java b/subprojects/groovy-json/src/main/java/groovy/json/DefaultJsonGenerator.java
index a3e54f8..6510d4d 100644
--- a/subprojects/groovy-json/src/main/java/groovy/json/DefaultJsonGenerator.java
+++ b/subprojects/groovy-json/src/main/java/groovy/json/DefaultJsonGenerator.java
@@ -59,7 +59,7 @@ import static groovy.json.JsonOutput.OPEN_BRACKET;
  * methods.
  *
  * @see JsonGenerator.Options#build()
- * @since 2.5
+ * @since 2.5.0
  */
 public class DefaultJsonGenerator implements JsonGenerator {
 
@@ -444,7 +444,7 @@ public class DefaultJsonGenerator implements JsonGenerator {
     /**
      * A converter that handles converting a given type using a closure.
      *
-     * @since 2.5
+     * @since 2.5.0
      */
     protected static class ClosureConverter implements Converter {
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/subprojects/groovy-json/src/main/java/groovy/json/JsonBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-json/src/main/java/groovy/json/JsonBuilder.java b/subprojects/groovy-json/src/main/java/groovy/json/JsonBuilder.java
index be9d842..939570e 100644
--- a/subprojects/groovy-json/src/main/java/groovy/json/JsonBuilder.java
+++ b/subprojects/groovy-json/src/main/java/groovy/json/JsonBuilder.java
@@ -85,7 +85,7 @@ public class JsonBuilder extends GroovyObjectSupport implements Writable {
      * Instantiates a JSON builder with a configured generator.
      *
      * @param generator used to generate the output
-     * @since 2.5
+     * @since 2.5.0
      */
     public JsonBuilder(JsonGenerator generator) {
         this.generator = generator;
@@ -107,7 +107,7 @@ public class JsonBuilder extends GroovyObjectSupport implements Writable {
      *
      * @param content a pre-existing data structure
      * @param generator used to generate the output
-     * @since 2.5
+     * @since 2.5.0
      */
     public JsonBuilder(Object content, JsonGenerator generator) {
         this.content = content;

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/subprojects/groovy-json/src/main/java/groovy/json/JsonGenerator.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-json/src/main/java/groovy/json/JsonGenerator.java b/subprojects/groovy-json/src/main/java/groovy/json/JsonGenerator.java
index c5b13a3..f6b27f1 100644
--- a/subprojects/groovy-json/src/main/java/groovy/json/JsonGenerator.java
+++ b/subprojects/groovy-json/src/main/java/groovy/json/JsonGenerator.java
@@ -36,7 +36,7 @@ import java.util.TimeZone;
  * The {@link Options} builder can be used to configure an instance of a JsonGenerator.
  *
  * @see Options#build()
- * @since 2.5
+ * @since 2.5.0
  */
 public interface JsonGenerator {
 
@@ -69,7 +69,7 @@ public interface JsonGenerator {
     /**
      * Handles converting a given type.
      *
-     * @since 2.5
+     * @since 2.5.0
      */
     interface Converter {
 
@@ -115,7 +115,7 @@ public interface JsonGenerator {
      *     assert generator.toJson(input) == '{"lastUpdated":"2014"}'
      * </code></pre>
      *
-     * @since 2.5
+     * @since 2.5.0
      */
     class Options {
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f75f97f/subprojects/groovy-json/src/main/java/groovy/json/StreamingJsonBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-json/src/main/java/groovy/json/StreamingJsonBuilder.java b/subprojects/groovy-json/src/main/java/groovy/json/StreamingJsonBuilder.java
index c0d5d2c..727cd28 100644
--- a/subprojects/groovy-json/src/main/java/groovy/json/StreamingJsonBuilder.java
+++ b/subprojects/groovy-json/src/main/java/groovy/json/StreamingJsonBuilder.java
@@ -98,7 +98,7 @@ public class StreamingJsonBuilder extends GroovyObjectSupport {
      *
      * @param writer A writer to which Json will be written
      * @param generator used to generate the output
-     * @since 2.5
+     * @since 2.5.0
      */
     public StreamingJsonBuilder(Writer writer, JsonGenerator generator) {
         this.writer = writer;
@@ -124,7 +124,7 @@ public class StreamingJsonBuilder extends GroovyObjectSupport {
      * @param content a pre-existing data structure, default to null
      * @param generator used to generate the output
      * @throws IOException
-     * @since 2.5
+     * @since 2.5.0
      */
     public StreamingJsonBuilder(Writer writer, Object content, JsonGenerator generator) throws IOException {
         this.writer = writer;