Looks good. This is a really nice change to the DSL, and I'm tempted to push it 
into m4.

We should probably rename TaskCollection and PluginCollection to TaskSet and 
PluginSet. I think it might be good to get rid of these specialisations at some 
point. They don't really add much value. Perhaps we should deprecate 
TaskCollection.whenTaskAdded() and whenTaskRemoved() and 
PluginCollection.whenPluginAdded() and whenPluginRemoved().

Also, do we want to deprecate DomainObjectCollection.getAll() and findAll() ?

I guess at some point (not now) we should think about turning 
NamedDomainObjectSet into a Map. However, it would make sense for 
ResolverContainer, which extends NamedDomainObjectSet, to also extend 
java.util.List as it's an ordered sequence of resolvers, and the order is 
significant. So, we could have something like:

interface NamedDomainObjectMap<T> extends Map<String, T>, Iterable<T> {
    DomainObjectSet<T> values()

    // analogs of all the methods on DomainObjectCollection - perhaps extract a 
super interface
    void all(Closure action)
    void all(Action<? super T> action)
    ...
}

interface ResolverContainer extends NamedDomainObjectMap<DependencyResolver> {
    DomainObjectList<T> values()

    // analogs of methods on List
    DependecyResolver getAt(int index)
    ...
}


On 22/07/2011, at 9:44 AM, [email protected] wrote:

>  Branch: refs/heads/domain-object-collections
>  Home:   https://github.com/gradle/gradle
> 
>  Commit: bece9898df24d60739b88132e41c804bb73c242e
>      
> https://github.com/gradle/gradle/commit/bece9898df24d60739b88132e41c804bb73c242e
>  Author: Luke Daley <[email protected]>
>  Date:   2011-07-21 (Thu, 21 Jul 2011)
> 
>  Changed paths:
>    M 
> subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/repositories/DefaultInternalRepository.java
>  M subprojects/core/src/main/groovy/org/gradle/api/DomainObjectCollection.java
>  A subprojects/core/src/main/groovy/org/gradle/api/DomainObjectSet.java
>  R 
> subprojects/core/src/main/groovy/org/gradle/api/NamedDomainObjectCollection.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/NamedDomainObjectContainer.java
>  A subprojects/core/src/main/groovy/org/gradle/api/NamedDomainObjectSet.java
>  A subprojects/core/src/main/groovy/org/gradle/api/Namer.java
>  M subprojects/core/src/main/groovy/org/gradle/api/Task.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/artifacts/Configuration.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/artifacts/ConfigurationContainer.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/artifacts/ResolverContainer.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/AbstractAutoCreateDomainObjectContainer.java
>  R 
> subprojects/core/src/main/groovy/org/gradle/api/internal/AbstractDomainObjectCollection.java
>  R 
> subprojects/core/src/main/groovy/org/gradle/api/internal/AutoCreateDomainObjectContainer.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/AutoCreateDomainObjectContainerDelegate.groovy
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/CompositeDomainObjectCollection.java
>  R 
> subprojects/core/src/main/groovy/org/gradle/api/internal/DefaultAutoCreateDomainObjectContainer.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/DefaultDomainObjectCollection.java
>  R 
> subprojects/core/src/main/groovy/org/gradle/api/internal/DefaultDomainObjectContainer.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/DefaultDomainObjectSet.java
>  R 
> subprojects/core/src/main/groovy/org/gradle/api/internal/DefaultNamedDomainObjectContainer.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/DefaultNamedDomainObjectSet.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/DynamicPropertyNamer.groovy
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/FactoryAutoCreateDomainObjectContainer.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/FilteredAction.java
>  R 
> subprojects/core/src/main/groovy/org/gradle/api/internal/MutableDomainObjectContainer.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/NamerComparator.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/artifacts/DefaultResolverContainer.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfiguration.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainer.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/collections/CollectionEventRegister.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/collections/CollectionFilter.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/collections/FilteredCollection.java
>  A 
> subprojects/core/src/main/groovy/org/gradle/api/internal/collections/FilteredSet.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/plugins/DefaultPluginCollection.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/plugins/DefaultProjectsPluginContainer.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/project/AbstractProject.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/tasks/DefaultTaskCollection.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/internal/tasks/DefaultTaskContainer.java
>  M 
> subprojects/core/src/main/groovy/org/gradle/api/plugins/PluginCollection.java
>  M subprojects/core/src/main/groovy/org/gradle/api/tasks/TaskCollection.java
>  M 
> subprojects/core/src/test/groovy/org/gradle/api/internal/AutoCreateDomainObjectContainerTest.groovy
>  M 
> subprojects/core/src/test/groovy/org/gradle/api/internal/CompositeDomainObjectCollectionTest.groovy
>  R 
> subprojects/core/src/test/groovy/org/gradle/api/internal/DefaultAutoCreateDomainObjectContainerSpec.groovy
>  A 
> subprojects/core/src/test/groovy/org/gradle/api/internal/DefaultDomainObjectCollectionTest.java
>  R 
> subprojects/core/src/test/groovy/org/gradle/api/internal/DefaultDomainObjectContainerTest.java
>  R 
> subprojects/core/src/test/groovy/org/gradle/api/internal/DefaultNamedDomainObjectContainerTest.java
>  A 
> subprojects/core/src/test/groovy/org/gradle/api/internal/DefaultNamedDomainObjectSetTest.java
>  A 
> subprojects/core/src/test/groovy/org/gradle/api/internal/FactoryAutoCreateDomainObjectContainerSpec.groovy
>  A 
> subprojects/core/src/test/groovy/org/gradle/api/internal/FilteredActionSpec.groovy
>  M subprojects/core/src/test/groovy/org/gradle/api/internal/TestContainer.java
>  M 
> subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.java
>  A 
> subprojects/core/src/test/groovy/org/gradle/api/internal/collections/CollectionEventRegisterSpec.groovy
>  M 
> subprojects/core/src/test/groovy/org/gradle/api/internal/project/DefaultProjectTest.groovy
>  M 
> subprojects/cpp/src/main/groovy/org/gradle/plugins/cpp/CppProjectExtension.java
>  M 
> subprojects/cpp/src/main/groovy/org/gradle/plugins/cpp/built/CppExecutableContainer.java
>  M 
> subprojects/cpp/src/main/groovy/org/gradle/plugins/cpp/built/CppLibraryContainer.java
>  M 
> subprojects/cpp/src/main/groovy/org/gradle/plugins/cpp/built/internal/DefaultCppExecutableContainer.java
>  M 
> subprojects/cpp/src/main/groovy/org/gradle/plugins/cpp/built/internal/DefaultCppLibraryContainer.java
>  M 
> subprojects/cpp/src/main/groovy/org/gradle/plugins/cpp/source/CppSourceSetContainer.java
>  M 
> subprojects/cpp/src/main/groovy/org/gradle/plugins/cpp/source/internal/DefaultCppSourceSetContainer.java
>  A 
> subprojects/docs/src/samples/userguide/tutorial/projectReports/api/build.gradle
>  A 
> subprojects/docs/src/samples/userguide/tutorial/projectReports/webapp/build.gradle
>  M 
> subprojects/plugins/src/main/groovy/org/gradle/api/internal/tasks/DefaultSourceSetContainer.java
>  M 
> subprojects/plugins/src/main/groovy/org/gradle/api/tasks/SourceSetContainer.java
>  M subprojects/signing/src/main/groovy/org/gradle/plugins/signing/Sign.groovy
> 
>  Log Message:
>  -----------
>  Made DomainObjectCollection and implementation of java.util.Collection.
> 
> 
> 
> <hr/>
> <p>
> To unsubscribe from this list please visit:
> </p>
> <p>
>    <a 
> href="http://xircles.codehaus.org/manage_email";>http://xircles.codehaus.org/manage_email</a>
> 


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com

Reply via email to