[319417] ClassCastExceptions during refactorying and Fixes for All Dependency Tests
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/EarLibDirContainerTests.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/EarLibDirContainerTests.java
index 82b3eae..3cc9efa 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/EarLibDirContainerTests.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/EarLibDirContainerTests.java
@@ -37,7 +37,8 @@
 	public void testEarLibDirDependency() throws Exception {
 		ResourcesPlugin.getWorkspace().getRoot().getProjects();
 		IProject earProject = ProjectUtil.createEARProject(EAR_PROJECT_NAME, J2EEVersionConstants.JEE_5_0_ID, false);
-		IProject utilProject = ProjectUtil.createUtilityProject(UTIL_PROJECT_NAME, EAR_PROJECT_NAME);
+		IProject utilProject = ProjectUtil.createUtilityProject(UTIL_PROJECT_NAME, null);
+		DependencyCreationUtil.createEARDependency(earProject, utilProject, false);
 		IProject libProject = ProjectUtil.createUtilityProject(LIB_PROJECT_NAME, null);
 		DependencyCreationUtil.createEARDependency(earProject, libProject, true);
 		updateEARLibrariesContainer(utilProject);
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyCreationUtil.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyCreationUtil.java
index e9a66d5..9425996 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyCreationUtil.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyCreationUtil.java
@@ -14,6 +14,7 @@
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.jar.Manifest;
 
 import org.eclipse.core.commands.ExecutionException;
@@ -57,6 +58,10 @@
 		dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, depList);
 		if (inLibDir) {
 			dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, J2EEConstants.EAR_DEFAULT_LIB_DIR); //$NON-NLS-1$
+		} else {
+			dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, J2EEConstants.EAR_ROOT_DIR); //$NON-NLS-1$
+			Map modDeployPathMap = (Map) dm.getProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH_MAP);
+			modDeployPathMap.put(childComp, J2EEConstants.EAR_ROOT_DIR);
 		}
 		dm.getDefaultOperation().execute(null, null);
         ProjectUtil.waitForClasspathUpdate();
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyVerificationUtil.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyVerificationUtil.java
index ef01f06..d6b7159 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyVerificationUtil.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/dependency/tests/util/DependencyVerificationUtil.java
@@ -31,6 +31,8 @@
 import org.eclipse.jst.j2ee.componentcore.util.EARArtifactEdit;
 import org.eclipse.jst.j2ee.internal.J2EEConstants;
 import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater;
+import org.eclipse.jst.j2ee.project.EarUtilities;
+import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.internal.builder.IDependencyGraph;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
@@ -230,7 +232,13 @@
 		// .project dep
 		verifyProjectReference(earProject, childProject, true);
 		// .component dep
-		verifyComponentReference(earProject, childProject, ROOT, true);
+		
+		IPath runtimePath = ROOT;
+		if(EarUtilities.isJEEComponent(ComponentCore.createComponent(earProject)) &&  JavaEEProjectUtilities.isUtilityProject(childProject)){
+			runtimePath = new Path("/lib");
+		}
+		
+		verifyComponentReference(earProject, childProject, runtimePath, true);
 		// application.xml ref
 		String moduleURI = null;
 		if (moduleRef) {
@@ -273,8 +281,9 @@
 		verifyManifestReference(source, target.getName() + ".jar", true); //$NON-NLS-1$
 		// verify classpath ref (will be via "EAR Libraries")
 		verifyClasspathReference(source, target, true);
-		// DependencyGraphManager
-		verifyDependency(source, target, true);
+		// DependencyGraphManager only tracks references defined by the .settings/org.eclipse.wst.common.component file
+		// References defined via manifests will not be mapped in the IDependencyGraph
+		//verifyDependency(source, target, true);
 	}
 	
 	public static void verifyModuleDependencyChanged(final IProject source, final IProject oldTarget, final IProject newTarget) throws CoreException, IOException {