package org.netbeans.gradle.model;
import java.util.Arrays;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
import org.gradle.tooling.BuildController;
import org.netbeans.gradle.model.util.BuilderUtils;
import org.netbeans.gradle.model.util.CollectionUtils;
public final class BuiltInModelBuilder implements BuildInfoBuilder<Map<Class<?>, Object>> {
private static final long serialVersionUID = 1L;
private final Set<Class<?>> modelClasses;
public BuiltInModelBuilder(Class<?>... modelClasses) {
this.modelClasses = new HashSet<Class<?>>(Arrays.asList(modelClasses));
CollectionUtils.checkNoNullElements(this.modelClasses, "modelClasses");
}
public Map<Class<?>, Object> getInfo(BuildController controller) {
Map<Class<?>, Object> result = new IdentityHashMap<Class<?>, Object>();
for (Class<?> modelClass: modelClasses) {
Object model = controller.findModel(modelClass);
if (model != null) {
result.put(modelClass, model);
}
}
return result;
}
public String getName() {
return BuilderUtils.getNameForGenericBuilder(this, modelClasses.toString());
}
}