Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] MBS patches ..

Hi,

 

Here I attached two patches. One patch contains Project converter convenience routines and another patch contains Junit tests for testing the MBS functionality. 
   

Thanks & Regards,

Sunil

Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml,v
retrieving revision 1.30
diff -u -r1.30 plugin.xml
--- plugin.xml	3 Sep 2005 02:52:13 -0000	1.30
+++ plugin.xml	8 Sep 2005 20:59:00 -0000
@@ -3829,7 +3829,7 @@
          </configuration>
          
       </projectType>     
-
+     
   	  <!-- Test tool-chain defined at top level -->
 
       <toolChain
@@ -3955,8 +3955,404 @@
 		    </configuration>
 	  </projectType>
 
+<!-- 
+	Project type for testing  Configuration Name Provider & Multiple Tool Chain versions features
+	Note: toolchains are cut and cannot be used for real compilation.
+-->
+     <projectType
+         id="cdt.managedbuild.target.testMultipleVersions.exe"
+         isAbstract="false"
+         isTest="true"
+         configurationNameProvider="org.eclipse.cdt.managedbuilder.core.tests.TestConfigurationNameProvider"
+         name="testMultipleVersions.exe">
+         <configuration
+               name="Debug"
+               description="debug configuration for IA32 windows"
+               id="cdt.managedbuild.config.testMultipleVersions.exe.debug"
+               cleanCommand="rm -rf"
+			   errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser">
+               <toolChain
+                     id="cdt.managedbuild.toolchain.testMultipleVersions.exe.debug_1.1.0"
+                     name="Debug IA32 ToolChain"
+                     archList="x86"                                         
+                     osList="linux"
+                     scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+		          <targetPlatform
+		              id="cdt.managedbuild.target.testMultipleVersions.platform.exe.debug"
+		              name="Debug IA32 Platform"
+		              binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE"
+		              osList="solaris,linux,hpux,aix,qnx"
+		              archList="all">
+	              </targetPlatform>
+				  <builder
+				      id="cdt.managedbuild.target.testMultipleVersions.builder.exe.debug_1.1.0"
+		              name="Debug IA32 Builder"
+		              command="make"
+		              arguments="-k"
+		              variableFormat="@="
+		              isVariableCaseSensitive="false"
+		              reservedMacroNames="PATH"		              
+		              buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+		     	  </builder>               
+                  <tool
+                      id="cdt.managedbuild.tool.testMultipleVersions.c.compiler.exe.debug_1.1.0"
+                      superClass="cdt.managedbuild.tool.testgnu.c.compiler">
+				  </tool>
+				  <tool
+                      id="cdt.managedbuild.tool.testMultipleVersions.cpp.compiler.exe.debug_1.1.0"
+                      superClass="cdt.managedbuild.tool.testgnu.cpp.compiler">                         
+                  </tool>
+			  </toolChain>
+         </configuration>
+         <configuration
+               name="Release"
+               description="release configuration for IA32 windows"
+               id="cdt.managedbuild.config.testMultipleVersions.exe.release"
+               cleanCommand="rm -rf"
+			   errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser">               
+               <toolChain
+                     archList="x86"                                         
+                     osList="linux"
+                     id="cdt.managedbuild.toolchain.testMultipleVersions.exe.release"
+                     name="Release IA32 ToolChain"
+                     scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+		          <targetPlatform
+		              id="cdt.managedbuild.target.testMultipleVersions.platform.exe.release"
+		              name="Release IA32 Platform"		             
+		              binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE"
+		              osList="solaris,linux,hpux,aix,qnx"
+		              archList="all">		              
+		          </targetPlatform>
+				  <builder
+				      id="cdt.managedbuild.target.testMultipleVersions.builder.exe.release"
+		              name="Release IA32 Builder"		              
+		              command="make"
+		              arguments="-k">
+				  </builder> 
+                  <tool
+                      id="cdt.managedbuild.tool.testMultipleVersions.c.compiler.exe.release"
+                      superClass="cdt.managedbuild.tool.testgnu.c.compiler">                          
+                  </tool>
+               </toolChain>
+         </configuration>
+         <configuration
+               name="Debug"
+               description="debug configuration for IA64 windows"
+               id="cdt.managedbuild.config.testMultipleVersions.exe.debug64"
+               cleanCommand="rm -rf">
+               <toolChain
+                     archList="ia64"                                         
+                     osList="linux"
+                     configurationMacroSupplier="org.eclipse.cdt.managedbuilder.core.tests.TestMacro"
+                     id="cdt.managedbuild.toolchain.testMultipleVersions.exe.debug64_2.2.0"
+                     name="Debug IA64 ToolChain"
+                     scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+		          <targetPlatform
+		              id="cdt.managedbuild.target.testMultipleVersions.platform.exe.debug64"
+		              name="Debug IA64 Platform">
+		          </targetPlatform>
+				  <builder
+				      id="cdt.managedbuild.target.testMultipleVersions.builder.exe.debug64_3.2.1"
+		              name="Debug IA64 Builder"		              
+		              command="make"
+		              arguments="-k">
+				  </builder> 
+                  <tool
+                      id="cdt.managedbuild.tool.testMultipleVersions.c.compiler.exe.debug64_5.0.9"
+                      superClass="cdt.managedbuild.tool.testgnu.c.compiler">                          
+                  </tool>
+               </toolChain>
+         </configuration>
+         <configuration
+               name="Release"
+               description="release configuration for IA64 windows"
+               id="cdt.managedbuild.config.testMultipleVersions.exe.release64">
+               <toolChain
+                    archList="ia64"                                         
+                    osList="linux"               
+                     id="cdt.managedbuild.toolchain.testMultipleVersions.exe.release64_2.2.0"
+                     versionsSupported="1.2.0,2.0.0,2.1.3"
+                     isToolChainSupported="org.eclipse.cdt.managedbuilder.core.tests.TestMacro"
+                     name="Three ToolChain">
+		          <targetPlatform
+		              id="cdt.managedbuild.target.testMultipleVersions.platform.exe.release64"
+		              name="Release IA64 Platform">
+		          </targetPlatform>
+				  <builder
+				      id="cdt.managedbuild.target.testMultipleVersions.builder.exe.release64_3.2.1"
+		              name="Release IA64 Builder"		              
+   		              versionsSupported="2.0.0,2.1.1,3.0.3"
+		              command="make"
+		              isVariableCaseSensitive="true"
+		              variableFormat="@=">
+				  </builder> 
+                  <tool
+                      id="cdt.managedbuild.tool.testMultipleVersions.c.compiler.exe.release64_5.0.9"
+                      superClass="cdt.managedbuild.tool.testgnu.c.compiler">                          
+                  </tool>
+               </toolChain>
+         </configuration>
+        
+      </projectType>
+      
+<!-- 
+	Project type for testing  Project Converter convenience routines
+	Note: toolchains are cut and cannot be used for real compilation.
+-->
+     <projectType
+         id="testProjectConverterConvenienceRoutines.exe"
+         isAbstract="false"
+         isTest="true"         
+         name="testProjectConverterConvenienceRoutines.exe">
+         <configuration
+               name="Debug"
+               description="debug configuration for IA32 windows"
+               id="config.testProjectConverterConvenienceRoutines.exe.debug"
+               cleanCommand="rm -rf"
+			   errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser">
+               <toolChain
+                     id="toolchain.testProjectConverterConvenienceRoutines.exe.debug_1.1.0"
+                     name="Debug IA32 ToolChain"
+                     archList="x86"                                         
+                     osList="linux">                     
+		          <targetPlatform
+		              id="target.testProjectConverterConvenienceRoutines.platform.exe.debug"
+		              name="Debug IA32 Platform"
+		              binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE"
+		              osList="solaris,linux,hpux,aix,qnx"
+		              archList="all">
+	              </targetPlatform>
+				  <builder
+				      id="target.testProjectConverterConvenienceRoutines.builder.exe.debug_1.1.0"
+		              name="Debug IA32 Builder"
+		              command="make"
+		              arguments="-k"
+		              variableFormat="@="
+		              isVariableCaseSensitive="false"
+		              reservedMacroNames="PATH"		              
+		              buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+		     	  </builder>               
+                  <tool
+                      id="tool.testProjectConverterConvenienceRoutines.c.compiler.exe.debug_1.1.0"
+                      superClass="cdt.managedbuild.tool.testgnu.c.compiler">
+				  </tool>
+				  <tool
+                      id="tool.testProjectConverterConvenienceRoutines.cpp.compiler.exe.debug_1.1.0"
+                      superClass="cdt.managedbuild.tool.testgnu.cpp.compiler">                         
+                  </tool>
+			  </toolChain>
+         </configuration>
+	</projectType>
+
    </extension>
 
+ <!-- Test Converters for testing the converter convenience routines -->      
+   <extension
+         point="org.eclipse.cdt.managedbuilder.core.projectConverter">
+      <converter
+            id="test.converter"
+            name="Test Project Converter"
+            class="org.eclipse.cdt.managedbuilder.core.tests.ProjectConverter"
+            fromId="toolchain.testProjectConverterConvenienceRoutines.exe.debug_1.1.0"
+            toId="toolchain.testProjectConverterConvenienceRoutines.exe.debug_1.2.0"            
+            mbsVersion="3.0.0">
+      </converter>
+   </extension> 
+   
+   <!-- Test Converters for testing the conversion while importing a CDT2.1 project -->      
+
+    <extension point="org.eclipse.cdt.managedbuilder.core.projectConverter">
+    <converter
+            id="test.ToolChainConverter"
+            name="Test Tool Chain Converter"
+            class="org.eclipse.cdt.managedbuilder.core.tests.ProjectConverter21"
+            fromId="test.toolChain_1.0.0"
+            toId="test.toolChain_2.0.0"            
+            mbsVersion="3.0.0">
+     </converter>
+     <converter
+            id="test.Tool1Converter"
+            name="Test Tool1 Converter"
+            class="org.eclipse.cdt.managedbuilder.core.tests.ProjectConverter21"
+            fromId="test.tool1_1.0.0"
+            toId="test.tool1_2.0.0"            
+            mbsVersion="3.0.0">
+     </converter>
+     <converter
+            id="test.Tool2Converter"
+            name="Test Tool2 Converter"
+            class="org.eclipse.cdt.managedbuilder.core.tests.ProjectConverter21"
+            fromId="test.tool2_1.0.0"
+            toId="test.tool2_2.0.0"            
+            mbsVersion="3.0.0">
+     </converter>
+   </extension>
+         
+ <!-- Test Converters for testing the conversion while importing a CDT2.0 & CDT2.1 projects -->      
+
+ <extension
+         point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
+      <managedBuildRevision
+            fileVersion="3.0.0">
+      </managedBuildRevision>
+ 
+ 	<projectType      
+            isAbstract="false"     
+            isTest="false"
+            name="Test - Version 1.0"
+            id="test_1.0.0">
+         <configuration
+               name="Test Configuration"
+               id="test.config_1.0.0"
+               cleanCommand="rm -rf"
+			   errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser">               
+               <toolChain
+		          id="test.toolChain_1.0.0"
+		          name="Test ToolChain Ver 1.0"
+		          convertToId="test.toolChain_2.0.0"		          
+		          archList="all">
+		          <targetPlatform
+		              id="test.target_1.0.0"
+		              name="Test Target"		             
+		              binaryParser="org.eclipse.cdt.core.ELF"
+		              archList="all">		              
+		          </targetPlatform>
+				  <builder
+				      id="test.builder_1.0.0"
+		              name="Test Builder Version 1.0"		              
+		              command="make"
+		              arguments="-k"
+		              buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+				  </builder> 
+                  <tool
+                      id="test.tool1_1.0.0"
+                      name="Test Tool 1 - - Version 1.0"
+                      convertToId="test.tool1_2.0.0"
+                      superClass="cdt.managedbuild.tool.gnu.c.compiler">                          
+                  </tool>
+                  <tool
+                      id="test.tool2_1.0.0"
+                      name="Test Tool 2 - Version 1.0"
+                      convertToId="test.tool2_2.0.0"
+                      superClass="cdt.managedbuild.tool.gnu.cpp.compiler">                     
+                  </tool>
+               </toolChain>
+         </configuration>
+      </projectType>          
+
+	 <projectType      
+            isAbstract="false"     
+            isTest="false"
+            name="Test - Version 2.0"
+            id="test_2.0.0">
+         <configuration
+               name="Test Configuration 2.0"
+               id="test.config_2.0.0"
+               cleanCommand="rm -rf"
+			   errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser">               
+               <toolChain
+		          id="test.toolChain_2.0.0"
+		          name="Test ToolChain Ver 2.0"
+		          archList="all">
+		          <targetPlatform
+		              id="test.target_2.0.0"
+		              name="Test Target ver 2.0"		             
+		              binaryParser="org.eclipse.cdt.core.ELF"
+		              archList="all">		              
+		          </targetPlatform>
+				  <builder
+				      id="test.builder_2.0.0"
+		              name="Test Builder Version 2.0"		              
+		              command="make"
+		              arguments="-k"
+		              buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+				  </builder> 
+                  <tool
+                      id="test.tool1_2.0.0"
+                      name="Test Tool 1 - - Version 2.0"
+                      superClass="cdt.managedbuild.tool.gnu.c.compiler">                          
+                  </tool>
+                  <tool
+                      id="test.tool2_2.0.0"
+                      name="Test Tool 2 - Version 2.0"
+                      superClass="cdt.managedbuild.tool.gnu.cpp.compiler">                     
+                  </tool>
+               </toolChain>
+         </configuration>
+      </projectType>
+      
+      <projectType
+            isAbstract="false"
+            name="Test"
+           	isTest="true"
+            superClass="cdt.managedbuild.target.gnu.exe"
+            id="test.target">
+            <configuration id="test.config" name="Test Configuration">
+            	<toolChain 
+            		id="test.toolchain" 
+            		name="Test Toolchain"
+            		convertToId="test.toolchain_1.2.0">
+					<builder
+						  superClass="cdt.managedbuild.target.gnu.builder"
+					      id="test.builder"
+			              name=""
+			              command="make"
+			              arguments="-k">
+			     	</builder>
+            		<tool 
+            			id="test.c.compiler"
+            			superClass="cdt.managedbuild.tool.gnu.c.compiler">
+            		</tool>
+            		<tool 
+            			id="test.cpp.compiler"
+            			superClass="cdt.managedbuild.tool.gnu.cpp.compiler">
+            		</tool>
+            	</toolChain>
+			</configuration>
+      </projectType>
+      
+      <projectType
+            isAbstract="false"
+            name="Test 1.2.0"
+            superClass="cdt.managedbuild.target.gnu.exe"
+            id="test.target_1.2.0">
+            <configuration id="test.config_1.2.0" name="Test Configuration">
+            	<toolChain 
+            		id="test.toolchain_1.2.0" 
+            		name="Test Toolchain 1.2.0">     
+					<builder
+						  superClass="cdt.managedbuild.target.gnu.builder"
+					      id="test.builder_1.2.0"
+			              name=""
+			              command="make"
+			              arguments="-k">
+			     	</builder>
+            		<tool 
+            			id="test.c.compiler_1.2.0"
+            			superClass="cdt.managedbuild.tool.gnu.c.compiler">
+            		</tool>
+            		<tool 
+            			id="test.cpp.compiler_1.2.0"
+            			superClass="cdt.managedbuild.tool.gnu.cpp.compiler">
+            		</tool>
+            	</toolChain>
+			</configuration>
+      </projectType>
+      
+   </extension>
+   
+   <extension
+         point="org.eclipse.cdt.managedbuilder.core.projectConverter">
+      <converter
+            id="test.converter"
+            name="Test Project Converter"
+            class="org.eclipse.cdt.managedbuilder.core.tests.ProjectConverter20"
+            fromId="test.toolchain"
+            toId="test.toolchain_1.2.0"            
+            mbsVersion="3.0.0">
+      </converter>
+   </extension>  
+
    <extension
          id="cdt.test.fortran.toolchain"
          name="CDT Test Fortran Toolchain"
Index: suite/org/eclipse/cdt/managedbuilder/tests/suite/AllManagedBuildTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/AllManagedBuildTests.java,v
retrieving revision 1.11
diff -u -r1.11 AllManagedBuildTests.java
--- suite/org/eclipse/cdt/managedbuilder/tests/suite/AllManagedBuildTests.java	20 Jun 2005 20:52:14 -0000	1.11
+++ suite/org/eclipse/cdt/managedbuilder/tests/suite/AllManagedBuildTests.java	8 Sep 2005 20:59:00 -0000
@@ -24,6 +24,7 @@
 import org.eclipse.cdt.managedbuilder.core.tests.ManagedProject21MakefileTests;
 import org.eclipse.cdt.managedbuilder.core.tests.ManagedProject30MakefileTests;
 import org.eclipse.cdt.managedbuilder.core.tests.ManagedProjectUpdateTests;
+import org.eclipse.cdt.managedbuilder.core.tests.MultiVersionSupportTests;
 import org.eclipse.cdt.managedbuilder.core.tests.ResourceBuildCoreTests;
 
 /**
@@ -55,6 +56,7 @@
 		suite.addTest(ManagedBuildEnvironmentTests.suite());
 		suite.addTest(ManagedBuildMacrosTests.suite());
 		suite.addTest(ManagedBuildTCSupportedTest.suite());
+		suite.addTest(MultiVersionSupportTests.suite());
 		//$JUnit-END$
 		return suite;
 	}
Index: tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java
===================================================================
RCS file: tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java
diff -N tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,377 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Intel Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.make.core.MakeCorePlugin;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IBuilder;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IManagedProject;
+import org.eclipse.cdt.managedbuilder.core.IProjectType;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.IToolChain;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
+
+import org.eclipse.core.resources.IProject;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+
+public class MultiVersionSupportTests extends TestCase {
+	static IProject proj = null;
+	static IManagedProject mproj = null;
+	
+	IConfiguration[] cfgs = null;	
+	private IWorkspace worksp;	
+	private boolean windows;
+	
+	public MultiVersionSupportTests() { super(); }
+	public MultiVersionSupportTests(String name) { super(name); }
+
+	public static Test suite() {
+		TestSuite suite = new TestSuite(MultiVersionSupportTests.class.getName());
+		//$JUnit-BEGIN$
+		suite.addTest(new MultiVersionSupportTests("testProjectConverterConvenienceRoutines"));	//$NON-NLS-1$
+		suite.addTest(new MultiVersionSupportTests("testConfigurationNameProvider"));	//$NON-NLS-1$
+		suite.addTest(new MultiVersionSupportTests("testConfigurationDescription"));	//$NON-NLS-1$
+		suite.addTest(new MultiVersionSupportTests("testVersionInfo"));	//$NON-NLS-1$
+		suite.addTest(new MultiVersionSupportTests("testVersionsSupportedAttribute"));	//$NON-NLS-1$
+
+		//$JUnit-END$
+		return suite;
+	}
+
+	
+	/*
+	 * This function tests the functionality of Project converter convenience routines
+	 * defined in ManagedBuildManager class. These convenience routines are generic routines
+	 * anyone can use them 
+	 * 		  i) To find out whether any converters are available for a given Build Object,
+	 * 		 ii) To get a list of converters
+	 * 		iii) To convert a Build Object
+	 */
+	
+	public void testProjectConverterConvenienceRoutines() throws Exception {
+		String projectName = "TestProjectConverterConvenienceRoutines";			//$NON-NLS-1$
+		String projectTypeId = "testProjectConverterConvenienceRoutines.exe";	//$NON-NLS-1$
+
+		doInit(projectName, projectTypeId);
+		
+		// It should contain only one configuration.
+		assertEquals(cfgs.length, 1);
+		
+		IToolChain toolChain = cfgs[0].getToolChain();
+		
+		// Check whether this tool chain has converters using generic convenience routine.
+		boolean hasConverters = ManagedBuildManager.hasTargetConversionElements(toolChain);
+		
+		// Expected value is 'true'
+		assertEquals(hasConverters, true);
+		
+		// Get the list of available converters for ths tool chain using generic convenience routine
+		Map converters = ManagedBuildManager.getConversionElements(toolChain);
+		
+		// Expected value for the number of converters available is '1'
+		assertEquals(converters.size(), 1);
+
+		return;
+	}
+	
+	/*
+	 * This function tests the functionality of configuration name provider.
+	 * Using this functionality, Tool Integrator can provide configuration names dynamically
+	 * based on the OS, architecture.
+	 * 
+	 * In plugin manifest file, there are 4 configurations defined for the project type
+	 * "cdt.managedbuild.target.testMultipleVersions.exe". Two configurations are defined with "Debug"
+	 * as their name and other two are defined with "Release" as their name. But user will see the 
+	 * configuration names as "Debug", "Release", "Debug_ia64" and "Release_ia64" while creating a project.
+	 * 
+	 */
+	public void testConfigurationNameProvider()throws Exception {
+		String [] expectedConfigNames = { "Debug","Release","Debug_ia64","Release_ia64" };	//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+		String [] actualConfigNames = new String[4];
+		// create managed project
+		String projectName = "TestConfigurationNameProvider";	//$NON-NLS-1$
+		String projectTypeId = "cdt.managedbuild.target.testMultipleVersions.exe";	//$NON-NLS-1$
+		doInit(projectName, projectTypeId);
+		
+		// Check the configuration names
+		cfgs = mproj.getConfigurations();
+		
+		// Get the actual configuration names
+		for (int i = 0; i < cfgs.length; i++) {
+			actualConfigNames[i] = cfgs[i].getName();		
+		}
+		
+		// Compare the expected and actual,
+		for (int i = 0; i < expectedConfigNames.length; i++) {
+			assertTrue( isArrayContains(actualConfigNames, expectedConfigNames[i]) );			
+		}
+		return;
+	}
+	
+	/*
+	 * This function tests whether the newly added attribute 'description' is retrived from plugin
+	 * manifest file correctly or not. There are 4 configurations defined with different description
+	 * each configuration. This function checks the description of each configuration against
+	 * expected description after creating a project.
+	 */
+	
+	public void testConfigurationDescription()throws Exception {
+		String [] expectedConfigDescriptions = { "debug configuration for IA32 windows","release configuration for IA32 windows","debug configuration for IA64 windows","release configuration for IA64 windows" };	//$NON-NLS-1$
+		String [] actualConfigDescriptions = new String[4];
+		// create managed project
+		String projectName = "TestConfigurationDescription";	//$NON-NLS-1$
+		String projectTypeId = "cdt.managedbuild.target.testMultipleVersions.exe";	//$NON-NLS-1$
+
+		doInit(projectName, projectTypeId);
+		
+		// Check the configuration descriptions
+		cfgs = mproj.getConfigurations();
+		
+		// Get the actual configuration names
+		for (int i = 0; i < cfgs.length; i++) {
+			actualConfigDescriptions[i] = cfgs[i].getDescription();		
+		}
+		
+		// Compare the expected and actual,
+		for (int i = 0; i < expectedConfigDescriptions.length; i++) {
+			assertTrue( isArrayContains(actualConfigDescriptions, expectedConfigDescriptions[i]) );			
+		}
+		return;
+	}
+
+	
+	/*
+	 * This function tests whether the version information stored with in the 'id' of ToolChain/Tool/Builder
+	 * is retrived from plugin manifest file correctly or not. 
+	 */
+	
+	public void testVersionInfo()throws Exception {
+
+		String projectName = "TestVersionInfo";	//$NON-NLS-1$
+		String projectTypeId = "cdt.managedbuild.target.testMultipleVersions.exe";	//$NON-NLS-1$
+
+		// create managed project
+		doInit(projectName, projectTypeId);
+		
+		// Check the configuration descriptions
+		cfgs = mproj.getConfigurations();
+		
+		// Check the version information of ToolChain/Tool/Builder defined under 'Release' Configuration.
+		
+		// It should return the version as '0.0.4' as there is no version information defined
+		// for ToolChain/Tool/Builder. The version '0.0.4' is the default version for CDT3.0
+		
+		// Release configuration 'id' : "cdt.managedbuild.config.testMultipleVersions.exe.release.1"			
+		IConfiguration releaseConfig = mproj.getConfiguration("cdt.managedbuild.config.testMultipleVersions.exe.release.1");	//$NON-NLS-1$
+
+		// the toolchain version should be '0.0.4' as this is default value
+		assertEquals(releaseConfig.getToolChain().getVersion().toString(), "0.0.4");	//$NON-NLS-1$
+		
+		// Get the tools of this toolChain and verify the version of each tool
+		// Each tool version in release configuration should be "0.0.4"
+		ITool [] tools = releaseConfig.getToolChain().getTools();
+		for (int i = 0; i < tools.length; i++) {
+			ITool tool = tools[i];
+			assertEquals(tool.getVersion().toString(),"0.0.4");	//$NON-NLS-1$
+		}
+		
+		// check the builder version
+		IBuilder builder = releaseConfig.getToolChain().getBuilder();
+		assertEquals(builder.getVersion().toString(),"0.0.4");	//$NON-NLS-1$
+		
+		// Check the versions of ToolChain/Tool/Builder in Debug Configuration
+		// Expected version: "1.1.0" for all ToolChain/Tool(s)/Builder.
+		
+		// Get the 'Debug' Configuration
+		// Debug configuration 'id' : "cdt.managedbuild.config.testMultipleVersions.exe.debug.0"			
+		IConfiguration debugConfig = mproj.getConfiguration("cdt.managedbuild.config.testMultipleVersions.exe.debug.0");	//$NON-NLS-1$
+
+		// the toolchain version should be '1.1.0' as that's what defined in plugin manifest file
+		assertEquals(debugConfig.getToolChain().getVersion().toString(), "1.1.0");	//$NON-NLS-1$
+		
+		// Get the tools of this toolChain and verify the version of each tool
+		// Each tool version in debug configuration should be "1.1.0"
+		tools = debugConfig.getToolChain().getTools();
+		for (int i = 0; i < tools.length; i++) {
+			ITool tool = tools[i];
+			assertEquals(tool.getVersion().toString(),"1.1.0");	//$NON-NLS-1$
+		}
+		
+		// check the builder version
+		builder = debugConfig.getToolChain().getBuilder();
+		assertEquals(builder.getVersion().toString(),"1.1.0");	//$NON-NLS-1$
+
+		// Get the 'Debug64' Configuration
+		// Debug configuration 'id' : "cdt.managedbuild.config.testMultipleVersions.exe.debug.0"			
+		IConfiguration debug64Config = mproj.getConfiguration("cdt.managedbuild.config.testMultipleVersions.exe.debug64.2");	//$NON-NLS-1$
+
+		// the toolchain version should be '2.2.0' as that's what defined in plugin manifest file
+		assertEquals(debug64Config.getToolChain().getVersion().toString(), "2.2.0");	//$NON-NLS-1$
+		
+		// Get the tools of this toolChain and verify the version of each tool
+		// Each tool version in debug64 configuration should be "5.0.9" (defined in plugin manifest file)
+		tools = debug64Config.getToolChain().getTools();
+		for (int i = 0; i < tools.length; i++) {
+			ITool tool = tools[i];
+			assertEquals(tool.getVersion().toString(),"5.0.9");	//$NON-NLS-1$
+		}
+		
+		// check the builder version , expected value : "3.2.1"  defined in plugin manifest file
+		builder = debug64Config.getToolChain().getBuilder();
+		assertEquals(builder.getVersion().toString(),"3.2.1");	//$NON-NLS-1$
+
+		return;
+	}
+
+	/*
+	 * This function tests whether the attribute 'versionsSupported' of
+	 * ToolChain/Tool/Builder elements is retrived from plugin manifest file correctly or not.
+	 */
+	
+	public void testVersionsSupportedAttribute() throws Exception {
+		// create managed project
+		String projectName = "TestVersionSupportAttribute";	//$NON-NLS-1$
+		String projectTypeId = "cdt.managedbuild.target.testMultipleVersions.exe";	//$NON-NLS-1$
+
+		doInit(projectName, projectTypeId);
+
+		// Check the configuration descriptions
+		cfgs = mproj.getConfigurations();
+		
+		// Check the version information of ToolChain/Tool/Builder defined under 'Release' Configuration.
+		
+		// It should return the version as '0.0.4' as there is no version information defined
+		// for ToolChain/Tool/Builder. The version '0.0.4' is the default version for CDT3.0
+		
+		// Release configuration 'id' : "cdt.managedbuild.config.testMultipleVersions.exe.release64.3"			
+		IConfiguration releaseConfig = mproj.getConfiguration("cdt.managedbuild.config.testMultipleVersions.exe.release64.3");	//$NON-NLS-1$
+
+		// Get the tool chain
+		IToolChain toolChain = releaseConfig.getToolChain();
+
+		//Get the 'versionsSupported' attribute of toolChain
+		String toolChainVersionsSupported = toolChain.getVersionsSupported();
+		
+		// Compare with the expected value "1.2.0,2.0.0,2.1.3"
+		assertEquals(toolChainVersionsSupported,"1.2.0,2.0.0,2.1.3");	//$NON-NLS-1$
+		
+		// Get the builder 
+		IBuilder builder = releaseConfig.getToolChain().getBuilder();
+		
+		// Get the 'versionsSupported' attribute of builder
+		String versionsSupported = builder.getVersionsSupported();
+		
+		// Compare with expected value "2.0.0,2.1.1,3.0.3"
+		assertEquals(versionsSupported,"2.0.0,2.1.1,3.0.3");	//$NON-NLS-1$
+
+	}
+	
+	static void createManagedProject(String name, String projectTypeId) {
+		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+		proj = root.getProject(name); 
+	
+		if (proj.exists()) {
+			mproj = ManagedBuildManager.getBuildInfo(proj).getManagedProject();
+		} else {
+			IWorkspace workspace = ResourcesPlugin.getWorkspace();
+			IWorkspaceDescription workspaceDesc = workspace.getDescription();
+			workspaceDesc.setAutoBuilding(false);
+			try {
+				workspace.setDescription(workspaceDesc);
+				proj = CCorePlugin.getDefault().createCProject(workspace.newProjectDescription(proj.getName()), 
+					proj, new NullProgressMonitor(), MakeCorePlugin.MAKE_PROJECT_ID);
+			
+				// 	add ManagedBuildNature
+				IManagedBuildInfo info = ManagedBuildManager.createBuildInfo(proj);
+				info.setValid(true);
+				ManagedCProjectNature.addManagedNature(proj, null);
+				ManagedCProjectNature.addManagedBuilder(proj, null);
+
+				ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(proj, true);
+				desc.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID);
+				desc.create(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID, ManagedBuildManager.INTERFACE_IDENTITY);
+				desc.saveProjectData();
+			} catch (CoreException e) {
+				fail("Cannot create project: " + e.getLocalizedMessage()); //$NON-NLS-1$
+			}				
+			// Call this function just to avoid init problems in getProjectType();   
+			IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
+			IProjectType projType = ManagedBuildManager.getProjectType(projectTypeId);
+			assertNotNull(projType);
+			try {
+				mproj = ManagedBuildManager.createManagedProject(proj, projType);
+			} catch (BuildException e) {}
+			ManagedBuildManager.setNewProjectVersion(proj);
+			IConfiguration[] cfgs = projType.getConfigurations();
+			
+			for (int i = 0; i < cfgs.length; i++) { // sic ! from 1
+				mproj.createConfiguration(cfgs[i], cfgs[i].getId() + "." + i); //$NON-NLS-1$
+			}
+			if( cfgs.length > 0)
+				ManagedBuildManager.setDefaultConfiguration(proj, cfgs[0]);
+			else
+				ManagedBuildManager.setDefaultConfiguration(proj, null);
+		}
+		// open project w/o progress monitor; no action performed if it's opened
+		try {
+			proj.open(null);
+		} catch (CoreException e) {}				
+	}
+
+	/*
+	 *  isArrayContains() 
+	 */
+	private boolean isArrayContains(String[] actualConfigNames, String name) {
+		if (actualConfigNames != null) {
+			for (int i = 0; i < actualConfigNames.length; i++) {
+				if ( ( actualConfigNames[i] != null) && (actualConfigNames[i].equals(name)) ) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+	
+	/**
+	 *  doInit() - call it at the beginning of every test
+	 *
+	 */
+	private void doInit(String projectName, String projectTypeId) {
+		createManagedProject(projectName, projectTypeId);
+		assertNotNull(proj);
+		assertNotNull(mproj);
+		worksp = proj.getWorkspace();
+		assertNotNull(worksp);
+		cfgs = mproj.getConfigurations();
+		assertNotNull(cfgs);		
+	}
+}
Index: tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java
===================================================================
RCS file: tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java
diff -N tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,35 @@
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.eclipse.cdt.managedbuilder.core.IBuildObject;
+import org.eclipse.cdt.managedbuilder.core.IConvertManagedBuildObject;
+
+public class ProjectConverter implements IConvertManagedBuildObject {
+
+	public IBuildObject convert(IBuildObject buildObj, String fromId,
+			String toId, boolean isConfirmed) {
+
+		String tmpDir = System.getProperty("java.io.tmpdir");
+		
+		File outputFile = new File(tmpDir + "/converterOutput.txt");
+		try {
+			FileWriter out = new FileWriter(outputFile);
+			out.write("---------- Start-------");
+			out.write("Converter for the build object : '" + buildObj.getName() + "' is invoked.");
+			out.write("From Id : " + fromId );
+			out.write("To Id : " + toId);
+			out.write("---------- End-------");
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+		//	e.printStackTrace();
+			System.out.println("Exception raised.");
+		}
+		
+	
+	return buildObj;
+	}
+
+}
Index: tests/org/eclipse/cdt/managedbuilder/core/tests/TestConfigurationNameProvider.java
===================================================================
RCS file: tests/org/eclipse/cdt/managedbuilder/core/tests/TestConfigurationNameProvider.java
diff -N tests/org/eclipse/cdt/managedbuilder/core/tests/TestConfigurationNameProvider.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/org/eclipse/cdt/managedbuilder/core/tests/TestConfigurationNameProvider.java	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,66 @@
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IConfigurationNameProvider;
+import org.eclipse.core.runtime.Platform;
+
+
+public class TestConfigurationNameProvider implements
+		IConfigurationNameProvider {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.cdt.managedbuilder.core.IConfigurationNameProvider#getNewConfigurationName(org.eclipse.cdt.managedbuilder.core.IConfiguration,
+	 *      java.lang.String[]) This function will generate a unique
+	 *      configuration name based on used names, current OS and current
+	 *      Architecture.
+	 * 
+	 */
+	private static int configNumber = 0;
+
+	public String getNewConfigurationName(IConfiguration configuration,
+			String[] usedConfigurationNames) {
+
+		String configName = configuration.getName();
+
+		// Get the current OS & architecture
+		String os = Platform.getOS();
+		String arch = Platform.getOSArch();
+
+		if (isArrayContains(usedConfigurationNames, configName) == false)
+			return configName;
+		else {
+			String[] supportedArchList = configuration.getToolChain()
+					.getArchList();
+			if (supportedArchList.length == 1) {
+				String newConfigName = configName + "_" + supportedArchList[0];
+				if (isArrayContains(usedConfigurationNames, newConfigName) == false) {
+					return newConfigName;
+				}
+			}
+
+			String[] supportedOsList = configuration.getToolChain().getOSList();
+			if (supportedOsList.length == 1) {
+				String newConfigName = configName + "_" + supportedOsList[0];
+				if (isArrayContains(usedConfigurationNames, newConfigName) == false) {
+					return newConfigName;
+				}
+			}
+			configNumber += 1;
+			return configName + "_" + configNumber;
+		}
+	}
+
+	private boolean isArrayContains(String[] usedNames, String name) {
+		if (usedNames != null) {
+			for (int i = 0; i < usedNames.length; i++) {
+				if ( ( usedNames[i] != null) && (usedNames[i].equals(name)) ) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+}
Index: src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java,v
retrieving revision 1.55
diff -u -r1.55 ManagedBuildManager.java
--- src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java	2 Sep 2005 19:03:33 -0000	1.55
+++ src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java	8 Sep 2005 20:58:43 -0000
@@ -2640,7 +2640,7 @@
 			if (element != null) {
 				// If there is a converter element for toolChain, invoke it
 				// toolChain converter should take care of invoking converters of it's children
-				if ( invokeConverter(toolChain, buildInfo, element) != true ) { 
+				if ( invokeConverter(toolChain, element) == null ) { 
 					buildInfo.getManagedProject().setValid(false);
 					return false;
 				}
@@ -2655,7 +2655,7 @@
 						element = ((Tool)tool).getPreviousMbsVersionConversionElement();
 					}
 					if (element != null) {
-						if ( invokeConverter(tool, buildInfo, element) != true ) {
+						if ( invokeConverter(tool, element) == null ) {
 							buildInfo.getManagedProject().setValid(false);
 							return false;
 						}
@@ -2670,7 +2670,7 @@
 					}
 	
 					if (element != null) {
-						if ( invokeConverter(builder, buildInfo, element) != true ) {
+						if ( invokeConverter(builder, element) == null ) {
 							buildInfo.getManagedProject().setValid(false);
 							return false;
 						}
@@ -2683,15 +2683,12 @@
 		return true;
 	}
 
-	private static boolean invokeConverter(IBuildObject buildObject,
-			IManagedBuildInfo buildInfo, IConfigurationElement element) {
-		String toId = null;
-		String fromId = null;
-		IConvertManagedBuildObject convertBuildObject = null;
+	private static IBuildObject invokeConverter(IBuildObject buildObject, IConfigurationElement element) {
 
 		if (element != null) {
-			toId = element.getAttribute("toId"); //$NON-NLS-1$
-			fromId = element.getAttribute("fromId"); //$NON-NLS-1$
+			IConvertManagedBuildObject convertBuildObject = null;
+			String toId = element.getAttribute("toId"); //$NON-NLS-1$
+			String fromId = element.getAttribute("fromId"); //$NON-NLS-1$
 
 			try {
 				convertBuildObject = (IConvertManagedBuildObject) element
@@ -2703,16 +2700,181 @@
 
 			if (convertBuildObject != null) {
 				// invoke the converter
-				if (convertBuildObject
-						.convert(buildObject, fromId, toId, false) != null) {
-					// If it is successful, return 'true'
-					return true;
-				}
+				return convertBuildObject.convert(buildObject, fromId, toId, false);
 			}
 		}
 		// if control comes here, it means that either 'convertBuildObject' is null or 
 		// converter did not convert the object successfully
-		return false;
+		return null;
 	}
 		
+	/*
+	 * Generic Converter function.
+	 * If the converter is available for the given Build Object, it calls the corresponding converter.
+	 * It returns null if there are no converters or if the conversion is not successful
+	 * It returns 'IBuildObject' if the conversion is successful.
+	 */
+
+	public static IBuildObject convert(IBuildObject buildObj, String toId,
+			boolean userhasConfirmed) {
+
+		String tmpToId = null;
+
+		// Get the Converter Extension Point
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint("org.eclipse.cdt.managedbuilder.core", //$NON-NLS-1$
+						"projectConverter"); //$NON-NLS-1$
+		if (extensionPoint != null) {
+			// Get the extensions
+			IExtension[] extensions = extensionPoint.getExtensions();
+			for (int i = 0; i < extensions.length; i++) {
+				// Get the configuration elements of each extension
+				IConfigurationElement[] configElements = extensions[i]
+						.getConfigurationElements();
+				for (int j = 0; j < configElements.length; j++) {
+
+					IConfigurationElement element = configElements[j];
+					if (element.getName().equals("converter") && (isBuildObjectApplicableForConversion(buildObj, element) == true)) { //$NON-NLS-1$
+						tmpToId = element.getAttribute("toId");	//$NON-NLS-1$
+						if (tmpToId.equals(toId)) {
+							return invokeConverter(buildObj, element);
+						}
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	/*
+	 * Generic routine for checking the availability of converters for the given
+	 * Build Object. 
+	 * @param IBuildObject, This function takes a 'IBuildObject' as an argument 
+	 * @return true if there are converters for the given Build Object
+	 * @return false if there are no converters
+	 */
+
+	public static boolean hasTargetConversionElements(IBuildObject buildObj) {
+
+		// Get the Converter Extension Point
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint("org.eclipse.cdt.managedbuilder.core", //$NON-NLS-1$
+						"projectConverter"); //$NON-NLS-1$
+		if (extensionPoint != null) {
+			// Get the extensions
+			IExtension[] extensions = extensionPoint.getExtensions();
+			for (int i = 0; i < extensions.length; i++) {
+				// Get the configuration elements of each extension
+				IConfigurationElement[] configElements = extensions[i]
+						.getConfigurationElements();
+				for (int j = 0; j < configElements.length; j++) {
+
+					IConfigurationElement element = configElements[j];
+					if (element.getName().equals("converter") && (isBuildObjectApplicableForConversion(buildObj, element) == true)) //$NON-NLS-1$
+						return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	/*
+	 * Generic function for getting the list of converters for the given Build Object
+	 */
+
+	public static Map getConversionElements(IBuildObject buildObj) {
+
+		Map conversionTargets = new HashMap();
+
+		// Get the Converter Extension Point
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint("org.eclipse.cdt.managedbuilder.core", //$NON-NLS-1$
+						"projectConverter"); //$NON-NLS-1$
+		if (extensionPoint != null) {
+			// Get the extensions
+			IExtension[] extensions = extensionPoint.getExtensions();
+			for (int i = 0; i < extensions.length; i++) {
+				// Get the configuration elements of each extension
+				IConfigurationElement[] configElements = extensions[i]
+						.getConfigurationElements();
+				for (int j = 0; j < configElements.length; j++) {
+					IConfigurationElement element = configElements[j];
+					if (element.getName().equals("converter") && (isBuildObjectApplicableForConversion(buildObj, element) == true)) { //$NON-NLS-1$
+						conversionTargets.put((String) element
+								.getAttribute("name"), element); //$NON-NLS-1$
+					}
+				}
+			}
+		}
+		return conversionTargets;
+	}
+
+	/*
+	 * Generic function that checks whether the given conversion element can be used to convert the given 
+	 * build object. It returns true if the given build object is convertable, otherwise it returns false.
+	 */
+
+	private static boolean isBuildObjectApplicableForConversion(
+			IBuildObject buildObj, IConfigurationElement element) {
+
+		String id = null;
+		String fromId = element.getAttribute("fromId"); //$NON-NLS-1$
+
+		// Check whether the current converter can be used for conversion
+
+		if (buildObj instanceof IProjectType) {
+			IProjectType projType = (IProjectType) buildObj;
+			
+			// Check whether the converter's 'fromId' and the
+			// given projType 'id' are equal			
+			while (projType != null) {
+				id = projType.getId();
+
+				if (fromId.equals(id)) {
+					return true;
+				}
+				projType = projType.getSuperClass();
+			}
+		} else if (buildObj instanceof IToolChain) {
+			IToolChain toolChain = (IToolChain) buildObj;
+			
+			// Check whether the converter's 'fromId' and the
+			// given toolChain 'id' are equal
+			while (toolChain != null) {
+				id = toolChain.getId();
+
+				if (fromId.equals(id)) {
+					return true;
+				}
+				toolChain = toolChain.getSuperClass();
+			}
+		} else if (buildObj instanceof ITool) {
+			ITool tool = (ITool) buildObj;
+			
+			// Check whether the converter's 'fromId' and the
+			// given tool 'id' are equal
+			while (tool != null) {
+				id = tool.getId();
+
+				if (fromId.equals(id)) {
+					return true;
+				}
+				tool = tool.getSuperClass();
+			}
+		} else if (buildObj instanceof IBuilder) {
+			IBuilder builder = (IBuilder) buildObj;
+			
+			// Check whether the converter's 'fromId' and the
+			// given builder 'id' are equal
+			while (builder != null) {
+				id = builder.getId();
+
+				if (fromId.equals(id)) {
+					return true;
+				}
+				builder = builder.getSuperClass();
+			}
+		}
+		return false;
+	}
 }

Back to the top