public static String getOptionBooleanCommand(IConfiguration config, String sOptionId) { IOption option = config.getToolChain().getOptionBySuperClassId(sOptionId); String sReturn = null; if (option != null) { try { if (option.getBooleanValue()) sReturn = option.getCommand().trim(); } catch (BuildException e) { Activator.log(e); } } else { Activator.log(sOptionId + " not found"); } return sReturn; }
public static Boolean getOptionBooleanValue(IConfiguration config, String sOptionId) { IOption option = config.getToolChain().getOptionBySuperClassId(sOptionId); Boolean bReturn = null; if (option != null) { try { bReturn = new Boolean(option.getBooleanValue()); } catch (BuildException e) { Activator.log(e); } } else { Activator.log(sOptionId + " not found"); } return bReturn; }
private Collection<String> getLinkerOptionValues(int linkerOption) { for (ITool tool : config.getToolChain().getTools()) { if (!isToolLinker(tool)) { continue; } for (IOption o : tool.getOptions()) { try { if (o.getValueType() != linkerOption) { continue; } return orderPreservingSet( linkerOption == IOption.LIBRARY_PATHS ? o.getLibraryPaths() : o.getLibraries()); } catch (BuildException e) { } } } return Collections.emptySet(); }
private void syncNameField(ICConfigurationDescription cfgd) { IConfiguration icfg = ManagedBuildManager.getConfigurationForDescription(cfgd); String id = cfgd.getId(); if (icfg != null) { IToolChain toolchain = icfg.getToolChain(); ITool[] tools = toolchain.getTools(); for (int j = 0; j < tools.length; ++j) { ITool tool = tools[j]; if (tool.getName().equals("configure")) { // $NON-NLS-1$ IOption option = tool.getOptionBySuperClassId( "org.eclipse.linuxtools.cdt.autotools.core.option.configure.name"); // $NON-NLS-1$ IHoldsOptions h = tool; try { IOption optionToSet = h.getOptionToSet(option, false); optionToSet.setValue(id); } catch (BuildException e) { } } } } }
@Override public String generateCommand(IOption optionCmd, IVariableSubstitutor macroSubstitutor) { String allValue = ""; String[] optionList = null; String command = optionCmd.getCommand(); Object optionListArg = optionCmd.getValue(); String optionRefId = optionCmd.getBaseId(); IHoldsOptions optionHolder = optionCmd.getOptionHolder(); // If cache is defined then it already contains the cdt path. optionRefId = optionRefId.substring(0, optionRefId.lastIndexOf(".")); IOption optionCached = optionHolder.getOptionBySuperClassId(optionRefId + ".cache"); try { if (optionCached.getStringListValue().length != 0) { return ""; } } catch (BuildException e) { } if (!(optionListArg instanceof ArrayList<?>)) { return ""; } ((ArrayList<String>) (optionListArg)).trimToSize(); optionList = ((ArrayList<String>) (optionListArg)).toArray(new String[0]); if (optionList.length != 0) { for (String argValue : optionList) { allValue += command + '"' + stripRelative(argValue, macroSubstitutor) + '"' + " "; } allValue = allValue.trim(); return allValue; } return ""; }
public void testEnablement_Bug250686() throws Exception { final String testName = getName(); IProject project = ManagedBuildTestHelper.createProject(testName, PROJECT_TYPE); assertNotNull(project); IFolder folder = ManagedBuildTestHelper.createFolder(project, "Folder"); assertNotNull(folder); IFile file = ManagedBuildTestHelper.createFile(project, "Folder/file.c"); assertNotNull(file); ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project); prjDescription.getConfigurationByName(CFG_NAME); IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); IConfiguration cfg = info.getManagedProject().getConfigurations()[0]; assertNotNull(cfg); assertEquals(CFG_NAME, cfg.getName()); { // Round 1. Test root folder option IFolderInfo rootFolderInfo = cfg.getRootFolderInfo(); assertNotNull(rootFolderInfo); IOption option = getOptionForFolder(rootFolderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ENABLEMENT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 1. Test subfolder option IResourceInfo folderInfo = cfg.getResourceInfo(folder.getFullPath(), false); assertNotNull(folderInfo); assertTrue(folderInfo instanceof IFolderInfo); IOption option = getOptionForFolder((IFolderInfo) folderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ENABLEMENT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 1. Test file option IResourceInfo fileInfo = cfg.getResourceInfo(file.getFullPath(), false); assertNotNull(fileInfo); assertTrue(fileInfo instanceof IFolderInfo); // Option is taken from root folder here IOption option = getOptionForFolder((IFolderInfo) fileInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ENABLEMENT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 2. Override the value of the option for the root folder IFolderInfo rootFolderInfo = cfg.getRootFolderInfo(); ITool[] tools = rootFolderInfo.getToolsBySuperClassId(TOOL_ID); assertEquals(1, tools.length); IOption option = getOptionForFolder(rootFolderInfo, TOOL_ID, OPTION_ID); rootFolderInfo.setOption(tools[0], option, OPTION_VALUE_ROOT); } { // Round 2. Test root folder option IFolderInfo rootFolderInfo = cfg.getRootFolderInfo(); assertNotNull(rootFolderInfo); IOption option = getOptionForFolder(rootFolderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ROOT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 2. Test subfolder option IResourceInfo folderInfo = cfg.getResourceInfo(folder.getFullPath(), false); assertNotNull(folderInfo); assertTrue(folderInfo instanceof IFolderInfo); IOption option = getOptionForFolder((IFolderInfo) folderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ROOT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 2. Test file option IResourceInfo fileInfo = cfg.getResourceInfo(file.getFullPath(), false); assertNotNull(fileInfo); assertTrue(fileInfo instanceof IFolderInfo); // Option is taken from root folder here IOption option = getOptionForFolder((IFolderInfo) fileInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ROOT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 3. Override the value of the option for the subfolder IFolderInfo folderInfo = cfg.createFolderInfo(folder.getFullPath()); assertNotNull(folderInfo); ITool[] tools = folderInfo.getToolsBySuperClassId(TOOL_ID); assertEquals(1, tools.length); IOption option = getOptionForFolder(folderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ROOT, option.getValue()); assertFalse(option.isExtensionElement()); folderInfo.setOption(tools[0], option, OPTION_VALUE_FOLDER); } { // Round 3. Test root folder option IFolderInfo rootFolderInfo = cfg.getRootFolderInfo(); assertNotNull(rootFolderInfo); IOption option = getOptionForFolder(rootFolderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ROOT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 3. Test subfolder option IResourceInfo folderInfo = cfg.getResourceInfo(folder.getFullPath(), false); assertNotNull(folderInfo); assertTrue(folderInfo instanceof IFolderInfo); IOption option = getOptionForFolder((IFolderInfo) folderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_FOLDER, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 3. Test file option IResourceInfo fileInfo = cfg.getResourceInfo(file.getFullPath(), false); assertNotNull(fileInfo); assertTrue(fileInfo instanceof IFolderInfo); // Option is taken from parent folder here IOption option = getOptionForFolder((IFolderInfo) fileInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_FOLDER, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 4. Override the value of the option for the file IFileInfo fileInfo = cfg.createFileInfo(file.getFullPath()); assertNotNull(fileInfo); ITool[] tools = fileInfo.getTools(); assertEquals(1, tools.length); ITool tool = tools[0]; assertNotNull(tool); IOption option = getOptionForFile(fileInfo, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_FOLDER, option.getValue()); assertFalse(option.isExtensionElement()); fileInfo.setOption(tool, option, OPTION_VALUE_FILE); } { // Round 4. Test root folder option IFolderInfo rootFolderInfo = cfg.getRootFolderInfo(); assertNotNull(rootFolderInfo); IOption option = getOptionForFolder(rootFolderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_ROOT, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 4. Test subfolder option IResourceInfo folderInfo = cfg.getResourceInfo(folder.getFullPath(), false); assertNotNull(folderInfo); assertTrue(folderInfo instanceof IFolderInfo); IOption option = getOptionForFolder((IFolderInfo) folderInfo, TOOL_ID, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_FOLDER, option.getValue()); assertFalse(option.isExtensionElement()); } { // Round 4. Test file option IResourceInfo fileInfo = cfg.getResourceInfo(file.getFullPath(), false); assertNotNull(fileInfo); assertTrue(fileInfo instanceof IFileInfo); IOption option = getOptionForFile((IFileInfo) fileInfo, OPTION_ID); assertNotNull(option); assertEquals(OPTION_VALUE_FILE, option.getValue()); assertFalse(option.isExtensionElement()); } ManagedBuildTestHelper.removeProject(testName); }
private void doTestEnablement(IBuildObject cfg) { ITool tool = getTool(cfg, "enablement.this.child_1.2.3"); ITool otherTool = getTool(cfg, "enablement.other"); ITool tool2 = getTool(cfg, "enablement.this.child.2_1.2.3"); // IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); IOption thisBoolean = tool.getOptionBySuperClassId("this.boolean"); IOption thisString = tool.getOptionBySuperClassId("this.string"); IOption thisEnum = tool.getOptionBySuperClassId("this.enum"); IOption otherString = otherTool.getOptionBySuperClassId("other.string"); IOption otherBoolean = otherTool.getOptionBySuperClassId("other.boolean"); try { IOption option = tool.getOptionBySuperClassId("enablement.command.c1"); assertEquals(option.getCommand(), "c1"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.command.c2"); assertEquals(option.getCommand(), "c2"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.commandFalse.c1"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "c1"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.commandFalse.c2"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "c2"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.command.c1.commandFalse.cF1"); assertEquals(option.getCommand(), "c1"); assertEquals(option.getCommandFalse(), "cF1"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.command.cmd.commandFalse.cmdF"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.command.c1.commandFalse.cmdF"); assertEquals(option.getCommand(), "c1"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.command.cmd.commandFalse.cF1"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.ui.en"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.ui.vis"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.cmd.us"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.cmdUs.or.uiVis"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.uiEn.or.uiVis"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.all"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.all.ac.vh"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); setEnablement(false, false, false); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); setEnablement(false, true, false); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); setEnablement(false, false, true); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); setEnablement(true, false, false); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); setEnablement(false, false, false); option = tool.getOptionBySuperClassId("enablement.all.cF1.ac.vh"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); setEnablement(true, false, true); option = tool.getOptionBySuperClassId("enablement.all.cF.cmdF"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.all.cF.cF1"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cF1"); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("this.boolean"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOpt.all.Q.this.boolean.True"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( thisBoolean.getBooleanValue() == true, option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( thisBoolean.getBooleanValue() == true, option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( thisBoolean.getBooleanValue() == true, option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOpt.all.Q.this.boolean.False"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( thisBoolean.getBooleanValue() == false, option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( thisBoolean.getBooleanValue() == false, option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( thisBoolean.getBooleanValue() == false, option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOpt.all.Q.this.string.Q.empty"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( thisString.getStringValue().equals(""), option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( thisString.getStringValue().equals(""), option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( thisString.getStringValue().equals(""), option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOpt.all.Q.this.string.Q.test a b c"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( thisString.getStringValue().equals("test a b c"), option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( thisString.getStringValue().equals("test a b c"), option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( thisString.getStringValue().equals("test a b c"), option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId( "enablement.checkOpt.all.Q.this.enum.Q.testgnu.enablement.c.optimization.level.optimize"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); String id = thisEnum.getEnumeratedId(thisEnum.getStringValue()); if (id == null) id = ""; assertEquals( id.equals("testgnu.enablement.c.optimization.level.optimize"), option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( id.equals("testgnu.enablement.c.optimization.level.optimize"), option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( id.equals("testgnu.enablement.c.optimization.level.optimize"), option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOpt.all.Q.this.Q.true"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( option.getBooleanValue() == true, option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( option.getBooleanValue() == true, option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( option.getBooleanValue() == true, option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId( "enablement.checkOpt.all.Q.this.string.Q.start ${ParentVersion} stop"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( thisString.getStringValue().equals("start 1.2.3 stop"), option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( thisString.getStringValue().equals("start 1.2.3 stop"), option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( thisString.getStringValue().equals("start 1.2.3 stop"), option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOpt.all.Q.this.string.Q.other.string"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( thisString.getStringValue().equals(otherString.getStringValue()), option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( thisString.getStringValue().equals(otherString.getStringValue()), option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( thisString.getStringValue().equals(otherString.getStringValue()), option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOpt.all.Q.this.string.Q.other.string"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertEquals( thisString.getStringValue().equals(otherString.getStringValue()), option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertEquals( thisString.getStringValue().equals(otherString.getStringValue()), option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertEquals( thisString.getStringValue().equals(otherString.getStringValue()), option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkString"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkString.2"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkString.3"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkFalse.false"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkNot.false"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkOr.true"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkAnd.false"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertFalse(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool.getOptionBySuperClassId("enablement.checkHolder.true.1.false.2"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertTrue(option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionVisible(cfg, tool, option)); assertTrue(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool, option)); option = tool2.getOptionBySuperClassId("enablement.checkHolder.true.1.false.2"); assertEquals(option.getCommand(), "cmd"); assertEquals(option.getCommandFalse(), "cmdF"); assertFalse( option.getApplicabilityCalculator().isOptionUsedInCommandLine(cfg, tool2, option)); assertFalse(option.getApplicabilityCalculator().isOptionVisible(cfg, tool2, option)); assertFalse(option.getApplicabilityCalculator().isOptionEnabled(cfg, tool2, option)); } catch (BuildException e) { fail(e.getLocalizedMessage()); } }
/** * This method parses the string that is entered in the all build option field editor and stores * the options to the corresponding option fields. */ public void parseAllOptions() { // Get the all build options string from all options field String alloptions = getToolSettingsPrefStore().getString(ToolSettingsPrefStore.ALL_OPTIONS_ID); // list that holds the options for the option type other than // boolean,string and enumerated List<String> optionsList = new ArrayList<String>(); // additional options buffer StringBuffer addnOptions = new StringBuffer(); // split all build options string Vector<String> optionsArr = getOptionVector(alloptions); for (String optionValue : optionsArr) { boolean optionValueExist = false; // get the options for this tool IOption[] options = fTool.getOptions(); for (IOption opt : options) { // String name = opt.getId(); // check whether the option value is "STRING" type for (String s : stringOptionsMap.values()) { if (s.indexOf(optionValue) != -1) optionValueExist = true; } // check whether the option value is "OBJECTS" type for (String s : userObjsMap.values()) { if (s.indexOf(optionValue) != -1) optionValueExist = true; } // if the value does not exist in string option or user objects // option if (!optionValueExist) { try { // check whether the option value is already exist // and also change the preference store based on // the option value switch (opt.getValueType()) { case IOption.BOOLEAN: String boolCommand; boolCommand = opt.getCommand(); if (boolCommand != null && boolCommand.equals(optionValue)) { setOption(opt, true); optionValueExist = true; } boolCommand = opt.getCommandFalse(); if (boolCommand != null && boolCommand.equals(optionValue)) { setOption(opt, false); optionValueExist = true; } break; case IOption.ENUMERATED: String enumeration = ""; // $NON-NLS-1$ String[] enumValues = opt.getApplicableValues(); for (int i = 0; i < enumValues.length; i++) { if (opt.getEnumCommand(enumValues[i]).equals(optionValue)) { enumeration = enumValues[i]; optionValueExist = true; } } if (!enumeration.equals("")) // $NON-NLS-1$ setOption(opt, enumeration); break; case IOption.STRING_LIST: case IOption.INCLUDE_PATH: case IOption.PREPROCESSOR_SYMBOLS: case IOption.LIBRARIES: case IOption.INCLUDE_FILES: case IOption.LIBRARY_PATHS: case IOption.LIBRARY_FILES: case IOption.MACRO_FILES: case IOption.UNDEF_INCLUDE_PATH: case IOption.UNDEF_PREPROCESSOR_SYMBOLS: case IOption.UNDEF_INCLUDE_FILES: case IOption.UNDEF_LIBRARY_PATHS: case IOption.UNDEF_LIBRARY_FILES: case IOption.UNDEF_MACRO_FILES: if (opt.getCommand() != null && optionValue.startsWith(opt.getCommand())) { optionsList.add(optionValue); optionValueExist = true; } break; default: break; } } catch (BuildException e) { } } } // If the parsed string does not match with any previous option // values then consider this option as a additional build option if (!optionValueExist) { addnOptions.append(optionValue + ITool.WHITE_SPACE); } } // check whether some of the "STRING" option value or "OBJECTS" type // option value removed // by the user from all build option field Set<String> set = stringOptionsMap.keySet(); for (int i = 0; i < set.size(); i++) { Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { Object key = iterator.next(); String val = stringOptionsMap.get(key); if (alloptions.indexOf(val) == -1) { StringBuffer buf = new StringBuffer(); String[] vals = val.split(WHITESPACE); for (int t = 0; t < vals.length; t++) { if (alloptions.indexOf(vals[t]) != -1) buf.append(vals[t] + ITool.WHITE_SPACE); } setOption(((IOption) key), buf.toString().trim()); } } } // "OBJECTS" type Set<IOption> objSet = userObjsMap.keySet(); for (int s = 0; s < objSet.size(); s++) { for (IOption op : objSet) { String val = userObjsMap.get(op); ArrayList<String> list = new ArrayList<String>(); for (String v : parseString(val)) { if (alloptions.indexOf(v) != -1) list.add(v); } String listArr[] = new String[list.size()]; list.toArray(listArr); setOption(op, listArr); } } // Now update the preference store with parsed options // Get the options for this tool IOption[] options = fTool.getOptions(); for (int k = 0; k < options.length; ++k) { IOption opt = options[k]; // String name = opt.getId(); // String listStr = ""; //$NON-NLS-1$ // String[] listVal = null; try { switch (opt.getValueType()) { case IOption.BOOLEAN: ArrayList<String> optsList = new ArrayList<String>(optionsArr); if (opt.getCommand() != null && opt.getCommand().length() > 0 && !optsList.contains(opt.getCommand())) setOption(opt, false); if (opt.getCommandFalse() != null && opt.getCommandFalse().length() > 0 && !optsList.contains(opt.getCommandFalse())) setOption(opt, true); break; case IOption.STRING: // TODO create a lst of valid default string options for the tool if (getDefaultOptionNames().contains(opt.getName())) { String newOptions = opt.getStringValue(); if (addnOptions.length() > 0) { newOptions = newOptions + ITool.WHITE_SPACE + addnOptions.toString().trim(); } setOption(opt, newOptions); } break; case IOption.STRING_LIST: case IOption.INCLUDE_PATH: case IOption.PREPROCESSOR_SYMBOLS: case IOption.LIBRARIES: ArrayList<String> newList = new ArrayList<String>(); for (String s : optionsList) { if (opt.getCommand() != null && s.startsWith(opt.getCommand())) { newList.add(s.substring(opt.getCommand().length())); } } String[] strlist = new String[newList.size()]; newList.toArray(strlist); newList.clear(); setOption(opt, strlist); break; default: break; } } catch (BuildException e) { } } }