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