package org.bundlemaker.core.internal.modules.jdk;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import org.bundlemaker.core.common.utils.VMInstallUtils;
import org.bundlemaker.core.project.AnalyzeMode;
import org.bundlemaker.core.project.IProjectContentEntry;
import org.bundlemaker.core.project.spi.AbstractProjectContentProvider;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.launching.IVMInstall;
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.jdt.launching.LibraryLocation;
public class JdkContentProvider extends AbstractProjectContentProvider {
/**
* {@inheritDoc}
*/
@Override
public void onInitializeProjectContent(IProgressMonitor progressMonitor) throws CoreException {
//
String jre = getBundleMakerProject().getProjectDescription().getJRE();
// get the vm install (has to exist exist)
IVMInstall vmInstall = VMInstallUtils.getIVMInstall(jre);
if (vmInstall == null) {
vmInstall = JavaRuntime.getDefaultVMInstall();
}
//
List<File> binaries = new LinkedList<File>();
//
for (LibraryLocation libraryLocation : JavaRuntime.getLibraryLocations(vmInstall)) {
// get the root
File root = libraryLocation.getSystemLibraryPath().toFile();
//
binaries.add(root);
}
//
IProjectContentEntry contentEntry = createFileBasedContent(vmInstall.getName(), vmInstall.getName(),
binaries.toArray(new File[0]), null,
AnalyzeMode.DO_NOT_ANALYZE);
contentEntry.getUserAttributes().put("EXECUTION_ENVIRONMENT", true);
}
}