1 !!!!!! Obsolete file!! Don't add anything here, use Jira instead.
3 TODO: remove irrelevant entries, add others to Jira.
8 * test synchronized statement
13 * new GroovyMethods to be added
14 - File.grep(pattern) -> List
15 - File.grep(pattern) { closure }
16 allow iteration through a file for each line matching a regex pattern
18 - List.first(), List.last(), pop()
19 - Collection.removeIf { x | x > 0 }
20 - Collection.count(foo) -> returns number of objects that equal foo
22 - Map.get(key, defaultValue)
23 - Map.setDefault(key, defaultValue) for things like
24 map.setDefault(key, []).add(newValue)
27 - Object.eachPropertyName { object.getProperty(it) }
28 - Object.setProperties(foo:'abc', x:123)
30 - some kind of Regexp iterator of strings like Ruby's scan
31 - maybe support Pythons' zip and reduce functions?
33 maybe add the various readonly List APIs to Object[] and *[] types
34 if we ever support the DTD / Xed style type*, type+ then we can do the same
40 ÊÊÊ column('user-id') { autoinc(), primaryKey(), references('foo'), initialValue(1234) }
41 ÊÊÊ column('nickname') { varchar(200) }
42 column(name:'foo', type:'varchar(200)', references:['a', 'b'], initialValue:1234)
46 * using mixin for adding using style behaviour to any object??
51 object = this.newInstance()
88 new FileInputStream().using { in |
92 * looks like a bug on generated methods, should use param name over any field name
93 - also it looks like there's various unnecessary stuff (creation of tuples) when invoking
96 * test identity -> hashCode + equals methods
98 * support for property converters, based on type
100 * to support dynamic mixins we should use dynamic proxies to allow
101 a groovy object to change metaclass at runtime
103 * groovy dynamic proxy of any Java object in Java-land?
108 * support static newInstance() method for constructors
110 * maybe split up ClassGenerator - do code gen & class gen separately
114 SomeClass.addMixin(Foo);
116 MetaClass.addInterceptor( new Interceptor() {
118 return method.isPublic();
120 invoke(method, args) {
126 * allow meta classes to be added dynamically using closure syntax?
133 * Support multiple return values...
135 String, Number cheese() {
141 also if we do this we should do assignment / swapping
146 * using macros to avoid dependencies on logging stuff (say)
149 switch (System.getProperty('groovy.log.impl', 'useCommonsLogging')) {
150 case 'useCommonsLogging': {
151 // lets define the new instance method
153 return new CommonsLoggingThingy()
158 return new SimpleGroovyLog()
164 doing things like this at compile time means no runtime dependencies. Ditto to do JDK based compiles
171 * when named method calls are supported with default values, refactor SwingBuilder
172 so that all the creations of widgets occur with SwingFactory which would be
173 useful in and of itself
174 - plus we should be using normal method call mechanism & for groovy to do the rest to avoid
175 the long laborious Map coding
177 * FormModel.addPropertyModel(property)
178 FormModel.addClosureModel(readClosure, writeClosure)
180 * ListModel is-a List but delegates to an underlying list and has events
182 * rename tableLayout -> table and table -> grid
187 -> interactive script + allows scripts to be run & objects explored
193 * patch GroovyTestCase so that methods which return Object are included in the test. This avoids us having to
194 specify void for method return types.This requires a clever static method when we generate the
195 bytecode which can instantiate a special kind of TestSuite
196 unless there's another way?
201 * method invocations - if foo instanceof GroovyObject
202 then generate bytecode
204 foo.invokeMethod(method, args);
206 * could code generate the MetaClass with very efficient dynamic dispatch
207 e.g. could switch() on the method name & then use real method invocation
208 on the method instance