[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Build Model Patch
|
Again, this stuff is not active in the
1.1 product so there should be no affect other than I've fixed two of the
failures John C was talking about with the ui.tests suite.
Also, Configurations now get saved in
the project build file (but only their names, ids and parents).
Doug Schaefer
Rational Software - IBM Software Group
Ottawa, Ontario, Canada
Index: build/org/eclipse/cdt/core/build/managed/ITarget.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/build/org/eclipse/cdt/core/build/managed/ITarget.java,v
retrieving revision 1.6
diff -u -r1.6 ITarget.java
--- build/org/eclipse/cdt/core/build/managed/ITarget.java 17 Apr 2003 19:21:40 -0000 1.6
+++ build/org/eclipse/cdt/core/build/managed/ITarget.java 21 Apr 2003 19:31:56 -0000
@@ -46,6 +46,14 @@
public IConfiguration[] getConfigurations();
/**
+ * Returns the configuration with the given id, or null if not found.
+ *
+ * @param id
+ * @return
+ */
+ public IConfiguration getConfiguration(String id);
+
+ /**
* Creates a new configuration for the target. It is populated with
* the tools defined for that target and options set at their defaults.
*
Index: build/org/eclipse/cdt/internal/core/build/managed/Configuration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Configuration.java,v
retrieving revision 1.6
diff -u -r1.6 Configuration.java
--- build/org/eclipse/cdt/internal/core/build/managed/Configuration.java 17 Apr 2003 19:21:40 -0000 1.6
+++ build/org/eclipse/cdt/internal/core/build/managed/Configuration.java 21 Apr 2003 19:31:56 -0000
@@ -73,9 +73,29 @@
}
}
+ public Configuration(Target target, Element element) {
+ this.target = target;
+
+ // id
+ setId(element.getAttribute("id"));
+
+ // hook me up
+ target.addConfiguration(this);
+
+ // name
+ if (element.hasAttribute("name"))
+ setName(element.getAttribute("name"));
+
+ if (element.hasAttribute("parent"))
+ parent = target.getParent().getConfiguration(element.getAttribute("parent"));
+ }
+
public void serealize(Document doc, Element element) {
element.setAttribute("id", id);
- element.setAttribute("name", name);
+
+ if (name != null)
+ element.setAttribute("name", name);
+
if (parent != null)
element.setAttribute("parent", parent.getId());
Index: build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java,v
retrieving revision 1.3
diff -u -r1.3 OptionReference.java
--- build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java 17 Apr 2003 19:21:40 -0000 1.3
+++ build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java 21 Apr 2003 19:31:56 -0000
@@ -48,7 +48,7 @@
*/
public OptionReference(ToolReference owner, IConfigurationElement element) {
this.owner = owner;
- option = owner.getOption(element.getAttribute("id"));
+ option = owner.getTool().getOption(element.getAttribute("id"));
owner.addOptionReference(this);
}
@@ -61,7 +61,7 @@
*/
public OptionReference(ToolReference owner, Element element) {
this.owner = owner;
- option = owner.getOption(element.getAttribute("id"));
+ option = owner.getTool().getOption(element.getAttribute("id"));
owner.addOptionReference(this);
}
Index: build/org/eclipse/cdt/internal/core/build/managed/Target.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Target.java,v
retrieving revision 1.6
diff -u -r1.6 Target.java
--- build/org/eclipse/cdt/internal/core/build/managed/Target.java 17 Apr 2003 19:21:40 -0000 1.6
+++ build/org/eclipse/cdt/internal/core/build/managed/Target.java 21 Apr 2003 19:31:56 -0000
@@ -23,6 +23,7 @@
import org.eclipse.core.runtime.IConfigurationElement;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
*
@@ -34,6 +35,7 @@
private List tools;
private Map toolMap;
private List configurations;
+ private Map configMap;
private boolean isAbstract = false;
private static final IConfiguration[] emptyConfigs = new IConfiguration[0];
@@ -78,8 +80,13 @@
// parent
String parentId = element.getAttribute("parent");
- if (parentId != null)
+ if (parentId != null) {
parent = ManagedBuildManager.getTarget(null, parentId);
+ // copy over the parents configs
+ IConfiguration[] parentConfigs = parent.getConfigurations();
+ for (int i = 0; i < parentConfigs.length; ++i)
+ addConfiguration(parentConfigs[i]);
+ }
// isAbstract
if ("true".equals(element.getAttribute("isAbstract")))
@@ -123,6 +130,16 @@
// isAbstract
if ("true".equals(element.getAttribute("isAbstract")))
isAbstract = true;
+
+ Node child = element.getFirstChild();
+ while (child != null) {
+ if (child.getNodeName().equals("configuration")) {
+ new Configuration(this, (Element)child);
+ }
+
+ child = child.getNextSibling();
+ }
+
}
@@ -137,6 +154,7 @@
for (int i = 0; i < configurations.size(); ++i) {
Configuration config = (Configuration)configurations.get(i);
Element configElement = doc.createElement("configuration");
+ element.appendChild(configElement);
config.serealize(doc, configElement);
}
}
@@ -200,16 +218,17 @@
return emptyConfigs;
}
- public void addConfiguration(IConfiguration configuration) {
- if (configurations == null)
- configurations = new ArrayList();
- configurations.add(configuration);
+ public IConfiguration getConfiguration(String id) {
+ return (IConfiguration)configMap.get(id);
}
-
- private void addLocalConfiguration(IConfiguration configuration) {
- if (configurations == null)
+
+ public void addConfiguration(IConfiguration configuration) {
+ if (configurations == null) {
configurations = new ArrayList();
+ configMap = new HashMap();
+ }
configurations.add(configuration);
+ configMap.put(configuration.getId(), configuration);
}
/* (non-Javadoc)
Index: build/org/eclipse/cdt/internal/core/build/managed/Tool.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/build/org/eclipse/cdt/internal/core/build/managed/Tool.java,v
retrieving revision 1.4
diff -u -r1.4 Tool.java
--- build/org/eclipse/cdt/internal/core/build/managed/Tool.java 14 Apr 2003 20:02:38 -0000 1.4
+++ build/org/eclipse/cdt/internal/core/build/managed/Tool.java 21 Apr 2003 19:31:56 -0000
@@ -96,9 +96,12 @@
}
public void addOption(Option option) {
- if (options == null)
+ if (options == null) {
options = new ArrayList();
+ optionMap = new HashMap();
+ }
options.add(option);
+ optionMap.put(option.getId(), option);
}
public IOptionCategory getTopOptionCategory() {
@@ -177,8 +180,7 @@
* @see org.eclipse.cdt.core.build.managed.ITool#getOption(java.lang.String)
*/
public IOption getOption(String id) {
- // TODO Auto-generated method stub
- return null;
+ return (IOption)optionMap.get(id);
}
}
Index: build/org/eclipse/cdt/core/build/managed/tests/AllBuildTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/build/org/eclipse/cdt/core/build/managed/tests/AllBuildTests.java,v
retrieving revision 1.5
diff -u -r1.5 AllBuildTests.java
--- build/org/eclipse/cdt/core/build/managed/tests/AllBuildTests.java 14 Apr 2003 20:02:39 -0000 1.5
+++ build/org/eclipse/cdt/core/build/managed/tests/AllBuildTests.java 21 Apr 2003 19:32:47 -0000
@@ -118,6 +118,11 @@
assertEquals(target, newTarget);
assertFalse(target.equals(targetDef));
+ // Copy over the configs
+ IConfiguration[] configs = targetDef.getConfigurations();
+ for (int i = 0; i < configs.length; ++i)
+ target.createConfiguration(configs[i], target.getId() + "." + i);
+
checkRootTarget(target);
// Save, close, reopen and test again