Versioning support
diff --git a/org.eclipse.epf.common.tests/src/org/eclipse/epf/common/tests/VersionUtilTest.java b/org.eclipse.epf.common.tests/src/org/eclipse/epf/common/tests/VersionUtilTest.java
index cf65107..5465e5d 100644
--- a/org.eclipse.epf.common.tests/src/org/eclipse/epf/common/tests/VersionUtilTest.java
+++ b/org.eclipse.epf.common.tests/src/org/eclipse/epf/common/tests/VersionUtilTest.java
@@ -1,6 +1,9 @@
 package org.eclipse.epf.common.tests;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.Iterator;
+import java.util.Map;
 import java.util.Set;
 
 import junit.framework.TestCase;
@@ -8,6 +11,7 @@
 import org.eclipse.epf.common.serviceability.EPFVersions;
 import org.eclipse.epf.common.serviceability.VersionUtil;
 import org.eclipse.epf.common.serviceability.Versions;
+import org.eclipse.epf.common.utils.FileUtil;
 
 public class VersionUtilTest extends TestCase {
 
@@ -31,5 +35,54 @@
 	public void testIsVersionCheckingEnabled() {
 		assertTrue(VersionUtil.isVersionCheckingEnabled());
 	}
+	
+	public void testReadVersionsFromXMIFile() {
+		// test no-versions-in-file case
+		File xmiFile = createTestXMIFile("");
+		if (xmiFile == null) {
+			fail();
+		}
+		Map versions = VersionUtil.readVersionsFromXMIFile(xmiFile);
+		assertNull(versions);
+//		xmiFile.delete();
+	
+		// test epf-only case
+		xmiFile = createTestXMIFile("epf:version=\"1.0.0\"");
+		if (xmiFile == null) {
+			fail();
+		}
+		versions = VersionUtil.readVersionsFromXMIFile(xmiFile);
+		String epfVer = (String)versions.get("epf");
+		assertTrue(epfVer.equals("1.0.0"));
+//		xmiFile.delete();
+	
+		// test multiple versions case
+		xmiFile = createTestXMIFile("epf:version=\"1.0.0\" rmc:version=\"7.1.0\"");
+		if (xmiFile == null) {
+			fail();
+		}
+		versions = VersionUtil.readVersionsFromXMIFile(xmiFile);
+		epfVer = (String)versions.get("epf");
+		String rmcVer = (String)versions.get("rmc");
+		assertTrue(epfVer.equals("1.0.0"));
+		assertTrue(rmcVer.equals("7.1.0"));
+//		xmiFile.delete();
+	}
+	
+	private File createTestXMIFile(String versionAttributes) {
+		try {
+			File xmiFile = File.createTempFile("EPF_JUNIT_", ".xmi");
+			String xmiText = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+			    "\n<xmi:XMI xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\"" +
+			    " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
+			    " xmlns:org.eclipse.epf.uma=\"http://www.eclipse.org/epf/uma/1.0.3/uma.ecore\"" + 
+			    " xmlns:org.eclipse.epf.uma.resourcemanager=\"http:///org/eclipse/epf/uma/resourcemanager.ecore\" " + 
+			    versionAttributes + ">\n...\n</xmi:XMI>\n";
+			FileUtil.writeUTF8File(xmiFile.getAbsolutePath(), xmiText);
+			return xmiFile;
+		} catch (IOException ex) {
+			return null;
+		}
+	}
 
 }