On 22/07/2011, at 11:50 PM, [email protected] wrote:
> Branch: refs/heads/master
> Home: https://github.com/gradle/gradle
>
> Commit: f336c49ec3d1f5300cd7dc6610d784e9641a4e91
>
> https://github.com/gradle/gradle/commit/f336c49ec3d1f5300cd7dc6610d784e9641a4e91
> Author: Szczepan Faber <[email protected]>
> Date: 2011-07-22 (Fri, 22 Jul 2011)
>
> Changed paths:
> M
> subprojects/core/src/main/groovy/org/gradle/api/internal/plugins/AbstractConvention.java
> M
> subprojects/core/src/main/groovy/org/gradle/api/internal/plugins/ExtensionsStorage.java
> M
> subprojects/core/src/main/groovy/org/gradle/api/plugins/ExtensionContainer.java
> M
> subprojects/core/src/test/groovy/org/gradle/api/internal/plugins/ExtensionContainerTest.groovy
ExtensionContainer is starting to look very much like a
NamedDomainObjectContainer. Perhaps we should change it to extend
NamedDominObjectContainer, so that we pick up some DSL goodness (eg
notifications, rules, can use extensions.name in expressions, and so on). We
can also get rid of ExtensionsStorage, as DefaultConvention can just extend
DefaultNamedDomainObjectContainer.
It might also be good to hoist some methods up to DomainObjectCollection:
* <T> T getWithType(Class<T> type)
returns the object with the given type, or fails if there is no such
object, or multiple such objects.
* <T> T findWithType(Class<T> type)
returns the object with the given type, or null if there is no such
object, or fails if there are multiple such objects.
* Perhaps also <T> T getAt(Class<T> type)
so we can using container[type] in expressions. Same behaviour as
getWithType()
I can see these being generally useful (they're already present in
PluginContainer, for example).
--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com