Bug 316376
Intermittent test failure: test_newWsProjectSynched
diff --git a/tests/org.eclipse.jst.ws.jaxws.dom.runtime.tests/src/org/eclipse/jst/ws/jaxws/dom/runtime/tests/dom/persistence/ProjectAddingTests.java b/tests/org.eclipse.jst.ws.jaxws.dom.runtime.tests/src/org/eclipse/jst/ws/jaxws/dom/runtime/tests/dom/persistence/ProjectAddingTests.java
index 8f299f6..95f2265 100755
--- a/tests/org.eclipse.jst.ws.jaxws.dom.runtime.tests/src/org/eclipse/jst/ws/jaxws/dom/runtime/tests/dom/persistence/ProjectAddingTests.java
+++ b/tests/org.eclipse.jst.ws.jaxws.dom.runtime.tests/src/org/eclipse/jst/ws/jaxws/dom/runtime/tests/dom/persistence/ProjectAddingTests.java
@@ -11,6 +11,7 @@
 package org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence;

 

 import java.io.IOException;

+import java.text.MessageFormat;

 

 import junit.framework.TestCase;

 

@@ -22,8 +23,12 @@
 import org.eclipse.jdt.core.IType;

 import org.eclipse.jdt.core.JavaCore;

 import org.eclipse.jst.ws.jaxws.dom.runtime.DomUtil;

+import org.eclipse.jst.ws.jaxws.dom.runtime.api.IDOM;

 import org.eclipse.jst.ws.jaxws.dom.runtime.api.IWebServiceProject;

 import org.eclipse.jst.ws.jaxws.dom.runtime.persistence.JaxWsWorkspaceResource;

+import org.eclipse.jst.ws.jaxws.testutils.IWaitCondition;

+import org.eclipse.jst.ws.jaxws.testutils.assertions.Assertions;

+import org.eclipse.jst.ws.jaxws.testutils.assertions.ConditionCheckException;

 import org.eclipse.jst.ws.jaxws.testutils.project.TestEjb3Project;

 import org.eclipse.jst.ws.jaxws.testutils.project.TestProject;

 import org.eclipse.ui.PlatformUI;

@@ -53,18 +58,17 @@
 		target.stopSynchronizing();

 	}

 	

-	//FIXME Bug #316376 Unit test failing intermittently

-//	public void test_newWsProjectSynched() throws Exception

-//	{

-//		testPrj3 = new TestProject(new TestEjb3Project("TestEJBProject3").getProject());

-//		final IWebServiceProject wsPrj3 = util.findProjectByName(target.getDOM(), testPrj3.getProject().getName());

-//		assertNotNull("Newly added project not in dom",wsPrj3);

-//	}

+	public void test_newWsProjectSynched() throws Exception

+	{

+		testPrj3 = new TestProject(new TestEjb3Project("TestEJBProject3").getProject());

+		final IWebServiceProject wsPrj3 = findProjectByName(target.getDOM(), testPrj3.getProject().getName(), true);

+		assertNotNull("Newly added project not in dom",wsPrj3);

+	}

 	

 	public void test_newNonWsProjectNotAdded() throws Exception

 	{

 		testPrj3 = new TestProject("TestProject3");

-		final IWebServiceProject wsPrj3 = util.findProjectByName(target.getDOM(), testPrj3.getProject().getName());

+		final IWebServiceProject wsPrj3 = findProjectByName(target.getDOM(), testPrj3.getProject().getName(), false);

 		assertNull("Newly added project in dom",wsPrj3);

 	}

 	

@@ -84,7 +88,23 @@
 		testPrj3 = new TestProject("TestEJBProject3");

 		testPrj3.getProject().close(null);

 		testPrj3.getProject().open(null);

-		final IWebServiceProject wsPrj3 = util.findProjectByName(target.getDOM(), testPrj3.getProject().getName());

+		final IWebServiceProject wsPrj3 = findProjectByName(target.getDOM(), testPrj3.getProject().getName(), false);

 		assertNull("Newly added project not in dom",wsPrj3);

 	}

+	

+	private IWebServiceProject findProjectByName(final IDOM dom, final String projectName, final boolean expectToFindIt)

+	{

+		final IWebServiceProject[] result = new IWebServiceProject[1];

+		Assertions.waitAssert(new IWaitCondition()

+		{

+

+			public boolean checkCondition() throws ConditionCheckException

+			{

+				result[0] = util.findProjectByName(dom, projectName);

+				return expectToFindIt == (result[0] != null);

+			}

+		}, MessageFormat.format("Project {0} not found in DOM", projectName));

+

+		return result[0];

+	}

 }