package org.netbeans.gradle.project.query;
import java.io.File;
import java.net.URL;
import javax.swing.event.ChangeListener;
import org.netbeans.api.java.queries.BinaryForSourceQuery.Result;
import org.netbeans.gradle.project.properties.GlobalGradleSettings;
import org.netbeans.gradle.project.util.GradleFileUtils;
import org.netbeans.spi.java.queries.BinaryForSourceQueryImplementation;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.lookup.ServiceProvider;
import org.openide.util.lookup.ServiceProviders;
@ServiceProviders({@ServiceProvider(service = BinaryForSourceQueryImplementation.class)})
public final class GradleHomeBinaryForSourceQuery extends AbstractBinaryForSourceQuery {
public GradleHomeBinaryForSourceQuery() {
}
@Override
protected Result tryFindBinaryRoots(File sourceRoot) {
final FileObject sourceRootObj = FileUtil.toFileObject(sourceRoot);
if (sourceRootObj == null) {
return null;
}
FileObject gradleHomeObj = GlobalGradleSettings.getGradleLocation();
if (gradleHomeObj == null) {
return null;
}
File gradleHome = FileUtil.toFile(gradleHomeObj);
if (gradleHome == null) {
return null;
}
FileObject gradleSrc = GradleFileUtils.getSrcDirOfGradle(gradleHomeObj);
if (gradleSrc == null) {
return null;
}
if (!FileUtil.isParentOf(gradleSrc, sourceRootObj)) {
return null;
}
final URL[] gradleLibs = GradleHomeClassPathProvider.getGradleBinaries(gradleHomeObj);
return new Result() {
@Override
public URL[] getRoots() {
return gradleLibs.clone();
}
@Override
public void addChangeListener(ChangeListener l) {
}
@Override
public void removeChangeListener(ChangeListener l) {
}
};
}
}