/* * Copyright (C) 2013 The Android Open Source Project * * 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 com.android.build.gradle.internal.model; import com.android.annotations.NonNull; import com.android.annotations.Nullable; import com.android.builder.model.Dependencies; import com.android.builder.model.JavaArtifact; import com.android.builder.model.SourceProvider; import com.google.common.collect.Sets; import java.io.File; import java.io.Serializable; import java.util.Collection; import java.util.Set; /** * Implementation of JavaArtifact that is serializable */ public class JavaArtifactImpl extends BaseArtifactImpl implements JavaArtifact, Serializable { private static final long serialVersionUID = 1L; private final Set<String> ideSetupTaskNames; @Nullable private final File mockablePlatformJar; public static JavaArtifactImpl clone(@NonNull JavaArtifact javaArtifact) { SourceProvider variantSP = javaArtifact.getVariantSourceProvider(); SourceProvider flavorsSP = javaArtifact.getMultiFlavorSourceProvider(); return new JavaArtifactImpl( javaArtifact.getName(), javaArtifact.getAssembleTaskName(), javaArtifact.getCompileTaskName(), javaArtifact.getIdeSetupTaskNames(), javaArtifact.getGeneratedSourceFolders(), javaArtifact.getClassesFolder(), javaArtifact.getJavaResourcesFolder(), javaArtifact.getMockablePlatformJar(), DependenciesImpl.cloneDependenciesForJavaArtifacts(javaArtifact.getDependencies()), variantSP != null ? SourceProviderImpl.cloneProvider(variantSP) : null, flavorsSP != null ? SourceProviderImpl.cloneProvider(flavorsSP) : null); } public JavaArtifactImpl(@NonNull String name, @NonNull String assembleTaskName, @NonNull String compileTaskName, @NonNull Iterable<String> ideSetupTaskNames, @NonNull Collection<File> generatedSourceFolders, @NonNull File classesFolder, @NonNull File javaResourcesFolder, @Nullable File mockablePlatformJar, @NonNull Dependencies dependencies, @Nullable SourceProvider variantSourceProvider, @Nullable SourceProvider multiFlavorSourceProviders) { super(name, assembleTaskName, compileTaskName, classesFolder, javaResourcesFolder, dependencies, variantSourceProvider, multiFlavorSourceProviders, generatedSourceFolders); this.ideSetupTaskNames = Sets.newHashSet(ideSetupTaskNames); this.mockablePlatformJar = mockablePlatformJar; } @NonNull @Override public Set<String> getIdeSetupTaskNames() { return ideSetupTaskNames; } @Override @Nullable public File getMockablePlatformJar() { return mockablePlatformJar; } }