package org.netbeans.gradle.project.java.model;
import java.io.File;
import java.io.InvalidObjectException;
import java.io.ObjectInputStream;
import java.io.ObjectStreamException;
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.jtrim.utils.ExceptionHelper;
public final class NbJarOutput implements Serializable {
private static final long serialVersionUID = 1L;
public static final String DEFAULT_JAR_TASK_NAME = "jar";
private final String taskName;
private final File jar;
private final Set<File> classDirs;
public NbJarOutput(String taskName, File jar, Collection<? extends File> classDirs) {
ExceptionHelper.checkNotNullArgument(taskName, "taskName");
ExceptionHelper.checkNotNullArgument(jar, "jar");
this.taskName = taskName;
this.jar = jar;
this.classDirs = Collections.unmodifiableSet(new HashSet<>(classDirs));
ExceptionHelper.checkNotNullElements(this.classDirs, "classDirs");
}
public String getTaskName() {
return taskName;
}
public File getJar() {
return jar;
}
public Set<File> getClassDirs() {
return classDirs;
}
public boolean isDefaultJar() {
return DEFAULT_JAR_TASK_NAME.equalsIgnoreCase(taskName);
}
private Object writeReplace() {
return new SerializedFormat(this);
}
private void readObject(ObjectInputStream stream) throws InvalidObjectException {
throw new InvalidObjectException("Use proxy.");
}
private static final class SerializedFormat implements Serializable {
private static final long serialVersionUID = 1L;
private final String taskName;
private final File jar;
private final Set<File> classDirs;
public SerializedFormat(NbJarOutput source) {
this.taskName = source.taskName;
this.jar = source.jar;
this.classDirs = source.classDirs;
}
private Object readResolve() throws ObjectStreamException {
return new NbJarOutput(taskName, jar, classDirs);
}
}
}