Skip to main content

[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

Back to the top