Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright 2010 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;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableSet;
import groovy.lang.Closure;
import groovy.lang.MissingPropertyException;
import groovy.util.ObservableList;
import org.codehaus.groovy.runtime.InvokerInvocationException;
import org.gradle.api.Action;
import org.gradle.api.AntBuilder;
import org.gradle.api.Describable;
import org.gradle.api.InvalidUserDataException;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.internal.file.FileResolver;
import org.gradle.api.internal.file.TemporaryFileProvider;
import org.gradle.api.internal.project.ProjectInternal;
import org.gradle.api.internal.project.taskfactory.TaskIdentity;
import org.gradle.api.internal.tasks.ClassLoaderAwareTaskAction;
import org.gradle.api.internal.tasks.ContextAwareTaskAction;
import org.gradle.api.internal.tasks.DefaultPropertySpecFactory;
import org.gradle.api.internal.tasks.DefaultTaskDependency;
import org.gradle.api.internal.tasks.DefaultTaskDestroyables;
import org.gradle.api.internal.tasks.DefaultTaskInputs;
import org.gradle.api.internal.tasks.DefaultTaskLocalState;
import org.gradle.api.internal.tasks.DefaultTaskOutputs;
import org.gradle.api.internal.tasks.PropertySpecFactory;
import org.gradle.api.internal.tasks.TaskContainerInternal;
import org.gradle.api.internal.tasks.TaskDependencyInternal;
import org.gradle.api.internal.tasks.TaskExecuter;
import org.gradle.api.internal.tasks.TaskExecutionContext;
import org.gradle.api.internal.tasks.TaskLocalStateInternal;
import org.gradle.api.internal.tasks.TaskMutator;
import org.gradle.api.internal.tasks.TaskStateInternal;
import org.gradle.api.internal.tasks.execution.DefaultTaskExecutionContext;
import org.gradle.api.internal.tasks.execution.TaskValidator;
import org.gradle.api.internal.tasks.properties.PropertyWalker;
import org.gradle.api.logging.Logger;
import org.gradle.api.logging.Logging;
import org.gradle.api.plugins.Convention;
import org.gradle.api.plugins.ExtensionContainer;
import org.gradle.api.specs.AndSpec;
import org.gradle.api.specs.Spec;
import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.TaskDependency;
import org.gradle.api.tasks.TaskDestroyables;
import org.gradle.api.tasks.TaskInstantiationException;
import org.gradle.api.tasks.TaskLocalState;
import org.gradle.internal.Factory;
import org.gradle.internal.logging.compatbridge.LoggingManagerInternalCompatibilityBridge;
import org.gradle.internal.metaobject.DynamicObject;
import org.gradle.internal.reflect.Instantiator;
import org.gradle.internal.scripts.ScriptOrigin;
import org.gradle.internal.service.ServiceRegistry;
import org.gradle.logging.LoggingManagerInternal;
import org.gradle.logging.StandardOutputCapture;
import org.gradle.util.ConfigureUtil;
import org.gradle.util.DeprecationLogger;
import org.gradle.util.GFileUtils;
import org.gradle.util.Path;
import javax.annotation.Nullable;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import static org.gradle.util.GUtil.uncheckedCall;
public abstract class AbstractTask implements TaskInternal, DynamicObjectAware {
private static final Logger BUILD_LOGGER = Logging.getLogger(Task.class);
private static final ThreadLocal NEXT_INSTANCE = new ThreadLocal();
private final TaskIdentity> identity;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private final ProjectInternal _project;
private List actions;
private boolean enabled = true;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private final DefaultTaskDependency _dependencies;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private final DefaultTaskDependency _mustRunAfter;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private final DefaultTaskDependency _finalizedBy;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private final DefaultTaskDependency _shouldRunAfter;
private ExtensibleDynamicObject extensibleDynamicObject;
private String description;
private String group;
private AndSpec onlyIfSpec = createNewOnlyIfSpec();
private TaskExecuter executer;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private final ServiceRegistry _services;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private final TaskStateInternal _state;
// Weird name to work around https://issues.apache.org/jira/browse/GROOVY-8732
private Logger _logger = BUILD_LOGGER;
private final TaskMutator taskMutator;
private ObservableList observableActionList;
private boolean impliesSubProjects;
private boolean hasCustomActions;
private final TaskInputsInternal taskInputs;
private final TaskOutputsInternal taskOutputs;
private final TaskDestroyables taskDestroyables;
private final TaskLocalStateInternal taskLocalState;
private LoggingManagerInternal loggingManager;
private String toStringValue;
private final PropertySpecFactory specFactory;
protected AbstractTask() {
this(taskInfo());
}
private static TaskInfo taskInfo() {
return NEXT_INSTANCE.get();
}
private AbstractTask(TaskInfo taskInfo) {
if (taskInfo == null) {
throw new TaskInstantiationException(String.format("Task of type '%s' has been instantiated directly which is not supported. Tasks can only be created using the Gradle API or DSL.", getClass().getName()));
}
this.identity = taskInfo.identity;
this._project = taskInfo.project;
assert _project != null;
assert identity.name != null;
this._state = new TaskStateInternal();
TaskContainerInternal tasks = _project.getTasks();
this._mustRunAfter = new DefaultTaskDependency(tasks);
this._finalizedBy = new DefaultTaskDependency(tasks);
this._shouldRunAfter = new DefaultTaskDependency(tasks);
this._services = _project.getServices();
FileResolver fileResolver = _project.getFileResolver();
PropertyWalker propertyWalker = _services.get(PropertyWalker.class);
taskMutator = new TaskMutator(this);
specFactory = new DefaultPropertySpecFactory(this, fileResolver);
taskInputs = new DefaultTaskInputs(this, taskMutator, propertyWalker, specFactory);
taskOutputs = new DefaultTaskOutputs(this, taskMutator, propertyWalker, specFactory);
taskDestroyables = new DefaultTaskDestroyables(taskMutator);
taskLocalState = new DefaultTaskLocalState(taskMutator);
this._dependencies = new DefaultTaskDependency(tasks, ImmutableSet.