Changelog for Groovy 1.7.2

Bug

  • [GROOVY-1034] - running groovy.bat does not return exit status on windows
  • [GROOVY-1455] - CliBuilder incorrectly handles unexpected options
  • [GROOVY-2717] - Groovyc ignores includeAntRuntime when not forked.
  • [GROOVY-2790] - Groovy Console load is broken.
  • [GROOVY-2959] - Deprecations warnings issues for Ant 1.7.0 -> 1.7.1 upgrade
  • [GROOVY-3064] - ant task setContextClassloader
  • [GROOVY-3186] - ConfigSlurper only allows a single block for any given name
  • [GROOVY-3384] - XML NodeList.add(index, Node) does not work as expected
  • [GROOVY-3466] - MetaClassCreationHandle.create() should not be final
  • [GROOVY-3657] - Category annotation results in Groovy Builder error
  • [GROOVY-3783] - Need groovydoc command
  • [GROOVY-3832] - groovy.sql.Sql.close should empty statement cache
  • [GROOVY-3922] - finally block executed twice if exception throw in this block
  • [GROOVY-4025] - Groovy interfaces allow methods with full body?
  • [GROOVY-4038] - Closure meta class respondsTo(closure, "doCall") does not work
  • [GROOVY-4058] - Unexpected compilation error with MapEntryExpression usage - groovy grammar issue?
  • [GROOVY-4066] - Groovy clibuilder doesn't take the parameter when the longOpt name ends with character "s"
  • [GROOVY-4069] - Custom constructors added via metaclass are sometimes not cleaned up
  • [GROOVY-4070] - Wrong value returned for "Attribute.name()" when iterating over GPath Attributes
  • [GROOVY-4072] - finally block not called if exception rethrown in catch block
  • [GROOVY-4075] - shouldFailWithCause no longer works for unchecked exceptions
  • [GROOVY-4078] - Number.step incorrectly believes there is an infinite loop
  • [GROOVY-4079] - @Grab fails with ClassCastException
  • [GROOVY-4080] - Invalid class generated for an annotation when @Grab is used with it.
  • [GROOVY-4081] - Compiler should not allow enum constructor calls from outside the enum
  • [GROOVY-4086] - ClassCastException on every()
  • [GROOVY-4096] - GroovyConsole cosmetic annoyances
  • [GROOVY-4098] - setter and getter destroy meta properties
  • [GROOVY-4099] - @Immutable annotation does not allow untyped static fields
  • [GROOVY-4100] - clearTime() fails for times in the afternoon
  • [GROOVY-4104] - MethodClosure for a protected method in a super class not working properly
  • [GROOVY-4106] - ExpandoMetaClassCreationHandle does infinite recursion for ExpandoMetaClass
  • [GROOVY-4107] - ResolveVisitor falsely resolves an import against itself
  • [GROOVY-4108] - Possible NPE in Groovy Ant task
  • [GROOVY-4116] - Call to an interface method results in IllegalAccessError when not implemented as "public"
  • [GROOVY-4117] - org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl#registerMethods should not call System.exit
  • [GROOVY-4120] - Non static inner class usage fails with MethodSelectionException
  • [GROOVY-4121] - Compiler fails to do assignment-to-final-fields checks on fields made final by @Immutable (was: @Immutable does not make fields immutable)
  • [GROOVY-4129] - Implicit 'this' reference not being passed if inner class instance is created in outer class instance initializer
  • [GROOVY-4131] - Compiler allows 2 main methods in a script
  • [GROOVY-4133] - @Delegate does not handle native methods correctly
  • [GROOVY-4134] - Closure default values cannot be static constants
  • [GROOVY-4137] - Default constructor added by groovy does not have source information set on it
  • [GROOVY-4138] - Groovy JDK File.eachFileMatch insufficient documentation to use the method.
  • [GROOVY-4139] - Assigning with empty String as hash key (i.e. a['']=t) yields StringIndexOutOfBoundsException
  • [GROOVY-4140] - Groovy JDK documentation has mismatch between signatures and explanation
  • [GROOVY-4145] - Statically imported fields & properties
  • [GROOVY-4147] - Timecategory strange format (too many '-' signs) when printing 'negative' date
  • [GROOVY-4179] - finally block is not executed

Improvement

  • [GROOVY-1178] - Add a Utility Method for Converting GPathResults to XML
  • [GROOVY-2214] - clearly state the implicit variables used with groovy command -p -n and -a options
  • [GROOVY-2727] - improve CliBuilder/OptAccessor's long command line opts handling
  • [GROOVY-3197] - change CliBuilder to be independent of CommonsCLI
  • [GROOVY-3597] - Improve CliBuilder to support header info of Apache CLI HelpFormatter
  • [GROOVY-3923] - update license text in file headers
  • [GROOVY-3992] - Add a reverse method to Map
  • [GROOVY-4019] - Enhance the named argument constructors related to @Immutable to throw MissingPropertyException
  • [GROOVY-4033] - Stateful metaclass mixins are completely undocumented
  • [GROOVY-4059] - Groovyc: taking file.encoding property over from parent process when forked
  • [GROOVY-4073] - Add extra DOM manipulation methods to DOMCategory
  • [GROOVY-4074] - Add DGM#getAt(Iterator, int) method
  • [GROOVY-4087] - It would be useful to have DGM convenience methods which work with Object[] for Collection bulk methods like addAll
  • [GROOVY-4088] - DGM convenience method for String.tokenize(Character)
  • [GROOVY-4089] - Groovydoc Ant task should provide a way to set the extensions of files to process
  • [GROOVY-4090] - Improve CliBuilder short option syntax and customization features
  • [GROOVY-4103] - It would be useful for groovy.sql.Sql to support a map-based newInstance method
  • [GROOVY-4111] - The compiler can reject invalid code (constructor call on an abstract type) earlier than it does
  • [GROOVY-4115] - StreamingMarkupBuilder should provide an option for using double quotes around attributes
  • [GROOVY-4126] - @Immutable should support URI as one of the known immutable types
  • [GROOVY-4132] - Groovy should support 'as Interface' shorthand syntax on normal Objects not just Maps and Closures

New Feature

  • [GROOVY-2597] - Map or Property Sort
  • [GROOVY-3649] - SQL named parameters in Sql.executeUpdate
  • [GROOVY-4092] - DGM methods to filter a collection in place without creating a new collection
  • [GROOVY-4144] - Closures should have rcurry and ncurry as well as curry
  • [GROOVY-4146] - Groovy's Sql classes could support batch operations by leveraging the java.sql.Statement.executeBatch() command.
  • [GROOVY-4148] - CliBuilder should support @argumentFile processing similar to what javadoc has

Sub-task

  • [GROOVY-3065] - Document MarkupBuilder and StreamingMarkupBuilder and StaxBuilder