
org.gradle.api.internal.model.DefaultObjectFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-api Show documentation
Show all versions of gradle-api Show documentation
Gradle 6.9.1 API redistribution.
/*
* Copyright 2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gradle.api.internal.model;
import org.gradle.api.DomainObjectSet;
import org.gradle.api.Named;
import org.gradle.api.NamedDomainObjectContainer;
import org.gradle.api.NamedDomainObjectFactory;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.file.Directory;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.RegularFile;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.file.SourceDirectorySet;
import org.gradle.api.internal.collections.DomainObjectCollectionFactory;
import org.gradle.api.internal.file.DefaultSourceDirectorySet;
import org.gradle.api.internal.file.FileCollectionFactory;
import org.gradle.api.internal.file.FilePropertyFactory;
import org.gradle.api.internal.file.FileResolver;
import org.gradle.api.internal.file.collections.DirectoryFileTreeFactory;
import org.gradle.api.internal.provider.DefaultListProperty;
import org.gradle.api.internal.provider.DefaultMapProperty;
import org.gradle.api.internal.provider.DefaultProperty;
import org.gradle.api.internal.provider.DefaultSetProperty;
import org.gradle.api.model.ObjectFactory;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.MapProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.SetProperty;
import org.gradle.api.reflect.ObjectInstantiationException;
import org.gradle.internal.Cast;
import org.gradle.internal.Factory;
import org.gradle.internal.reflect.Instantiator;
import org.gradle.internal.reflect.JavaReflectionUtil;
import org.gradle.util.DeprecationLogger;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class DefaultObjectFactory implements ObjectFactory {
private final Instantiator instantiator;
private final NamedObjectInstantiator namedObjectInstantiator;
private final FileResolver fileResolver;
private final DirectoryFileTreeFactory directoryFileTreeFactory;
private final FilePropertyFactory filePropertyFactory;
private final FileCollectionFactory fileCollectionFactory;
private final DomainObjectCollectionFactory domainObjectCollectionFactory;
public DefaultObjectFactory(Instantiator instantiator, NamedObjectInstantiator namedObjectInstantiator, FileResolver fileResolver, DirectoryFileTreeFactory directoryFileTreeFactory, FilePropertyFactory filePropertyFactory, FileCollectionFactory fileCollectionFactory, DomainObjectCollectionFactory domainObjectCollectionFactory) {
this.instantiator = instantiator;
this.namedObjectInstantiator = namedObjectInstantiator;
this.fileResolver = fileResolver;
this.directoryFileTreeFactory = directoryFileTreeFactory;
this.filePropertyFactory = filePropertyFactory;
this.fileCollectionFactory = fileCollectionFactory;
this.domainObjectCollectionFactory = domainObjectCollectionFactory;
}
@Override
public T named(final Class type, final String name) {
return namedObjectInstantiator.named(type, name);
}
@Override
public T newInstance(Class extends T> type, Object... parameters) throws ObjectInstantiationException {
return instantiator.newInstance(type, parameters);
}
@Override
public ConfigurableFileCollection fileCollection() {
return fileCollectionFactory.configurableFiles();
}
@Override
public SourceDirectorySet sourceDirectorySet(final String name, final String displayName) {
return DeprecationLogger.whileDisabled(new Factory() {
@Nullable
@Override
public SourceDirectorySet create() {
return new DefaultSourceDirectorySet(name, displayName, fileResolver, directoryFileTreeFactory, DefaultObjectFactory.this);
}
});
}
@Override
public DirectoryProperty directoryProperty() {
return filePropertyFactory.newDirectoryProperty();
}
@Override
public RegularFileProperty fileProperty() {
return filePropertyFactory.newFileProperty();
}
@Override
public NamedDomainObjectContainer domainObjectContainer(Class elementType) {
return domainObjectCollectionFactory.newNamedDomainObjectContainer(elementType);
}
@Override
public NamedDomainObjectContainer domainObjectContainer(Class elementType, NamedDomainObjectFactory factory) {
return domainObjectCollectionFactory.newNamedDomainObjectContainer(elementType, factory);
}
@Override
public DomainObjectSet domainObjectSet(Class elementType) {
return domainObjectCollectionFactory.newDomainObjectSet(elementType);
}
@Override
public Property property(Class valueType) {
if (valueType == null) {
throw new IllegalArgumentException("Class cannot be null");
}
if (valueType.isPrimitive()) {
// Kotlin passes these types for its own basic types
return Cast.uncheckedCast(property(JavaReflectionUtil.getWrapperTypeForPrimitiveType(valueType)));
}
if (List.class.isAssignableFrom(valueType)) {
DeprecationLogger.nagUserOfReplacedMethodInvocation("ObjectFactory.property() to create a property of type List", "ObjectFactory.listProperty()");
} else if (Set.class.isAssignableFrom(valueType)) {
DeprecationLogger.nagUserOfReplacedMethodInvocation("ObjectFactory.property() method to create a property of type Set", "ObjectFactory.setProperty()");
} else if (Map.class.isAssignableFrom(valueType)) {
DeprecationLogger.nagUserOfReplacedMethodInvocation("ObjectFactory.property() method to create a property of type Map", "ObjectFactory.mapProperty()");
} else if (Directory.class.isAssignableFrom(valueType)) {
DeprecationLogger.nagUserOfReplacedMethodInvocation("ObjectFactory.property() method to create a property of type Directory", "ObjectFactory.directoryProperty()");
} else if (RegularFile.class.isAssignableFrom(valueType)) {
DeprecationLogger.nagUserOfReplacedMethodInvocation("ObjectFactory.property() method to create a property of type RegularFile", "ObjectFactory.fileProperty()");
}
return new DefaultProperty(valueType);
}
@Override
public ListProperty listProperty(Class elementType) {
if (elementType.isPrimitive()) {
// Kotlin passes these types for its own basic types
return Cast.uncheckedCast(listProperty(JavaReflectionUtil.getWrapperTypeForPrimitiveType(elementType)));
}
return new DefaultListProperty(elementType);
}
@Override
public SetProperty setProperty(Class elementType) {
if (elementType.isPrimitive()) {
// Kotlin passes these types for its own basic types
return Cast.uncheckedCast(setProperty(JavaReflectionUtil.getWrapperTypeForPrimitiveType(elementType)));
}
return new DefaultSetProperty(elementType);
}
@Override
public MapProperty mapProperty(Class keyType, Class valueType) {
if (keyType.isPrimitive()) {
// Kotlin passes these types for its own basic types
return Cast.uncheckedCast(mapProperty(JavaReflectionUtil.getWrapperTypeForPrimitiveType(keyType), valueType));
}
if (valueType.isPrimitive()) {
// Kotlin passes these types for its own basic types
return Cast.uncheckedCast(mapProperty(keyType, JavaReflectionUtil.getWrapperTypeForPrimitiveType(valueType)));
}
return new DefaultMapProperty(keyType, valueType);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy