package org.netbeans.gradle.model.internal;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.netbeans.gradle.model.api.ProjectInfoBuilder2;
import org.netbeans.gradle.model.util.SerializationCache;
import org.netbeans.gradle.model.util.TransferableExceptionWrapper;
public final class ModelQueryInput implements Serializable {
private static final long serialVersionUID = 1L;
// Object -> List of ProjectInfoBuilder<?>
private final CustomSerializedMap.Deserializer projectInfoRequests;
public ModelQueryInput(CustomSerializedMap.Deserializer projectInfoRequests) {
if (projectInfoRequests == null) throw new NullPointerException("projectInfoRequests");
this.projectInfoRequests = projectInfoRequests;
}
public Map<Object, List<?>> getProjectInfoRequests(SerializationCache cache, ClassLoader parent) {
return projectInfoRequests.deserialize(
cache,
parent,
projectInfoBuilderIssueTransformer());
}
public static IssueTransformer projectInfoBuilderIssueTransformer() {
return ProjectInfoBuilderIssueTransformer.INSTANCE;
}
private static enum ProjectInfoBuilderIssueTransformer implements IssueTransformer {
INSTANCE;
public Object transformIssue(Throwable issue) {
return new FailingProjectInfoBuilder(issue);
}
}
private static final class FailingProjectInfoBuilder implements ProjectInfoBuilder2<Void> {
private static final long serialVersionUID = 1L;
private final RuntimeException issue;
public FailingProjectInfoBuilder(Throwable issue) {
this.issue = TransferableExceptionWrapper.wrap(issue);
}
public Void getProjectInfo(Object project) {
throw issue;
}
public String getName() {
return "";
}
}
}