Changelog for Groovy 1.9.0-unreleased

Bug

  • [GROOVY-2177] - Groovysh 'history recall' seems to be picking the wrong entry (off by 1)
  • [GROOVY-2914] - LoadConfiguration fails to load *.jar
  • [GROOVY-3495] - LinkageError when obtaining a Cipher instance in a multithreaded environment
  • [GROOVY-3547] - Calling varargs method from Groovy creates varargs array of different type compared to Java
  • [GROOVY-4306] - Groovy Console Icon for Mac OS X broken
  • [GROOVY-4471] - NPE in property access in anonymous inner classes
  • [GROOVY-4480] - Parsing seems to have changed in 1.8
  • [GROOVY-4498] - Only the root exception in a script is printed
  • [GROOVY-4504] - Groovy compilation results in warnings in generated code
  • [GROOVY-4529] - GroovyClassLoader script caching not working properly if scripts not in root dir
  • [GROOVY-4601] - Stub generator doesn't escape strings with mixed single and double quotes
  • [GROOVY-4609] - Using log variable created with @Log or @Log4j causes compiler error if used in static method
  • [GROOVY-4691] - Grails 1.3.7 breaks bean-fields plugin
  • [GROOVY-4695] - anonymous classes InnerClassNode has -1 for line numbers
  • [GROOVY-4699] - Observable List misbehaves when using retainAll with closure
  • [GROOVY-4707] - Scripts' class nodes didn't have correct source positions
  • [GROOVY-4709] - @Interrupt AST transformations should not be applied on abstract methods
  • [GROOVY-4711] - Standalone stub generation task fails resolving classes
  • [GROOVY-4719] - Groovy build fails in tests - test RedundantCastInStubTest fails
  • [GROOVY-4720] - Method overriding with ExpandoMetaClass is partially broken
  • [GROOVY-4729] - Object.toString() called instead of coerced Map toString closure
  • [GROOVY-4746] - broken @link in MetaObjectProtocol.java's javadoc
  • [GROOVY-4748] - javadoc comment problems which breaks generated HTMLs
  • [GROOVY-4781] - @WithReadLock and @WithWriteLock creates the wrong locks
  • [GROOVY-4782] - @Singleton(lazy=true) does not perform the correct double checked locking for Java
  • [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-4823] - groovy.lang.MissingMethodException if using class extending BigDecimal
  • [GROOVY-4832] - when two java classes extend a groovy class, both subclasses have a metaClass for whichever subclass was loaded first
  • [GROOVY-4833] - @Field AST Transformation looses annotations
  • [GROOVY-4840] - LogASTTransformation fails if super class defines a private log field
  • [GROOVY-4854] - MyEnum.values() bombs out on AppEngine
  • [GROOVY-4857] - toString() unsupported on proxy
  • [GROOVY-4863] - 1.8 incompatibility with named parameters
  • [GROOVY-4866] - Documentation incorrect for Object#with
  • [GROOVY-4881] - JsonSlurper does not handle backslash
  • [GROOVY-4903] - StackOverflowError when parsing JSON text with JsonSlurper().parseText()
  • [GROOVY-4910] - groovy.bat fails when the JAVA_OPTS contains space characters
  • [GROOVY-4915] - Wrong access modifiers in JsonSlurper
  • [GROOVY-4937] - Sorting an ObservableList instance results in IndexOutOfBoundsException
  • [GROOVY-4938] - VerifyError related to byte arrays
  • [GROOVY-4939] - groovyc compilation problem for return values with generics
  • [GROOVY-4940] - Groovy Console Icon for OSX still broken
  • [GROOVY-4942] - groovy.bat can't run if PATH contains parentheses
  • [GROOVY-4944] - Presence of "assert" unexpectedly changes program semantics (in Groovlet)
  • [GROOVY-4951] - VerifyError - Expecting to find integer on stack
  • [GROOVY-4952] - VerifyError - Virtual method call from a static context
  • [GROOVY-4953] - NPE possibly related to PojoWrapper
  • [GROOVY-4954] - Currying closure with null as argument fails with NPE
  • [GROOVY-4964] - static import overrides explicit class name when getting property
  • [GROOVY-4965] - shim classes generated incorrectly in 1.8.1 (was fine in 1.8.0) for some static inner-class usages
  • [GROOVY-4968] - BUG! exception when using spread operator
  • [GROOVY-4974] - Bounded generics do not work with inheritance
  • [GROOVY-4978] - SecureASTCustomizer blacklist is ignored inside method body
  • [GROOVY-4980] - Named argument constructor doesn't work for inner classes
  • [GROOVY-4983] - Integer multiples of 256 evaluate to false.
  • [GROOVY-4984] - JsonOutput.toJson(object) does not handle char[] correctly
  • [GROOVY-4994] - wrong delegate for ComposedClosure
  • [GROOVY-4999] - Runtime error on static overloaded mixin method
  • [GROOVY-5000] - Wrong constructor call generated with AIC + closure usage
  • [GROOVY-5003] - [PATCH] Fix the problem in handling bridge methods
  • [GROOVY-5006] - Inappropriate transformation of type from int to BigDecimal
  • [GROOVY-5008] - Integer optimization is not executed
  • [GROOVY-5017] - [PATCH] SimpleTemplateEngine line number is off by one
  • [GROOVY-5018] - FileSystemCompiler#generateFileNamesFromOptions is adding filenames multiple times
  • [GROOVY-5021] - JavaStubCompilationUnit.addSource() should allow other extensions
  • [GROOVY-5026] - NullPointerException using Open JDK caused problems running Grails unit tests
  • [GROOVY-5027] - Groovydoc calculateFirstSentence doesn't recognise html tags as breaks
  • [GROOVY-5029] - XmlSlurper does not close InputStream, leaks file handles/resources
  • [GROOVY-5030] - Calling a method overwritten via metaClass from another method uses the original (non-overwritten) method if the overridden class extends something
  • [GROOVY-5033] - Annotations on a method with optional parameters do not work
  • [GROOVY-5034] - Groovy is producing incorrect generic type signatures for getters that are created by closures
  • [GROOVY-5036] - Date and Calendar JSON serialization yields stackoverflow errors
  • [GROOVY-5037] - Grails functional tests failing due to VerifyError loading classes
  • [GROOVY-5040] - Variables in annotation closures should never be bound to declarations in "enclosing" scopes
  • [GROOVY-5041] - Anonymous inner class constructor call referencing a getter caused NPE at compile time
  • [GROOVY-5046] - incorrect result when using += operator in closure
  • [GROOVY-5049] - File.getText() should close the streams
  • [GROOVY-5052] - CharsetToolkit javadoc references private guessEncoding() method in the example usage
  • [GROOVY-5056] - ?TreeSet? Comparators not correctly comparing everything - Compares only a subset
  • [GROOVY-5551] - CLONE - StackOverflowError when parsing JSON text with JsonSlurper().parseText()

Improvement

  • [GROOVY-1570] - Truncate string when when generating MissingMethodException
  • [GROOVY-2832] - Allowing user to customize groovysh prompt
  • [GROOVY-3401] - Ternary operator ?: does not handle newline before ":" gracefully
  • [GROOVY-3557] - Remove synchronization of isModified method in ExpandoMetaClass to improve performance
  • [GROOVY-4595] - Project Coin underscore placeholder in numbers
  • [GROOVY-4664] - Add @ThreadInterrupt to console scripts automatically
  • [GROOVY-4671] - DGM#inject can be generified
  • [GROOVY-4675] - Prefer ClassHelper.make(Class) over new ClassNode(Class)
  • [GROOVY-4690] - Allow PrimaryClassNodeOperations to be added to CompilerConfiguration
  • [GROOVY-4693] - GDK groovydocs for String.padXXX are not very clear [new wording attached]
  • [GROOVY-4703] - Improve FactoryBuilderSupport exception messages
  • [GROOVY-4713] - typo( lists -> maps ) in GDK doc comment
  • [GROOVY-4724] - add support for overriding package-, doc- or class-templates in Groovydoc descendant classes
  • [GROOVY-4779] - add syntax highlighting to the AST Browser decompiled source view
  • [GROOVY-4785] - Improve Closure javadoc for resolution strategy
  • [GROOVY-4800] - Avoid too many temporary arrays with each and eachWithIndex
  • [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-4830] - GroovyConsole: Decompiled View should show method and class annotations
  • [GROOVY-4842] - Make @ThreadInterrupt optional in Groovy console
  • [GROOVY-4860] - Enable JsonBuilder to work with objects recursively
  • [GROOVY-4897] - better tab completions for GroovyShell
  • [GROOVY-4925] - JsonBuilder with Writer support would be handy
  • [GROOVY-4947] - Little improvement in code generated for equals() by @EqualsAndHashCode ast transformation
  • [GROOVY-4949] - Groovy should provide CharSequence variants for most its DGM String methods
  • [GROOVY-4960] - SwingBuilder.doOutside should use a ThreadPool
  • [GROOVY-4961] - SwingBuilder should set the node's name property with the value of the id property if no name is set
  • [GROOVY-4962] - SwingBuilder binding updates should happen inside the EDT if the target is an UI component
  • [GROOVY-4971] - DateGroovyMethods should have the method format(java.util.Date, String, TimeZone)
  • [GROOVY-5025] - Add control on how Global Transforms are loaded/applied
  • [GROOVY-5038] - http://groovy.codehaus.org/groovy-jdk/ should say which Groovy version it refers to
  • [GROOVY-5059] - Improve DefaultTypeTransformation.booleanUnbox performance
  • [GROOVY-5072] - Add bytecode view to AST Browser

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-1984] - Shorther syntax for catching multiple exceptions at once
  • [GROOVY-4594] - Project Coin binary literals
  • [GROOVY-4740] - Allow "groovy" to accept URL to run the script
  • [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

Sub-task

  • [GROOVY-4278] - extend int math improvement to char, byte, short and mixes of those including int
  • [GROOVY-4559] - enable more direct super constructor calls
  • [GROOVY-5071] - make a command line compiler switch to turn on invokedynamic usage

Task

Test

  • [GROOVY-5066] - [PATCH] fix a todo in AstBuilderFromSpecificationTest.testSpreadException
  • [GROOVY-5067] - [PATCH] AstBuilderFromSpecificationTest.testFieldExpression sets an incorrect modifier to FieldNode

Wish

  • [GROOVY-5028] - Add method to expand empty elements in XmlNodePrinter