Changelog for Groovy 1.8.0-beta-1

Bug

  • [GROOVY-1034] - running groovy.bat does not return exit status on windows
  • [GROOVY-1525] - "groovy -help" doesn't mention -cp option (also groovysh, groovyconsole etc.)
  • [GROOVY-2037] - Can't use Java 6 classpath wildcards
  • [GROOVY-2717] - Groovyc ignores includeAntRuntime when not forked.
  • [GROOVY-2811] - GroovyClassLoader.isSourceNewer() fails when url has spaces
  • [GROOVY-2959] - Deprecations warnings issues for Ant 1.7.0 -> 1.7.1 upgrade
  • [GROOVY-2991] - It looks like there's no way to escape $ character in the regexp string
  • [GROOVY-3047] - enum definition does not allow trailing comma
  • [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-3398] - Shift-Backspace does not delete character before caret
  • [GROOVY-3466] - MetaClassCreationHandle.create() should not be final
  • [GROOVY-3492] - Commandline proccessor seems to modifiy script path
  • [GROOVY-3565] - package-info.java - groovydoc treats it wrong
  • [GROOVY-3657] - Category annotation results in Groovy Builder error
  • [GROOVY-3681] - AntBuilder calls maybeConfigure() on Task too early
  • [GROOVY-3684] - Caret is not visible in code panel after opening a file
  • [GROOVY-3712] - @Delegate produces invalid class file
  • [GROOVY-3736] - GroovyDoc processes first paragraph correctly but not the rest of overview.html
  • [GROOVY-3737] - groovydoc and other groovy bugs
  • [GROOVY-3738] - groovydoc doesn't handle @ directives in summary sentences.
  • [GROOVY-3739] - groovydoc doesn't handle {@link xxx} correctly.
  • [GROOVY-3740] - groovydoc doesn't handle # correctly
  • [GROOVY-3741] - There is no way to specify a style sheet (CSS file) to groovydoc.
  • [GROOVY-3745] - groovydoc doesn't handle @link's correctly in project-info.groovy
  • [GROOVY-3748] - Web site Groovy Doc has two flavors and problem with shown methods for GroovyShell
  • [GROOVY-3773] - GroovyDoc doesn't handle default parameters correctly.
  • [GROOVY-3783] - Need groovydoc command
  • [GROOVY-3785] - groovydoc doesn't handle enum comments correctly.
  • [GROOVY-3832] - groovy.sql.Sql.close should empty statement cache
  • [GROOVY-3854] - "Groovy executing" dialog comes/stays forever although no script should be running
  • [GROOVY-3871] - null check for propertyMissingGet in MetaClassImpl.checkIfStdMethod considered harmful
  • [GROOVY-3915] - Documentation: Invalid link, bad HTML in RootLoader doc
  • [GROOVY-3920] - GroovyConsole: Empty dialogbox remains after script is executed
  • [GROOVY-3933] - XmlTemplateEngine does not handle quotes in attribute values
  • [GROOVY-3934] - GroovyCodeSource(URL) is not setting scriptText
  • [GROOVY-3945] - Statically imported closure field is not resolved
  • [GROOVY-3947] - No stack trace printed in the Groovy console
  • [GROOVY-3954] - GroovyCodeSource:159 may hide exception
  • [GROOVY-3960] - DocGenerator not documented generified methods?
  • [GROOVY-3965] - Inconsistent numbering - deploying groovy artifacts to Maven repositories
  • [GROOVY-3966] - GroovyConsole window loses focus when script is run
  • [GROOVY-3975] - No generic type information for closure parameters in generated closure class
  • [GROOVY-3977] - Auto-conversion inconsistency in BigDecimal treatment in method calls - Double vs Float
  • [GROOVY-3979] - Enum inside a class
  • [GROOVY-3980] - GroovyScriptingEngine doesn't recognize changes in the source of checked class only when dependencies got changed
  • [GROOVY-3985] - error in instance initializer for Enum element, without special method
  • [GROOVY-3986] - can't omit toplevel parentheses in enum element method
  • [GROOVY-3987] - Cannot copy the text selected in output pane of GroovyConsole
  • [GROOVY-3989] - Groovy compiler allows overriding final methods but class loading fails with java.lang.VerifyError
  • [GROOVY-3993] - NPE when trying to access member of a static array from an inner static enum
  • [GROOVY-3994] - ClassCastException when trying to instantiat an EnumSet from an inner enum
  • [GROOVY-3996] - Enum static field initialization inconsistency
  • [GROOVY-4004] - stub generator creates wrong code for inner and nested classes
  • [GROOVY-4005] - Stub generator creates invalid Java code for anonymous inner classes
  • [GROOVY-4009] - Avoiding repeated resolve() calls in case of failure to resolve the type.
  • [GROOVY-4012] - java.lang.ArrayStoreException thrown on trying to execute a list
  • [GROOVY-4013] - GroovyScriptEngine.loadScriptByName returns anonymous inner classes on second invocation/reload
  • [GROOVY-4015] - GStrings are not coerced to Strings in super constructor call
  • [GROOVY-4025] - Groovy interfaces allow methods with full body?
  • [GROOVY-4028] - Inner classes - Constructor calls with named arguments don't get implicit this reference passed as 1st argument
  • [GROOVY-4029] - putAt and put behave different on Maps
  • [GROOVY-4035] - Super method calls from anonymous classes sometimes fail
  • [GROOVY-4038] - Closure meta class respondsTo(closure, "doCall") does not work
  • [GROOVY-4040] - DGM#flatten(Collection, Closure) isn't using closure properly
  • [GROOVY-4043] - Error in resolving inner class
  • [GROOVY-4046] - 1 == new Object() throws ClassCastException
  • [GROOVY-4048] - waitForProcessOutput should also waitFor internally
  • [GROOVY-4049] - 1.7.x's faster DGM loading system causes issues on Google App Engine
  • [GROOVY-4058] - Unexpected compilation error with MapEntryExpression usage - groovy grammar issue?
  • [GROOVY-4061] - Error trying to configure GroovyServlet to point to single groovy file for all URLs
  • [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-4071] - IndexOutOfBoundsException for labeled assertion statement
  • [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-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-4118] - JavaStubGenerator doesn't generate annotations available in Groovy code
  • [GROOVY-4119] - Implicit construtor call fails with NoSuchMethodError when an inner class extends another
  • [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-4130] - Using categories results in multiple thread locals being retained that Tomcat has to forcibly clear
  • [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-4151] - println "$this" fails in inner class, but println ''+this works
  • [GROOVY-4158] - cannot mix rcurry and ncurry together
  • [GROOVY-4159] - hang on exception in synchronized block
  • [GROOVY-4161] - Source locations for added default constructors are incorrect
  • [GROOVY-4163] - Groovyc is unable to compile a class which implements interface and uses @Delegate annotation
  • [GROOVY-4168] - MapWithDefault doesn't have correct equals functionality
  • [GROOVY-4169] - Compile error on annotations for closure parameters
  • [GROOVY-4170] - Currying private methods
  • [GROOVY-4180] - groovydoc appears to be broken with java.util.NoSuchElementException
  • [GROOVY-4187] - GDK should make the File method setText(String text, String charset) an alias for write(String text, String charset)
  • [GROOVY-4188] - NoSuchFieldError when defining a field named "metaClass"
  • [GROOVY-4190] - Static generic method invocation with explicitely stated type doesn't compile
  • [GROOVY-4191] - java.lang.ArrayStoreException on attempt to assign number to an element of a string array for a second time
  • [GROOVY-4192] - Class ReleaseInfo isn't thread-safe
  • [GROOVY-4193] - ImportNode.getClassName() throws NPE when type is null
  • [GROOVY-4196] - Source locations not correct for some return and block statements created in ReturnAdder class
  • [GROOVY-4201] - @Immutable cannot handle List
  • [GROOVY-4202] - successive metaclass modification for class then instance fails.
  • [GROOVY-4206] - Inconsistent handling of boolean properties
  • [GROOVY-4222] - @Lazy has incorrect behavior for static fields
  • [GROOVY-4225] - Wrong generation of import statements in stubs
  • [GROOVY-4227] - Grails 1.3.1 groovysh render incorrect char encoding in prompt and messages
  • [GROOVY-4235] - Closure returned from static method cannot access class properties through "this"
  • [GROOVY-4241] - Problems with the 'as' operator
  • [GROOVY-4243] - Incorrect super class for script containing an anonymous inner class
  • [GROOVY-4244] - Properties cannot be set through a @Delegate
  • [GROOVY-4246] - Issue with incrementing array when using Random number generation
  • [GROOVY-4250] - Power assert doesn't pretty-print empty String
  • [GROOVY-4252] - Invalid code crashes the compiler
  • [GROOVY-4254] - Compiler wrongly compiles a ClosureListExpression that results in NoSuchMethodError at runtime
  • [GROOVY-4257] - Collection.unique() method might remove not duplicate items
  • [GROOVY-4259] - Groovyc Ant task hard-codes
  • [GROOVY-4265] - @Delegate's dealing with static methods seems incorrect
  • [GROOVY-4267] - Unable to import static for static inner classes
  • [GROOVY-4268] - Breaking change in enum syntax
  • [GROOVY-4272] - Constant integer and double expressions in AstBuilder.buildFromCode { } cause NoSuchFieldErrors at runtime
  • [GROOVY-4285] - XmlUtil.serialize doesn't seem to pick right method for GPathResult
  • [GROOVY-4286] - GroovyScriptEngine doesn't recompile updateted script
  • [GROOVY-4293] - BUG! exception in phase 'parsing' in source unit 'Script1.groovy' null
  • [GROOVY-4295] - Joint compilation fails for interfaces with primitive fields
  • [GROOVY-4304] - OptimizerVisitor may run twice, corrupting constants
  • [GROOVY-4307] - Grapes doesn't handle properties correctly used in the organisation field of a POM.
  • [GROOVY-4309] - printf not bound to "out" in groovlet context as in print/println
  • [GROOVY-4312] - Empty primitive arrays evaluate to true

Improvement

  • [GROOVY-1113] - support indexed properties for GroovyBeans
  • [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-2701] - improve regex in Groovy
  • [GROOVY-2727] - improve CliBuilder/OptAccessor's long command line opts handling
  • [GROOVY-2898] - The count() in DefaultGroovyMethod should support counting by a Closure
  • [GROOVY-2945] - Binary counterpart to setText(File, String)
  • [GROOVY-2987] - Slow leftShift GDK methods
  • [GROOVY-3697] - Enhance consistency of regex/pattern DGM methods
  • [GROOVY-3811] - Groovydoc should recognise Javadoc tags and treat them specially in HTML output as Javadoc does
  • [GROOVY-3923] - update license text in file headers
  • [GROOVY-3935] - Update groovysh to use jansi for windows ANSI support
  • [GROOVY-3946] - Allow overriding the default Groovy class loader
  • [GROOVY-3959] - TestNG script runner masks root cause of exception
  • [GROOVY-3961] - Prepend '.groovy' in the filename of the save dialog & filter *.groovy
  • [GROOVY-3992] - Add a reverse method to Map
  • [GROOVY-3997] - TemplateServlet works directly with System.getProperty instead of init parameters
  • [GROOVY-3999] - StackOverflowError not recognizable as such in GroovyConsole
  • [GROOVY-4006] - Implicit this reference for inner classes should be handled automatically
  • [GROOVY-4019] - Enhance the named argument constructors related to @Immutable to throw MissingPropertyException
  • [GROOVY-4026] - MockFor and StubFor improvements
  • [GROOVY-4033] - Stateful metaclass mixins are completely undocumented
  • [GROOVY-4039] - Make the MissingMethodException show class duplication errors
  • [GROOVY-4041] - TRIVIAL doco issues for classes URL and File
  • [GROOVY-4045] - Comment the nature of the documentation for http://groovy.codehaus.org/(g)api/
  • [GROOVY-4047] - Cyclic inheritence check - scattered across multiple compilation phases
  • [GROOVY-4054] - Methods generated for enum classes not synthetic
  • [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-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
  • [GROOVY-4183] - GroovyConsole should display a Groovy icon on the dock when running on Mac OSX
  • [GROOVY-4195] - DGM getAt method for Calendar
  • [GROOVY-4200] - GroovyConsole scrolls input area to top of the source file when the output area gains focus
  • [GROOVY-4203] - Groovyc Ant task can get a NPE when trying to set stubDir plus doesn't expose keepStubs flag
  • [GROOVY-4204] - BigDecimal division is currently implemented using pre Java 1.5 code
  • [GROOVY-4208] - @PackageScope should also work for methods and classes
  • [GROOVY-4212] - TransformTestHelper class misspelled, has no test case, and should accept String as input not just File
  • [GROOVY-4213] - add a local transform for logging
  • [GROOVY-4224] - Open up ObservableList and ObservableMap for extension
  • [GROOVY-4230] - Update deprecated Look&Feel seetings in SwingBuilder
  • [GROOVY-4233] - Provide last() and first() implementations on Object []
  • [GROOVY-4247] - New method: File.renameTo(String path)
  • [GROOVY-4262] - <groovyc> does not provide an option to customize the target bytecode version used by ACG
  • [GROOVY-4271] - InputStream.eachByte in DGM to read IS using a byte buffer
  • [GROOVY-4273] - Provide better error message in case of misspelled enum constant
  • [GROOVY-4294] - Collection and Map functions
  • [GROOVY-4303] - Provide minus and intersect methods for maps
  • [GROOVY-4305] - Make groovy.lang.Reference implement Serializable
  • [GROOVY-4310] - Power asserts should use DefaultGroovyMethods.toString() instead of 'plain' toString()
  • [GROOVY-4311] - Make Closure a java.util.concurrent.Callable (re-addressed)
  • [GROOVY-4314] - Keyword "const" should be allowed as map key for literal maps/named params and property access

New Feature

  • [GROOVY-1746] - Add default to Map
  • [GROOVY-2597] - Map or Property Sort
  • [GROOVY-2879] - Create @Identity annotation to autogenerate equals() / hashCode() / toString()
  • [GROOVY-3093] - Allow annotations to take closures as arguments
  • [GROOVY-3349] - Add stripMargin() to multi-line strings
  • [GROOVY-3391] - New AST transformation @InheritConstructors
  • [GROOVY-3649] - SQL named parameters in Sql.executeUpdate
  • [GROOVY-3938] - Stamp groovy classes with the version of groovy used to generate them.
  • [GROOVY-4062] - Add getBytes to InputStream, URL and File
  • [GROOVY-4124] - Groovy equality for Sets and Maps
  • [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
  • [GROOVY-4160] - Gradle build
  • [GROOVY-4174] - Support for String translation similar to unix 'tr' command
  • [GROOVY-4186] - Possible syntactic sugar for JSR-223
  • [GROOVY-4205] - Groovy should have a DGM#capitalize(String) method
  • [GROOVY-4207] - Groovy should have DGM#expand and DGM#unexpand methods for tab manipulation
  • [GROOVY-4221] - @Synchronized AST transform
  • [GROOVY-4228] - Groovy should have a mechanism to create class-level fields in Scripts
  • [GROOVY-4256] - Can groovyConsole provide an option to compile a script?

Sub-task

  • [GROOVY-3065] - Document MarkupBuilder and StreamingMarkupBuilder and StaxBuilder
  • [GROOVY-3262] - Support linking to other javadocs
  • [GROOVY-3267] - Support @see tag for GDK
  • [GROOVY-4175] - GroovyScriptEngine - loading non file based scripts does not work - isSourceNewer
  • [GROOVY-4234] - GroovyScriptEngine.loadScriptByName loads the wrong class when scripts contain class definitions
  • [GROOVY-4264] - Issure related to ordering of generated classes when a script has multiple classes

Task

Wish

  • [GROOVY-3374] - Add clearTime() to java.util.Date and/or java.util.Calendar
  • [GROOVY-3810] - remove deprecation exception from java.io.File.each and apply semantics from java.lang.Object.each and other iterator semantics
  • [GROOVY-3973] - GroovyClassLoader incompatible with older version(s)
  • [GROOVY-4153] - Statically imported properties