Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

remove obsolete file

git-svn-id: http://svn.codehaus.org/groovy/branches/GROOVY_1_6_X@16377 a5544e8c-8a19-0410-ba12-f9af4593a198
  • Loading branch information...
commit e65beeaab1562a0e3a272ccb6bb3e8a194292613 1 parent c751f9b
@paulk-asert paulk-asert authored
Showing with 0 additions and 208 deletions.
  1. +0 −208 TODO.txt
View
208 TODO.txt
@@ -1,208 +0,0 @@
-!!!!!! Obsolete file!! Don't add anything here, use Jira instead.
-
-TODO: remove irrelevant entries, add others to Jira.
-
-Things to Test
-==============
-
-* test synchronized statement
-
-Core Groovy Tasks
-=================
-
-* new GroovyMethods to be added
- - File.grep(pattern) -> List
- - File.grep(pattern) { closure }
- allow iteration through a file for each line matching a regex pattern
-
- - List.first(), List.last(), pop()
- - Collection.removeIf { x | x > 0 }
- - Collection.count(foo) -> returns number of objects that equal foo
-
- - Map.get(key, defaultValue)
- - Map.setDefault(key, defaultValue) for things like
- map.setDefault(key, []).add(newValue)
-
- - Object.eachProperty
- - Object.eachPropertyName { object.getProperty(it) }
- - Object.setProperties(foo:'abc', x:123)
-
- - some kind of Regexp iterator of strings like Ruby's scan
- - maybe support Pythons' zip and reduce functions?
-
- maybe add the various readonly List APIs to Object[] and *[] types
- if we ever support the DTD / Xed style type*, type+ then we can do the same
- there too
-
-* SQL builder
-
-sql.table("users") {
-��� column('user-id') { autoinc(), primaryKey(), references('foo'), initialValue(1234) }
-��� column('nickname') { varchar(200) }
- column(name:'foo', type:'varchar(200)', references:['a', 'b'], initialValue:1234)
- }
-}
-
-* using mixin for adding using style behaviour to any object??
-
- mixin Using {
-
- static using(yield) {
- object = this.newInstance()
- try {
- yield(object)
- object.close()
- }
- catch (Exception e) {
- try {
- object.close()
- }
- catch (Exception e2)
- // ignore e2
- throw e
- }
- }
- }
-
- or
-
- using(yield) {
- try {
- yield(this)
- close()
- }
- catch (Exception e) {
- try {
- close()
- }
- catch (Exception e2)
- // ignore e2
- throw e
- }
- }
- }
- }
-
- then use it as
-
- new FileInputStream().using { in |
- ...
- }
-
-* looks like a bug on generated methods, should use param name over any field name
- - also it looks like there's various unnecessary stuff (creation of tuples) when invoking
- methods
-
-* test identity -> hashCode + equals methods
-
-* support for property converters, based on type
-
-* to support dynamic mixins we should use dynamic proxies to allow
- a groovy object to change metaclass at runtime
-
-* groovy dynamic proxy of any Java object in Java-land?
- NullObject pattern
-
-* immutable bean
-
-* support static newInstance() method for constructors
-
-* maybe split up ClassGenerator - do code gen & class gen separately
-
-* mixin support...
-
- SomeClass.addMixin(Foo);
-
- MetaClass.addInterceptor( new Interceptor() {
- filter(method) {
- return method.isPublic();
- }
- invoke(method, args) {
- // do something
- method.invoke(args);
- }
- });
-
- * allow meta classes to be added dynamically using closure syntax?
- e.g. Map?
-
-
-STUFF TO PONDER
-===============
-
-* Support multiple return values...
-
- String, Number cheese() {
- "hello", 7
- }
-
- a, b = cheese()
-
- also if we do this we should do assignment / swapping
-
- a, b = 1, 2
- a, b = b, a
-
-* using macros to avoid dependencies on logging stuff (say)
-
- class GroovyLog {
- switch (System.getProperty('groovy.log.impl', 'useCommonsLogging')) {
- case 'useCommonsLogging': {
- // lets define the new instance method
- newInstance() {
- return new CommonsLoggingThingy()
- }
- }
- default {
- newInstance() {
- return new SimpleGroovyLog()
- }
- }
- }
- }
-
- doing things like this at compile time means no runtime dependencies. Ditto to do JDK based compiles
-
-UI WORK
-=======
-
-* tree demo...
-
-* when named method calls are supported with default values, refactor SwingBuilder
- so that all the creations of widgets occur with SwingFactory which would be
- useful in and of itself
- - plus we should be using normal method call mechanism & for groovy to do the rest to avoid
- the long laborious Map coding
-
-* FormModel.addPropertyModel(property)
- FormModel.addClosureModel(readClosure, writeClosure)
-
-* ListModel is-a List but delegates to an underlying list and has events
-
-* rename tableLayout -> table and table -> grid
-
-* add sortableGrid
-
-* create a GroovyUI
- -> interactive script + allows scripts to be run & objects explored
-
-
-JUNIT WORK
-==========
-
-* patch GroovyTestCase so that methods which return Object are included in the test. This avoids us having to
-specify void for method return types.This requires a clever static method when we generate the
- bytecode which can instantiate a special kind of TestSuite
- unless there's another way?
-
-
-OPTIMISATIONS
-=============
-* method invocations - if foo instanceof GroovyObject
-then generate bytecode
-
-foo.invokeMethod(method, args);
-
-* could code generate the MetaClass with very efficient dynamic dispatch
- e.g. could switch() on the method name & then use real method invocation
- on the method instance
Please sign in to comment.
Something went wrong with that request. Please try again.