Changelog for Groovy 1.8.1

Bug

  • [GROOVY-2883] - Bug in AntBuilder - DemuxOutputStream should be used
  • [GROOVY-3088] - Modifiers on local variables are ignored
  • [GROOVY-3939] - @Bindable with validator allows incorrect behaviour on binding creation
  • [GROOVY-4112] - Joint compilation fails if Groovy method with array parameter is called in vararg style from Java
  • [GROOVY-4306] - Groovy Console Icon for Mac OS X broken
  • [GROOVY-4498] - Only the root exception in a script is printed
  • [GROOVY-4570] - @ToString does not work for enum types
  • [GROOVY-4646] - Having a setter with a return value causes the stub generator to generate multiple setters and then fail to compile
  • [GROOVY-4650] - stub generation fails with generic signatures
  • [GROOVY-4673] - java.lang.ClassFormatError: Illegal class name "groovy/jmx/builder/package-info" in class file groovy/jmx/builder/package-info
  • [GROOVY-4686] - Varargs are not displayed by GroovyDoc
  • [GROOVY-4732] - Java5 configureClassNode does not take care of parameter annotations
  • [GROOVY-4742] - Documentation for Collection.sort(Comparator comparator) is wrong
  • [GROOVY-4745] - ClassNode.equals throws ClassCastException for object of other type
  • [GROOVY-4767] - Compilation error for generic interface method
  • [GROOVY-4768] - java stub contains "AnnotationNode" string instead of an annotation within an annotation
  • [GROOVY-4784] - [ null, 'ah' ].findAll() throws a NullPointerException
  • [GROOVY-4801] - Thrown exception not accessable inside catch block when class has @Category transformation applied
  • [GROOVY-4806] - Sql.eachRow documentation: actual GroovyResultSet vs. documentation GroovyRowResult
  • [GROOVY-4813] - GroovyScriptEngine does not use configured ImportCustomizer
  • [GROOVY-4818] - JsonSlurper's methods are package private
  • [GROOVY-4825] - Compiler Errors for @Immutable
  • [GROOVY-4827] - @EqualsAndHashCode.excludes doesn't work correctly with class inheritance
  • [GROOVY-4831] - New line character is not escaped in attribute when using MarkupBuilder
  • [GROOVY-4833] - @Field AST Transformation looses annotations
  • [GROOVY-4840] - LogASTTransformation fails if super class defines a private log field
  • [GROOVY-4844] - @ToString should use getX() rather than the field x when getting property values
  • [GROOVY-4854] - MyEnum.values() bombs out on AppEngine
  • [GROOVY-4861] - Duplicate entry in InnerClasses
  • [GROOVY-4864] - HTML builder for "textarea" creates empty "textarea" element if no text specified, which is not alloed in HTML
  • [GROOVY-4866] - Documentation incorrect for Object#with
  • [GROOVY-4881] - JsonSlurper does not handle backslash
  • [GROOVY-4884] - Calling a method overwritten via metaClass from another method uses the original (non-overwritten) method
  • [GROOVY-4890] - MapExpression#getText incorrect for empty map
  • [GROOVY-4892] - GroovyInterceptable / invokeMethod does not correctly in Groovy 1.8.0 when Methods with no arguments are "delegated"
  • [GROOVY-4898] - groovydoc fails with MissingPropertyException
  • [GROOVY-4902] - Groovy class not compatible with Java integration when @Immutable is used
  • [GROOVY-4903] - StackOverflowError when parsing JSON text with JsonSlurper().parseText()
  • [GROOVY-4907] - Command line interface of AstNodeToScriptAdapter.groovy don't works
  • [GROOVY-4909] - insufficient compiler error messages relating to interface member visibility
  • [GROOVY-4914] - FieldNode doesn't collect annotations
  • [GROOVY-4915] - Wrong access modifiers in JsonSlurper
  • [GROOVY-4916] - Set equality fails if null elements are present
  • [GROOVY-4920] - Default values for primitives error in groovy 1.8.0
  • [GROOVY-4923] - Creating Pattern from declared String variable with pattern = ~stringvariable fails
  • [GROOVY-4924] - Class implementing a generic interface causes VerifyError
  • [GROOVY-4935] - stub generator loses package qualification for generic type argument
  • [GROOVY-4936] - package protected method in Parent class cannot be called
  • [GROOVY-5551] - CLONE - StackOverflowError when parsing JSON text with JsonSlurper().parseText()

Improvement

  • [GROOVY-1570] - Truncate string when when generating MissingMethodException
  • [GROOVY-3401] - Ternary operator ?: does not handle newline before ":" gracefully
  • [GROOVY-3921] - Add connection configuration options to URL.getText(), URL.newInputStream() and URL.newReader()
  • [GROOVY-4223] - Add local maven repo to default Grape config
  • [GROOVY-4798] - To support PreparedStatement.addBatch()
  • [GROOVY-4814] - When working with ClassNodes, sometimes need to call getFields() before getField() will work (lazy init)
  • [GROOVY-4815] - force annotations on variables to be included in ast transforms
  • [GROOVY-4824] - groovyConsole should support more common file types: .story, .gpp, and .grunit
  • [GROOVY-4842] - Make @ThreadInterrupt optional in Groovy console
  • [GROOVY-4848] - Allow custom exception class to be thrown in @Interrupt AST transformations
  • [GROOVY-4849] - @EqualsAndHashCode should use getX() instead of x when accessing properties
  • [GROOVY-4860] - Enable JsonBuilder to work with objects recursively
  • [GROOVY-4876] - @Newify works for pre-defined classes but not for classes defined in the same script
  • [GROOVY-4880] - Make ASTTransformationCustomizer handle annotation parameters
  • [GROOVY-4889] - An IDENTITY closure could be made available
  • [GROOVY-4893] - Minor enhancement to provide no-arg versions of DGM grep(), find() and findAll() methods
  • [GROOVY-4894] - 'includes' attribute in EqualsAndHashCode
  • [GROOVY-4897] - better tab completions for GroovyShell
  • [GROOVY-4899] - findResults object/collection/map enhancement patch (CLONED from findResult)
  • [GROOVY-4904] - Map.inject() doesn't accept closure with 3 arguments (collector, key, value), only 2 (collector, Map.Entry)
  • [GROOVY-4925] - JsonBuilder with Writer support would be handy
  • [GROOVY-4929] - rename DGM collectAll to collectNested - keep original as an alias for the time being with a view to deprecating/removing eventually

New Feature

  • [GROOVY-1512] - When executing command-line scripts it should be possible to execute a BEGIN and an END method (akin to AWK or Perl)
  • [GROOVY-4865] - Add a take method to Collections, Iterators, Arrays
  • [GROOVY-4885] - groupBy with a list or an array of closures as it's parameter for nested grouping
  • [GROOVY-4932] - groovy should provide a collectMany alias for collect{}.flatten()

Sub-task

  • [GROOVY-1475] - final modifier on a method parameter is not respected