package aQute.bnd.build; import java.io.File; import java.util.List; import java.util.Map; import aQute.bnd.osgi.Processor; import aQute.bnd.osgi.Resource; import aQute.bnd.service.export.Exporter; public class Run extends Project { /** * Create a Run that will be stand alone if it contains -standalone. In that * case the given workspace is ignored. Otherwise, the workspace must be a * valid workspace. */ public static Run createRun(Workspace workspace, File file) throws Exception { Processor processor; if (workspace != null) { Run run = new Run(workspace, file); if (run.getProperties().get(STANDALONE) == null) { return run; } // -standalone specified processor = run; } else { processor = new Processor(); processor.setProperties(file); } Workspace standaloneWorkspace = Workspace.createStandaloneWorkspace(processor, file.toURI()); Run run = new Run(standaloneWorkspace, file); return run; } public Run(Workspace workspace, File projectDir, File propertiesFile) throws Exception { super(workspace, projectDir, propertiesFile); } public Run(Workspace workspace, File propertiesFile) throws Exception { super(workspace, propertiesFile == null ? null : propertiesFile.getParentFile(), propertiesFile); } public void report(Map<String,Object> table) throws Exception { super.report(table, false); } public String toString() { return getPropertiesFile().getName(); } public Map.Entry<String,Resource> export(String type, Map<String,String> options) throws Exception { Exporter exporter = getExporter(type); if (exporter == null) { error("No exporter for %s", type); return null; } return exporter.export(type, this, options); } private Exporter getExporter(String type) { List<Exporter> exporters = getPlugins(Exporter.class); for (Exporter e : exporters) { for (String exporterType : e.getTypes()) { if (type.equals(exporterType)) { return e; } } } return null; } public boolean isStandalone() { return getWorkspace().getLayout() == WorkspaceLayout.STANDALONE; } }